Fixed errors and wrong model
This commit is contained in:
		| @@ -53,6 +53,10 @@ public class VisaApplicationRequestsHandler( | |||||||
|     { |     { | ||||||
|         var applicantId = await applicants.GetApplicantIdByUserId(userIdProvider.GetUserId(), cancellationToken); |         var applicantId = await applicants.GetApplicantIdByUserId(userIdProvider.GetUserId(), cancellationToken); | ||||||
|         var application = await applications.GetByApplicantAndApplicationIdAsync(applicantId, applicationId, cancellationToken); |         var application = await applications.GetByApplicantAndApplicationIdAsync(applicantId, applicationId, cancellationToken); | ||||||
|  |         if (application.Status is ApplicationStatus.Approved or ApplicationStatus.Rejected) | ||||||
|  |         { | ||||||
|  |             throw new ApplicationAlreadyProcessedException(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         application.Status = ApplicationStatus.Closed; |         application.Status = ApplicationStatus.Closed; | ||||||
|         await applications.UpdateAsync(application, cancellationToken); |         await applications.UpdateAsync(application, cancellationToken); | ||||||
|   | |||||||
| @@ -17,6 +17,12 @@ public class VisaApplicationCreateRequestValidator : AbstractValidator<VisaAppli | |||||||
|         IApplicantsRepository applicants, |         IApplicantsRepository applicants, | ||||||
|         IUserIdProvider userIdProvider) |         IUserIdProvider userIdProvider) | ||||||
|     { |     { | ||||||
|  |         RuleFor(r => r.PermissionToDestCountry) | ||||||
|  |             .NotEmpty() | ||||||
|  |             .WithMessage("For transit you must provide permission to destination country") | ||||||
|  |             .SetValidator(permissionToDestCountryModelValidator) | ||||||
|  |             .When(r => r.VisaCategory is VisaCategory.Transit); | ||||||
|  |  | ||||||
|         RuleFor(r => r.ReentryPermit) |         RuleFor(r => r.ReentryPermit) | ||||||
|             .NotEmpty() |             .NotEmpty() | ||||||
|             .WithMessage("Non-residents must provide re-entry permission") |             .WithMessage("Non-residents must provide re-entry permission") | ||||||
| @@ -43,11 +49,6 @@ public class VisaApplicationCreateRequestValidator : AbstractValidator<VisaAppli | |||||||
|         RuleForEach(r => r.PastVisas) |         RuleForEach(r => r.PastVisas) | ||||||
|             .SetValidator(pastVisaModelValidator); |             .SetValidator(pastVisaModelValidator); | ||||||
|  |  | ||||||
|         When(r => r.VisaCategory == VisaCategory.Transit, |  | ||||||
|             () => |  | ||||||
|                 RuleFor(r => r.PermissionToDestCountry) |  | ||||||
|                     .SetValidator(permissionToDestCountryModelValidator)); |  | ||||||
|  |  | ||||||
|         RuleForEach(r => r.PastVisits) |         RuleForEach(r => r.PastVisits) | ||||||
|             .SetValidator(pastVisitModelValidator); |             .SetValidator(pastVisitModelValidator); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -8,8 +8,6 @@ namespace ApplicationLayer.Services.VisaApplications.Requests; | |||||||
| /// Model of visa request from user | /// Model of visa request from user | ||||||
| public class VisaApplicationCreateRequest | public class VisaApplicationCreateRequest | ||||||
| { | { | ||||||
|  |  | ||||||
|     [Required] |  | ||||||
|     public ReentryPermitModel? ReentryPermit { get; set; } |     public ReentryPermitModel? ReentryPermit { get; set; } | ||||||
|  |  | ||||||
|     [Required] |     [Required] | ||||||
| @@ -32,8 +30,6 @@ public class VisaApplicationCreateRequest | |||||||
|     [Required] |     [Required] | ||||||
|     public PastVisaModel[] PastVisas { get; set; } = null!; |     public PastVisaModel[] PastVisas { get; set; } = null!; | ||||||
|  |  | ||||||
|     //todo remove attribute |  | ||||||
|     [Required] |  | ||||||
|     public PermissionToDestCountryModel? PermissionToDestCountry { get; set; } |     public PermissionToDestCountryModel? PermissionToDestCountry { get; set; } | ||||||
|  |  | ||||||
|     [Required] |     [Required] | ||||||
|   | |||||||
| @@ -26,7 +26,6 @@ public class UsersController( | |||||||
|     /// <summary> Adds applicant with user account </summary> |     /// <summary> Adds applicant with user account </summary> | ||||||
|     [HttpPost("register")] |     [HttpPost("register")] | ||||||
|     [ProducesResponseType(StatusCodes.Status200OK)] |     [ProducesResponseType(StatusCodes.Status200OK)] | ||||||
|     [ProducesResponseType(StatusCodes.Status409Conflict)] |  | ||||||
|     [ProducesResponseType(StatusCodes.Status400BadRequest)] |     [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||||
|     public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) |     public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
| @@ -40,7 +39,6 @@ public class UsersController( | |||||||
|     ///<remarks> Accessible only for admins </remarks> |     ///<remarks> Accessible only for admins </remarks> | ||||||
|     [HttpPost("authorities")] |     [HttpPost("authorities")] | ||||||
|     [ProducesResponseType(StatusCodes.Status200OK)] |     [ProducesResponseType(StatusCodes.Status200OK)] | ||||||
|     [ProducesResponseType(StatusCodes.Status409Conflict)] |  | ||||||
|     [ProducesResponseType(StatusCodes.Status403Forbidden)] |     [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||||
|     [ProducesResponseType(StatusCodes.Status401Unauthorized)] |     [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||||
|     [ProducesResponseType(StatusCodes.Status400BadRequest)] |     [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||||
|   | |||||||
| @@ -66,6 +66,7 @@ public class VisaApplicationController( | |||||||
|     [ProducesResponseType(StatusCodes.Status403Forbidden)] |     [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||||
|     [ProducesResponseType(StatusCodes.Status401Unauthorized)] |     [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||||
|     [ProducesResponseType(StatusCodes.Status404NotFound)] |     [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||||
|  |     [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||||
|     [Authorize(policy: PolicyConstants.ApplicantPolicy)] |     [Authorize(policy: PolicyConstants.ApplicantPolicy)] | ||||||
|     public async Task<IActionResult> CloseApplication(Guid applicationId, CancellationToken cancellationToken) |     public async Task<IActionResult> CloseApplication(Guid applicationId, CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -131,16 +131,6 @@ namespace VisaApiClient | |||||||
|                             return; |                             return; | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                         if (status_ == 409) |  | ||||||
|                         { |  | ||||||
|                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); |  | ||||||
|                             if (objectResponse_.Object == null) |  | ||||||
|                             { |  | ||||||
|                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |  | ||||||
|                             } |  | ||||||
|                             throw new ApiException<ProblemDetails>("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |  | ||||||
|                         } |  | ||||||
|                         else |  | ||||||
|                         if (status_ == 400) |                         if (status_ == 400) | ||||||
|                         { |                         { | ||||||
|                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); |                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); | ||||||
| @@ -239,16 +229,6 @@ namespace VisaApiClient | |||||||
|                             return; |                             return; | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                         if (status_ == 409) |  | ||||||
|                         { |  | ||||||
|                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); |  | ||||||
|                             if (objectResponse_.Object == null) |  | ||||||
|                             { |  | ||||||
|                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); |  | ||||||
|                             } |  | ||||||
|                             throw new ApiException<ProblemDetails>("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |  | ||||||
|                         } |  | ||||||
|                         else |  | ||||||
|                         if (status_ == 403) |                         if (status_ == 403) | ||||||
|                         { |                         { | ||||||
|                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); |                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); | ||||||
| @@ -1220,6 +1200,16 @@ namespace VisaApiClient | |||||||
|                             throw new ApiException<ProblemDetails>("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); |                             throw new ApiException<ProblemDetails>("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|  |                         if (status_ == 400) | ||||||
|  |                         { | ||||||
|  |                             var objectResponse_ = await ReadObjectResponseAsync<ProblemDetails>(response_, headers_, cancellationToken).ConfigureAwait(false); | ||||||
|  |                             if (objectResponse_.Object == null) | ||||||
|  |                             { | ||||||
|  |                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); | ||||||
|  |                             } | ||||||
|  |                             throw new ApiException<ProblemDetails>("Bad Request", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); | ||||||
|  |                         } | ||||||
|  |                         else | ||||||
|                         { |                         { | ||||||
|                             var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); |                             var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); | ||||||
|                             throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); |                             throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); | ||||||
| @@ -1938,9 +1928,8 @@ namespace VisaApiClient | |||||||
|         [System.ComponentModel.DataAnnotations.Required] |         [System.ComponentModel.DataAnnotations.Required] | ||||||
|         public System.Collections.Generic.ICollection<PastVisaModel> PastVisas { get; set; } = new System.Collections.ObjectModel.Collection<PastVisaModel>(); |         public System.Collections.Generic.ICollection<PastVisaModel> PastVisas { get; set; } = new System.Collections.ObjectModel.Collection<PastVisaModel>(); | ||||||
|  |  | ||||||
|         [Newtonsoft.Json.JsonProperty("permissionToDestCountry", Required = Newtonsoft.Json.Required.Always)] |         [Newtonsoft.Json.JsonProperty("permissionToDestCountry", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] | ||||||
|         [System.ComponentModel.DataAnnotations.Required] |         public PermissionToDestCountryModel PermissionToDestCountry { get; set; } = default!; | ||||||
|         public PermissionToDestCountryModel PermissionToDestCountry { get; set; } = new PermissionToDestCountryModel(); |  | ||||||
|  |  | ||||||
|         [Newtonsoft.Json.JsonProperty("pastVisits", Required = Newtonsoft.Json.Required.Always)] |         [Newtonsoft.Json.JsonProperty("pastVisits", Required = Newtonsoft.Json.Required.Always)] | ||||||
|         [System.ComponentModel.DataAnnotations.Required] |         [System.ComponentModel.DataAnnotations.Required] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user