Files
blazor-crm/Features/Pipeline/Expense/Cqrs/CreateExpenseValidator.cs
T
2026-07-21 13:59:38 +07:00

27 lines
994 B
C#

using FluentValidation;
using Indotalent.Shared.Consts;
namespace Indotalent.Features.Pipeline.Expense.Cqrs;
public class CreateExpenseValidator : AbstractValidator<CreateExpenseRequest>
{
public CreateExpenseValidator()
{
RuleFor(x => x.Title)
.NotEmpty().WithMessage("Expense Title is required")
.MaximumLength(GlobalConsts.StringLengthShort);
RuleFor(x => x.CampaignId)
.NotEmpty().WithMessage("Campaign is required");
RuleFor(x => x.Amount)
.NotNull().WithMessage("Amount is required");
}
public Func<object, string, Task<IEnumerable<string>>> ValidateValue() => async (model, propertyName) =>
{
var result = await ValidateAsync(ValidationContext<CreateExpenseRequest>.CreateWithOptions((CreateExpenseRequest)model, x => x.IncludeProperties(propertyName)));
if (result.IsValid) return Array.Empty<string>();
return result.Errors.Select(e => e.ErrorMessage);
};
}