Files
parr_api/PARR.API/Validators/TnkRequestValidator.cs

41 lines
1.3 KiB
C#

using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.DAL.Services.Interfaces;
namespace PARR.API.Validators
{
public class TnkRequestValidator : AbstractValidator<TnkRequest>
{
private readonly ISubprocessService subprocessService;
private bool? isValid = null;
public TnkRequestValidator(
ISubprocessService subprocessService
)
{
this.subprocessService = subprocessService;
RuleFor(t => t.Name).NotEmpty().NotNull();
//RuleFor(t => t.EsppId).NotEmpty().NotNull().WithMessage("EsppId не может быть пустым");
RuleFor(t => t.SubprocessId).NotEmpty().NotNull();
RuleFor(t => t.SubprocessId)
.MustAsync(async (entity, value, c) => await IsSubprocessExist(entity))
.WithMessage("Указан несуществующий Id подпроцесса");
}
private async Task<bool> IsSubprocessExist(TnkRequest request)
{
//чтобы не делать 2 раза валидацию
if (isValid.HasValue)
return isValid.Value;
isValid = await subprocessService.GetAsync(request.SubprocessId) != null;
return isValid.Value;
}
}
}