http-api/src/Application/Routes/Commands/AddRoute/AddRouteCommandValidator.cs

46 lines
1.6 KiB
C#

using cuqmbr.TravelGuide.Application.Common.Interfaces.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using FluentValidation;
using Microsoft.Extensions.Localization;
namespace cuqmbr.TravelGuide.Application.Routes.Commands.AddRoute;
public class AddRouteCommandValidator : AbstractValidator<AddRouteCommand>
{
public AddRouteCommandValidator(
IStringLocalizer localizer,
SessionCultureService cultureService)
{
RuleFor(v => v.Name)
.NotEmpty()
.WithMessage(localizer["FluentValidation.NotEmpty"])
.MaximumLength(64)
.WithMessage(
String.Format(
cultureService.Culture,
localizer["FluentValidation.MaximumLength"],
64));
RuleFor(v => v.VehicleType)
.Must((v, vt) => VehicleType.Enumerations.ContainsValue(vt))
.WithMessage(
String.Format(
localizer["FluentValidation.MustBeInEnum"],
String.Join(
", ",
VehicleType.Enumerations.Values.Select(e => e.Name))));
RuleFor(v => v.Addresses.Count)
.GreaterThanOrEqualTo(2)
.WithMessage(
String.Format(
cultureService.Culture,
localizer["FluentValidation.GreaterThanOrEqualTo"],
2));
RuleFor(v => v.Addresses)
.Must((v, a) => a.DistinctBy(e => e.Order).Count() == a.Count())
.WithMessage(localizer["Validation.DistinctOrder"]);
}
}