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