CreteRoleRequestValidator.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using FluentValidation;
  2. using WebApp.Common.Resources;
  3. using WebApp.Models.Request.Roles;
  4. namespace WebApp.Models.Validators;
  5. public class CreteRoleRequestValidator : AbstractValidator<CreateRoleRequestModel>
  6. {
  7. public CreteRoleRequestValidator()
  8. {
  9. RuleFor(x => x.Name)
  10. .NotEmpty()
  11. .WithMessage(Messages.EmptyRequiredField);
  12. RuleFor(x => x.Name)
  13. .Length(5, 25)
  14. .WithMessage(Messages.InvalidLengthRange);
  15. RuleFor(x => x.DescriptionEn)
  16. .NotEmpty()
  17. .WithMessage(Messages.EmptyRequiredField);
  18. RuleFor(x => x.DescriptionEn)
  19. .Length(10, 200)
  20. .WithMessage(Messages.InvalidLengthRange);
  21. RuleFor(x => x.DescriptionBg)
  22. .NotEmpty()
  23. .WithMessage(Messages.EmptyRequiredField);
  24. RuleFor(x => x.DescriptionBg)
  25. .Length(10, 200)
  26. .WithMessage(Messages.InvalidLengthRange);
  27. }
  28. public Func<object, string, Task<IEnumerable<string>>> ValidateValue => async (model, propertyName) =>
  29. {
  30. var result = await ValidateAsync(ValidationContext<CreateRoleRequestModel>.CreateWithOptions((CreateRoleRequestModel)model, x => x.IncludeProperties(propertyName)));
  31. if (result.IsValid)
  32. return Array.Empty<string>();
  33. return result.Errors.Select(e => e.ErrorMessage);
  34. };
  35. }