Fixed validation

This commit is contained in:
2024-08-26 11:25:16 +03:00
parent 00aa3ab6af
commit d009181b91
3 changed files with 15 additions and 16 deletions

View File

@@ -16,19 +16,12 @@ namespace ApplicationLayer.Services.VisaApplications.Requests.Validation
IApplicantsRepository applicants, IApplicantsRepository applicants,
IUserIdProvider userIdProvider) IUserIdProvider userIdProvider)
{ {
//todo fix RuleFor(r => r.ReentryPermit)
WhenAsync( .NotEmpty()
async (_, ct) => .WithMessage("Non-residents must provide re-entry permission")
{ .SetValidator(reentryPermitValidator)
return await applicants.IsApplicantNonResidentByUserId(userIdProvider.GetUserId(), ct); .WhenAsync(async (r, ct) =>
}, await applicants.IsApplicantNonResidentByUserId(userIdProvider.GetUserId(), ct));
() =>
{
RuleFor(r => r.ReentryPermit)
.NotEmpty()
.WithMessage("Non-residents must provide re-entry permission")
.SetValidator(reentryPermitValidator);
});
RuleFor(r => r.DestinationCountry) RuleFor(r => r.DestinationCountry)
.NotEmpty() .NotEmpty()
@@ -41,8 +34,6 @@ namespace ApplicationLayer.Services.VisaApplications.Requests.Validation
.IsInEnum(); .IsInEnum();
RuleFor(r => r.ValidDaysRequested) RuleFor(r => r.ValidDaysRequested)
.NotEmpty()
.WithMessage("Valid days requested can not be empty")
.GreaterThan(0) .GreaterThan(0)
.WithMessage($"Valid days requested should be positive number and less than {ConfigurationConstraints.MaxValidDays}") .WithMessage($"Valid days requested should be positive number and less than {ConfigurationConstraints.MaxValidDays}")
.LessThanOrEqualTo(ConfigurationConstraints.MaxValidDays) .LessThanOrEqualTo(ConfigurationConstraints.MaxValidDays)

View File

@@ -26,6 +26,7 @@ namespace SchengenVisaApi.Controllers
[HttpPost] [HttpPost]
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status409Conflict)] [ProducesResponseType(StatusCodes.Status409Conflict)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[Route("register")] [Route("register")]
public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken)
{ {
@@ -42,6 +43,7 @@ namespace SchengenVisaApi.Controllers
[ProducesResponseType(StatusCodes.Status409Conflict)] [ProducesResponseType(StatusCodes.Status409Conflict)]
[ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(StatusCodes.Status403Forbidden)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[Route("authorities")] [Route("authorities")]
[Authorize(policy: PolicyConstants.AdminPolicy)] [Authorize(policy: PolicyConstants.AdminPolicy)]
public async Task<IActionResult> RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken) public async Task<IActionResult> RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken)
@@ -84,6 +86,7 @@ namespace SchengenVisaApi.Controllers
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(StatusCodes.Status403Forbidden)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[Route("authorities/{authorityAccountId:guid}")] [Route("authorities/{authorityAccountId:guid}")]
[Authorize(policy: PolicyConstants.AdminPolicy)] [Authorize(policy: PolicyConstants.AdminPolicy)]
public async Task<IActionResult> ChangeAuthorityAuthData(Guid authorityAccountId, AuthData authData, CancellationToken cancellationToken) public async Task<IActionResult> ChangeAuthorityAuthData(Guid authorityAccountId, AuthData authData, CancellationToken cancellationToken)

View File

@@ -2,6 +2,7 @@ using ApplicationLayer.InfrastructureServicesInterfaces;
using ApplicationLayer.Services.VisaApplications.Handlers; using ApplicationLayer.Services.VisaApplications.Handlers;
using ApplicationLayer.Services.VisaApplications.Models; using ApplicationLayer.Services.VisaApplications.Models;
using ApplicationLayer.Services.VisaApplications.Requests; using ApplicationLayer.Services.VisaApplications.Requests;
using FluentValidation;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using SchengenVisaApi.Common; using SchengenVisaApi.Common;
@@ -13,7 +14,8 @@ namespace SchengenVisaApi.Controllers;
[Route("visaApplications")] [Route("visaApplications")]
public class VisaApplicationController( public class VisaApplicationController(
IVisaApplicationRequestsHandler visaApplicationRequestsHandler, IVisaApplicationRequestsHandler visaApplicationRequestsHandler,
IUserIdProvider userIdProvider) : ControllerBase IUserIdProvider userIdProvider,
IValidator<VisaApplicationCreateRequest> visaApplicationCreateRequestValidator) : ControllerBase
{ {
/// <summary> Returns all applications from DB </summary> /// <summary> Returns all applications from DB </summary>
/// <remarks> Accessible only for approving authorities </remarks> /// <remarks> Accessible only for approving authorities </remarks>
@@ -51,9 +53,12 @@ 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> Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken) public async Task<IActionResult> Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken)
{ {
await visaApplicationCreateRequestValidator.ValidateAndThrowAsync(request, cancellationToken);
var userId = userIdProvider.GetUserId(); var userId = userIdProvider.GetUserId();
await visaApplicationRequestsHandler.HandleCreateRequestAsync(userId, request, cancellationToken); await visaApplicationRequestsHandler.HandleCreateRequestAsync(userId, request, cancellationToken);
return Ok(); return Ok();