using FluentValidation; using Tnsu.ApprovalRoute.Domain.Enums; namespace Tnsu.ApprovalRoute.Application.TemplateRoutes; public sealed class CreateTemplateRouteRequestValidator : AbstractValidator { public CreateTemplateRouteRequestValidator() { RuleFor(x => x.CompanyId).NotEqual(Guid.Empty).WithMessage("Компания обязательна."); } } public sealed class UpdateTemplateRouteRequestValidator : AbstractValidator { public UpdateTemplateRouteRequestValidator() { RuleFor(x => x.CompanyId).NotEqual(Guid.Empty).WithMessage("Компания обязательна."); } } public sealed class PatchTemplateRouteRequestValidator : AbstractValidator { public PatchTemplateRouteRequestValidator() { When(x => x.CompanyId is not null, () => RuleFor(x => x.CompanyId!.Value).NotEqual(Guid.Empty).WithMessage("Компания обязательна.")); } } public sealed class ResolveTemplateRouteRequestValidator : AbstractValidator { public ResolveTemplateRouteRequestValidator() { RuleFor(x => x.Status).NotEqual(RouteStepStatus.None).WithMessage("Статус обязателен: Approval или Execution."); RuleForEach(x => x.FieldValues).ChildRules(v => { v.RuleFor(f => f.FieldName).NotEmpty().WithMessage("Имя поля обязательно."); v.RuleFor(f => f.Value).NotEmpty().WithMessage("Значение поля обязательно."); }); } }