51 lines
2.1 KiB
C#
51 lines
2.1 KiB
C#
using DigitalData.EmailProfiler.Application.EmailProcessing.Commands;
|
|
using FluentValidation;
|
|
|
|
namespace DigitalData.EmailProfiler.Application.EmailProcessing.Validators;
|
|
|
|
/// <summary>
|
|
/// Validator for ProcessEmailCommand.
|
|
/// </summary>
|
|
public class ProcessEmailCommandValidator : AbstractValidator<ProcessEmailCommand>
|
|
{
|
|
public ProcessEmailCommandValidator()
|
|
{
|
|
RuleFor(x => x.ProfileId)
|
|
.GreaterThan(0).WithMessage("Profile ID must be greater than 0");
|
|
|
|
RuleFor(x => x.MessageId)
|
|
.NotEmpty().WithMessage("Message ID is required")
|
|
.MaximumLength(500).WithMessage("Message ID must not exceed 500 characters");
|
|
|
|
RuleFor(x => x.Sender)
|
|
.NotEmpty().WithMessage("Sender is required")
|
|
.MaximumLength(200).WithMessage("Sender must not exceed 200 characters")
|
|
.EmailAddress().WithMessage("Sender must be a valid email address");
|
|
|
|
RuleFor(x => x.Subject)
|
|
.NotEmpty().WithMessage("Subject is required")
|
|
.MaximumLength(500).WithMessage("Subject must not exceed 500 characters");
|
|
|
|
RuleFor(x => x.ReceivedDate)
|
|
.NotEmpty().WithMessage("Received date is required")
|
|
.LessThanOrEqualTo(DateTime.Now.AddDays(1)).WithMessage("Received date cannot be in the future");
|
|
|
|
RuleFor(x => x.Attachments)
|
|
.NotNull().WithMessage("Attachments collection cannot be null");
|
|
|
|
RuleForEach(x => x.Attachments).ChildRules(attachment =>
|
|
{
|
|
attachment.RuleFor(a => a.FileName)
|
|
.NotEmpty().WithMessage("Attachment file name is required")
|
|
.MaximumLength(500).WithMessage("Attachment file name must not exceed 500 characters");
|
|
|
|
attachment.RuleFor(a => a.Content)
|
|
.NotEmpty().WithMessage("Attachment content is required");
|
|
|
|
attachment.RuleFor(a => a.SizeBytes)
|
|
.GreaterThan(0).WithMessage("Attachment size must be greater than 0")
|
|
.LessThanOrEqualTo(100 * 1024 * 1024).WithMessage("Attachment size must not exceed 100 MB");
|
|
});
|
|
}
|
|
}
|