public PaymentRequestValidator() { RuleFor(x => x.CustomerOrder) .NotNull() .WithMessage(OrderErrorDescriber.OrderNotFound()); RuleFor(x => x.Payment) .NotNull() .WithMessage(OrderErrorDescriber.PaymentNotFound()); RuleFor(x => x.Payment.PaymentMethod) .NotNull() .WithMessage(x => OrderErrorDescriber.PaymentMethodNotFound(x.Payment.GatewayCode)) .When(x => x.Payment != null); RuleFor(x => x.Store) .NotNull() .WithMessage(OrderErrorDescriber.StoreNotFound()); RuleFor(x => x) .Custom((request, context) => { if (_invalidStates.Contains(request.Payment.PaymentStatus)) { context.AddFailure(OrderErrorDescriber.InvalidStatus(request.Payment.PaymentStatus)); } }) .When(x => x.Payment != null); }
public ProcessPaymentRequestValidator() { RuleFor(x => x.Order).NotNull(); RuleFor(x => x.Payment).NotNull().WithMessage(OrderErrorDescriber.PaymentNotFound()); RuleFor(x => ((PaymentIn)x.Payment).PaymentMethod).NotNull().WithMessage(x => OrderErrorDescriber.PaymentMethodNotFound(((PaymentIn)x.Payment).GatewayCode)); RuleFor(x => x.Store).NotNull().WithMessage(OrderErrorDescriber.StoreNotFound()); When(x => x.BankCardInfo != null, () => { RuleFor(x => x.BankCardInfo.BankCardNumber).NotNull().NotEmpty().CreditCard(); RuleFor(x => x.BankCardInfo.BankCardCVV2).NotNull().NotEmpty(); RuleFor(x => x.BankCardInfo.BankCardType).NotNull().NotEmpty(); RuleFor(x => x.BankCardInfo.BankCardYear).NotNull().NotEmpty(); RuleFor(x => x.BankCardInfo.BankCardMonth).NotNull().NotEmpty(); RuleFor(x => x.BankCardInfo.CardholderName).NotNull().NotEmpty(); }); RuleFor(x => x).Custom((request, context) => { var payment = request.Payment as PaymentIn; if (!_availStatusesForProcessing.Contains(payment.PaymentStatus)) { context.AddFailure(OrderErrorDescriber.InvalidStatus(payment.PaymentStatus, _availStatusesForProcessing)); } }); }