Files
TP-Fluent/BookHive/Validators/Books/CreateBookDtoValidator.cs

46 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BookHive.DTO.Book;
using FastEndpoints;
using FluentValidation;
namespace BookHive.Validators.Books;
public class CreateBookDtoValidator : Validator<CreateBookDto>
{
public CreateBookDtoValidator()
{
RuleFor(x => x.Title)
.NotEmpty().WithMessage("Le titre est obligatoire.")
.MaximumLength(200)
.WithMessage("Le titre ne peut pas dépasser 200 caractères.");
RuleFor(x => x.Isbn)
.NotEmpty().WithMessage("LISBN est obligatoire.")
.Matches(@"^\d{13}$")
.WithMessage("LISBN doit contenir exactement 13 chiffres.");
RuleFor(x => x.PageCount)
.GreaterThan(0)
.WithMessage("Le nombre de pages doit être supérieur à 0.");
RuleFor(x => x.PublishedDate)
.NotEmpty().WithMessage("La date de publication est obligatoire.")
.Must(d => d <= DateOnly.FromDateTime(DateTime.Now))
.WithMessage("La date de publication ne peut pas être dans le futur.");
RuleFor(x => x.Genre)
.NotEmpty()
.WithMessage("Le genre est obligatoire.")
.MaximumLength(50)
.WithMessage("Le genre ne peut pas dépasser 50 caractères.");
RuleFor(x => x.AuthorId)
.GreaterThan(0)
.WithMessage("Lidentifiant de lauteur est invalide.");
When(x => x.Summary != null, () =>
{
RuleFor(x => x.Summary)
.MaximumLength(3000).WithMessage("Le résumé ne peut pas dépasser 3000 caractères.");
});
}
}