added validators in project

This commit is contained in:
2026-03-10 09:52:31 +01:00
parent 2e7b9e5154
commit 9f858df5f8
17 changed files with 558 additions and 188 deletions

View File

@@ -0,0 +1,50 @@
using BookHive.DTO.Book;
using FastEndpoints;
using FluentValidation;
namespace BookHive.Validators.Books;
public class UpdateBookDtoValidator : Validator<UpdateBookDto>
{
public UpdateBookDtoValidator()
{
RuleFor(x => x.Id)
.GreaterThan(0)
.WithMessage("Id is invalid.");
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.");
});
}
}