Exemplo n.º 1
0
        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 OrderPaymentValidator()
        {
            RuleFor(x => x).Custom((paymentContext, context) =>
            {
                var availPaymentMethods = paymentContext.AvailPaymentMethods;
                var paymentCode         = paymentContext.Payment?.GatewayCode;

                if (availPaymentMethods != null && !string.IsNullOrEmpty(paymentCode))
                {
                    var paymentMethod = availPaymentMethods.FirstOrDefault(x => paymentCode.EqualsInvariant(x.Code));
                    if (paymentMethod == null)
                    {
                        context.AddFailure(OrderErrorDescriber.PaymentMethodUnavailable(paymentCode));
                    }
                }
            });
        }
 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));
         }
     });
 }