using FluentValidation; using ExpenseTracker.Domain.Enums; namespace ExpenseTracker.Application.Transactions.Commands.Update; public class UpdateTransactionCommandValidator : AbstractValidator { public UpdateTransactionCommandValidator() { RuleFor(e => e.Id) .NotEmpty(); RuleFor(e => e.Amount); RuleFor(e => e.Category) .Must(c => Category.Enumerations.Any(e => e.Value.Equals(Category.FromName(c))) || c == null) .WithMessage(c => $"'{nameof(c.Category)}' must be one of the following: '{String.Join("', ", Category.Enumerations.Values.Select(v => v.Name))}'."); RuleFor(e => e.Time); RuleFor(e => e.Description) .Length(0, 256); RuleFor(e => e.AccountId) .NotEmpty(); } }