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