using FluentValidation; using PARR.API.Contracts.V1.Requests; using PARR.DAL.Contracts; namespace PARR.API.Validators { public class JobAutoControlRequestValidator : AbstractValidator { public JobAutoControlRequestValidator() { RuleFor(t => t.EkMasks).Must(items => items.Count(t => t.Trim().Length > 0) > 0 ).WithMessage("Должна быть указана хотя бы одна маска ЭК"); RuleFor(t => t.EnabledEkStatuses).Must( items => items.Distinct().Count() == items.Count() ).WithMessage("Статусы ЭК не должны повторяться"); RuleFor(t => t.EnabledEkStatuses).Must(items => { return !items.Any(item => !Enum.IsDefined(typeof(EkStatusEnum), item)) && !items.Any(t => t == 0); }) .WithMessage($"Допустимые значения: {(int)EkStatusEnum.New} ({EkStatusEnum.New}), " + $"{(int)EkStatusEnum.Preapre} ({EkStatusEnum.Preapre}), " + $"{(int)EkStatusEnum.Exploitation} ({EkStatusEnum.Exploitation}), " + $"{(int)EkStatusEnum.Repair} ({EkStatusEnum.Repair}), " + $"{(int)EkStatusEnum.Reserve} ({EkStatusEnum.Reserve}), " + $"{(int)EkStatusEnum.OutOfService} ({EkStatusEnum.OutOfService}), " + $"{(int)EkStatusEnum.Test} ({EkStatusEnum.Test}), " + $"{(int)EkStatusEnum.Development} ({EkStatusEnum.Development})"); } } }