using FastEndpoints; using FluentValidation; using MetaCourse.Api.DTOs.Resources; using MetaCourse.Api.Entities; namespace MetaCourse.Api.Validators.Resources; public class UpdateResourceDtoValidator : Validator { public UpdateResourceDtoValidator() { RuleFor(x => x.Id) .NotEqual(Guid.Empty).WithMessage("L'identifiant est invalide."); RuleFor(x => x.Title) .NotEmpty().WithMessage("Le titre est requis.") .MinimumLength(2).WithMessage("Le titre doit contenir au moins 2 caractères.") .MaximumLength(200).WithMessage("Le titre ne peut pas dépasser 200 caractères."); RuleFor(x => x.Content) .NotEmpty().WithMessage("Le contenu est requis."); RuleFor(x => x.Type) .IsInEnum().WithMessage("Le type de ressource est invalide."); When(x => x.Type == ResourceType.Url || x.Type == ResourceType.Video, () => { RuleFor(x => x.Content) .Must(c => Uri.TryCreate(c, UriKind.Absolute, out _)) .WithMessage("Le contenu doit être une URL valide pour ce type de ressource."); }); } }