namespace WalletService.API.Application.Validations; using FluentValidation; using WalletService.API.Application.Commands.Payments; /// /// EN: Validator for CreatePaymentCommand. /// VI: Validator cho CreatePaymentCommand. /// public class CreatePaymentCommandValidator : AbstractValidator { public CreatePaymentCommandValidator() { RuleFor(x => x.OrderId) .NotEmpty() .WithMessage("Order ID is required / Ma don hang la bat buoc"); RuleFor(x => x.Amount) .GreaterThan(0) .WithMessage("Amount must be greater than zero / So tien phai lon hon 0"); RuleFor(x => x.Currency) .NotEmpty() .WithMessage("Currency is required / Tien te la bat buoc") .MaximumLength(10) .WithMessage("Currency code must not exceed 10 characters / Ma tien te khong vuot qua 10 ky tu"); RuleFor(x => x.GatewayName) .NotEmpty() .WithMessage("Gateway name is required / Ten cong thanh toan la bat buoc") .MaximumLength(50) .WithMessage("Gateway name must not exceed 50 characters / Ten cong thanh toan khong vuot qua 50 ky tu"); RuleFor(x => x.ReturnUrl) .NotEmpty() .WithMessage("Return URL is required / URL tra ve la bat buoc") .Must(url => Uri.TryCreate(url, UriKind.Absolute, out _)) .WithMessage("Return URL must be a valid URL / URL tra ve phai hop le"); RuleFor(x => x.IpAddress) .NotEmpty() .WithMessage("IP address is required / Dia chi IP la bat buoc"); } } /// /// EN: Validator for ProcessPaymentCallbackCommand. /// VI: Validator cho ProcessPaymentCallbackCommand. /// public class ProcessPaymentCallbackCommandValidator : AbstractValidator { public ProcessPaymentCallbackCommandValidator() { RuleFor(x => x.GatewayName) .NotEmpty() .WithMessage("Gateway name is required / Ten cong thanh toan la bat buoc"); RuleFor(x => x.Parameters) .NotNull() .WithMessage("Callback parameters are required / Cac tham so callback la bat buoc") .Must(p => p.Count > 0) .WithMessage("Callback parameters cannot be empty / Cac tham so callback khong duoc trong"); } }