Initial commit

This commit is contained in:
2026-05-05 10:39:43 +02:00
commit b590ecdc35
87 changed files with 3934 additions and 0 deletions
@@ -0,0 +1,30 @@
using FastEndpoints;
using FluentValidation;
using MetaCourse.Api.DTOs.Resources;
using MetaCourse.Api.Entities;
namespace MetaCourse.Api.Validators.Resources;
public class CreateResourceDtoValidator : Validator<CreateResourceDto>
{
public CreateResourceDtoValidator()
{
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.");
});
}
}
@@ -0,0 +1,33 @@
using FastEndpoints;
using FluentValidation;
using MetaCourse.Api.DTOs.Resources;
using MetaCourse.Api.Entities;
namespace MetaCourse.Api.Validators.Resources;
public class UpdateResourceDtoValidator : Validator<UpdateResourceDto>
{
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.");
});
}
}