WebApi + ClientApp, GraphQL, Reflection
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
using Events.WebAPI.Contract.Command;
|
||||
using Events.WebAPI.Contract.DTOs;
|
||||
using Events.WebAPI.Contract.Validation;
|
||||
using FluentValidation;
|
||||
using MediatR;
|
||||
|
||||
namespace Events.WebAPI.Contract.Validation.Person;
|
||||
|
||||
public class AddPersonValidator : AbstractValidator<AddCommand<PersonDTO, int>>
|
||||
{
|
||||
public AddPersonValidator(IMediator mediator, IValidationMessageProvider validationMessageProvider)
|
||||
{
|
||||
var uniqueIndexValidator = new UniqueIndexValidator<PersonDTO, int>(
|
||||
mediator,
|
||||
(_, _) => validationMessageProvider.UniquePersonDocumentAndCountry(),
|
||||
t => t.DocumentNumber,
|
||||
t => t.CountryCode);
|
||||
|
||||
RuleFor(a => a.Dto.FirstName).NotEmpty().MaximumLength(100);
|
||||
RuleFor(a => a.Dto.LastName).NotEmpty().MaximumLength(100);
|
||||
RuleFor(a => a.Dto.FirstNameTranscription).NotEmpty().MaximumLength(100);
|
||||
RuleFor(a => a.Dto.LastNameTranscription).NotEmpty().MaximumLength(100);
|
||||
RuleFor(a => a.Dto.AddressLine).NotEmpty().MaximumLength(200);
|
||||
RuleFor(a => a.Dto.PostalCode).NotEmpty().MaximumLength(20);
|
||||
RuleFor(a => a.Dto.City).NotEmpty().MaximumLength(100);
|
||||
RuleFor(a => a.Dto.AddressCountry).NotEmpty().MaximumLength(100);
|
||||
When(a => !string.IsNullOrWhiteSpace(a.Dto.Email), () =>
|
||||
{
|
||||
RuleFor(a => a.Dto.Email).MaximumLength(255).EmailAddress();
|
||||
});
|
||||
RuleFor(a => a.Dto.ContactPhone).MaximumLength(50);
|
||||
RuleFor(a => a.Dto.BirthDate).NotEmpty();
|
||||
RuleFor(a => a.Dto.DocumentNumber).NotEmpty().MaximumLength(50);
|
||||
RuleFor(a => a.Dto.CountryCode).NotEmpty().MaximumLength(3);
|
||||
ValidationMessage emailOrContactPhoneRequired = validationMessageProvider.PersonEmailOrContactPhoneRequired();
|
||||
RuleFor(a => a.Dto)
|
||||
.Must(dto => !string.IsNullOrWhiteSpace(dto.Email) || !string.IsNullOrWhiteSpace(dto.ContactPhone))
|
||||
.WithMessage(emailOrContactPhoneRequired.Message)
|
||||
.WithErrorCode(emailOrContactPhoneRequired.Code);
|
||||
|
||||
RuleFor(a => a.Dto).CustomAsync(uniqueIndexValidator.Validate);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user