action for process applications for authorities
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
using ApplicationLayer.GeneralExceptions;
|
||||
|
||||
namespace ApplicationLayer.Services.VisaApplications.Exceptions
|
||||
{
|
||||
public class ApplicationAlreadyProcessedException() : ApiException("This application already processed or closed by applicant.");
|
||||
}
|
||||
@@ -12,8 +12,10 @@ public interface IVisaApplicationRequestsHandler
|
||||
Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(Guid userId, CancellationToken cancellationToken);
|
||||
|
||||
/// Creates application for applicant with specific user identifier
|
||||
Task HandleCreateRequest(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken);
|
||||
Task HandleCreateRequestAsync(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken);
|
||||
|
||||
/// Sets application status to closed
|
||||
Task HandleCloseRequest(Guid userId, Guid applicationId, CancellationToken cancellationToken);
|
||||
Task HandleCloseRequestAsync(Guid userId, Guid applicationId, CancellationToken cancellationToken);
|
||||
|
||||
Task SetApplicationStatusFromAuthorityAsync(Guid applicationId, AuthorityRequestStatuses status, CancellationToken cancellationToken);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using ApplicationLayer.InfrastructureServicesInterfaces;
|
||||
using ApplicationLayer.Services.Applicants.Models;
|
||||
using ApplicationLayer.Services.Applicants.NeededServices;
|
||||
using ApplicationLayer.Services.VisaApplications.Exceptions;
|
||||
using ApplicationLayer.Services.VisaApplications.Models;
|
||||
using ApplicationLayer.Services.VisaApplications.NeededServices;
|
||||
using ApplicationLayer.Services.VisaApplications.Requests;
|
||||
@@ -87,7 +88,7 @@ public class VisaApplicationRequestsHandler(
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public async Task HandleCreateRequest(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken)
|
||||
public async Task HandleCreateRequestAsync(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
//TODO mapper
|
||||
|
||||
@@ -114,7 +115,7 @@ public class VisaApplicationRequestsHandler(
|
||||
await unitOfWork.SaveAsync(cancellationToken);
|
||||
}
|
||||
|
||||
async Task IVisaApplicationRequestsHandler.HandleCloseRequest(Guid userId, Guid applicationId, CancellationToken cancellationToken)
|
||||
async Task IVisaApplicationRequestsHandler.HandleCloseRequestAsync(Guid userId, Guid applicationId, CancellationToken cancellationToken)
|
||||
{
|
||||
var applicantId = await applicants.GetApplicantIdByUserId(userId, cancellationToken);
|
||||
var application = await applications.GetByApplicantAndApplicationIdAsync(applicantId, applicationId, cancellationToken);
|
||||
@@ -124,4 +125,30 @@ public class VisaApplicationRequestsHandler(
|
||||
|
||||
await unitOfWork.SaveAsync(cancellationToken);
|
||||
}
|
||||
|
||||
async Task IVisaApplicationRequestsHandler.SetApplicationStatusFromAuthorityAsync(
|
||||
Guid applicationId,
|
||||
AuthorityRequestStatuses status,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var application = await applications.GetByIdAsync(applicationId, cancellationToken);
|
||||
if (application.Status != ApplicationStatus.Pending)
|
||||
{
|
||||
//todo refactor exceptions
|
||||
throw new ApplicationAlreadyProcessedException();
|
||||
}
|
||||
|
||||
//todo mapper
|
||||
ApplicationStatus statusToSet = status switch
|
||||
{
|
||||
AuthorityRequestStatuses.Approved => ApplicationStatus.Approved,
|
||||
AuthorityRequestStatuses.Rejected => ApplicationStatus.Rejected,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(status), status, null)
|
||||
};
|
||||
|
||||
application.Status = statusToSet;
|
||||
await applications.UpdateAsync(application, cancellationToken);
|
||||
|
||||
await unitOfWork.SaveAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace ApplicationLayer.Services.VisaApplications.Models
|
||||
{
|
||||
public enum AuthorityRequestStatuses
|
||||
{
|
||||
Approved,
|
||||
Rejected
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user