示例#1
0
        private Card GetCardFromViewData(CheckoutViewData checkoutViewData, ModelStateDictionary modelState)
        {
            if (checkoutViewData.PayByTelephone)
            {
                return(null);
            }

            var card = new Card
            {
                Holder       = checkoutViewData.CardHolder,
                Number       = checkoutViewData.CardNumber,
                ExpiryMonth  = checkoutViewData.CardExpiryMonth,
                ExpiryYear   = checkoutViewData.CardExpiryYear,
                StartMonth   = checkoutViewData.CardStartMonth,
                StartYear    = checkoutViewData.CardStartYear,
                IssueNumber  = checkoutViewData.CardIssueNumber,
                SecurityCode = checkoutViewData.CardSecurityCode,
                CardType     = checkoutViewData.CardCardType
            };

            DataAnnotationsValidator
            .Validate(card)
            .WithPropertyPrefix("Card")
            .AndUpdate(modelState);

            // don't attempt to encrypt card if there are any model binding errors.
            if (modelState.IsValid)
            {
                var validator = new Validator
                {
                    () => encryptionService.EncryptCard(card)
                };
                validator.Validate(modelState);
            }

            return(card);
        }