Beispiel #1
0
        public async Task <ActionResult <CreditCardCreatedResponse> > AddCard([FromBody] CreateCreditCardModel model)
        {
            var cardId = CreditCardId.NewId();
            await _mediator.Send(new CreateCreditCard(cardId, model.CreditCardSubscriptionId, _clock.Now));

            return(Ok(new CreditCardCreatedResponse {
                CreditCardId = cardId
            }));
        }
        public ServiceResponse <string> Create([FromBody] CreateCreditCardModel createModel)
        {
            var response = new ServiceResponse <string>();

            int expirationYear;

            Int32.TryParse(createModel.ExpirationYear, out expirationYear);
            int expirationMonth;

            Int32.TryParse(createModel.ExpirationMonth, out expirationMonth);
            int cvv;

            Int32.TryParse(createModel.Cvv, out cvv);

            var model = new CreditCardModel();

            model.ExpirationMonth = expirationMonth;
            model.ExpirationYear  = expirationYear;
            model.BinNumber       = createModel.CardNumber.Substring(0, Math.Min(createModel.CardNumber.Length, 6));
            model.LastFour        = createModel.CardNumber.Substring(createModel.CardNumber.Length - Math.Min(createModel.CardNumber.Length, 4));
            model.UserId          = CurrentUser.ID;
            model.IsActive        = true;
            model.IsDeleted       = false;
            var validationResult = _creditCardModelValidator.Validate(model);

            if (validationResult.IsValid)
            {
                var token = _braintreeWarpper.Tokenize(CurrentUser.FirstName, CurrentUser.LastName, CurrentUser.UserName, createModel.CardNumber, expirationYear, expirationMonth, cvv);
                model.Token = token;

                if (!string.IsNullOrWhiteSpace(token))
                {
                    var entity          = new CreditCardConverter().Convert(model);
                    var serviceResponse = _creditCardService.Create(entity);
                    response.IsSuccessed = serviceResponse.IsSuccessed;
                    response.Errors      = serviceResponse.Errors;
                    response.Data        = model.Token;
                }
                else
                {
                    response.IsSuccessed = false;
                    response.Errors.Add(new ServiceError()
                    {
                        Code = "2009062323", InnerMessage = "Token can not created.", Message = "Credit card can not accepted!"
                    });
                }
            }
            else
            {
                _logger.Error("{source} {template} {logtype} {ValidationError}", "controller", "CreditCardEntity", "validationerror", validationResult.Errors);
                response.IsSuccessed = false;
                response.Errors      = new ValidationFailureConverter().Convert(validationResult.Errors.ToList());
            }

            return(response);
        }
        public async Task <IActionResult> CreateAsync(CreateCreditCardModel model)
        {
            try
            {
                if (!this.ModelState.IsValid)
                {
                    return(View(model));
                }

                var creditCard = await this.creditCardService.CreateCreditCardAsync(model.Company, model.CreditCard.ToString(), model.CvcCode.ToString());

                return(RedirectToAction("Details", new { id = creditCard.Id }));
            }
            catch (Exception e)
            {
                this.ModelState.AddModelError("", "Unable to create credit card");
                this.loggerService.LogError($"Unable to create credit card: {e}");

                return(View());
            }
        }