34 lines
1.4 KiB
C#
34 lines
1.4 KiB
C#
using CampusWorkshops.Api.Dtos;
|
|
using FluentValidation;
|
|
|
|
namespace Workshop10_API.Validation
|
|
{
|
|
public class WorkshopRequestDTOValidator : AbstractValidator<CreateWorkshopRequestDTO>
|
|
{
|
|
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).");
|
|
}
|
|
}
|
|
}
|