using CampusWorkshops.Api.Dtos; using FluentValidation; namespace Workshop10_API.Validation { public class WorkshopRequestDTOValidator : AbstractValidator { public WorkshopRequestDTOValidator() { RuleFor(x => x.Title) .NotEmpty().WithMessage("O título é obrigatório.") .Length(3, 120).WithMessage("O título deve ter entre 3 e 120 caracteres."); RuleFor(x => x.Capacity) .GreaterThan(0).WithMessage("Capacidade deve ser no mínimo 1."); RuleFor(x => x.StartAt) .LessThan(x => x.EndAt).WithMessage("A data de início deve ser menor que a data de término."); RuleFor(x => x.Location) .NotEmpty().When(x => !x.IsOnline) .WithMessage("Local é obrigatório quando o evento não é online."); RuleFor(x => x.StartAt) .Must(date => DateTime.TryParse(date.ToString("yyyy/MM/dd HH:mm:ss"), out DateTime x)) .WithMessage("A data de início deve estar em formato ISO 8601 (YYYY-MM-DDTHH:mm:ssZ)."); RuleFor(x => x.EndAt) .Must(date => DateTime.TryParse(date.ToString("yyyy/MM/dd HH:mm:ss"), out DateTime x)) .WithMessage("A data fim deve estar em formato ISO 8601 (YYYY-MM-DDTHH:mm:ssZ)."); } } }