Fixed validation
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user