Beispiel #1
0
        public string DeleteCreditCard(int Id)
        {
            var existedCreditCard = _creditCardRepository.Get(x => x.Deleted == false && x.Id == Id);

            if (existedCreditCard == null)
            {
                return("Not found Credit Card");
            }
            else
            {
                existedCreditCard.Deleted = true;
                _creditCardRepository.Update(existedCreditCard);
                _unitOfWork.CommitChanges();
            }


            return("");
        }
Beispiel #2
0
        public string MakePayment(int RouteId)
        {
            //var routeToMakePayment = _routeService.getRouteDetail(RouteId);
            //var customerInfor = _customerService.FindCustomerById(routeToMakePayment.CutomerId);
            //var creditCardToMakePayment = _creditCardService.GetCardToPayment(routeToMakePayment.CustomerId);
            var routeToMakePayment      = _routeRepository.Get(x => x.Id == RouteId);
            var customerInfor           = _customerRepository.Get(x => x.Id == routeToMakePayment.CustomerId);
            var creditCardToMakePayment = _creditCardRepository.Get(x => x.Deleted == false && x.CustomerId == routeToMakePayment.CustomerId && x.Isdefault == true);

            //Stripe charge money
            StripeConfiguration.SetApiKey(SETTING.Value.SecretStripe);

            var options = new ChargeCreateOptions
            {
                Amount      = Convert.ToInt64(routeToMakePayment.TotalAmount * 100),
                Currency    = "usd",
                Description = customerInfor.FullName.ToUpper() + "-" + customerInfor.Email + "-" + customerInfor.PhoneNumber +
                              " buy Route Code: " + routeToMakePayment.Code,
                SourceId   = creditCardToMakePayment.CardId, // obtained with Stripe.js,
                CustomerId = customerInfor.StripeId,
            };
            var service = new ChargeService();

            service.ExpandBalanceTransaction = true;
            Charge charge = service.Create(options);


            PaymentCreateViewModel model = new PaymentCreateViewModel();

            model.RouteId        = routeToMakePayment.Id;
            model.CreditCartId   = creditCardToMakePayment.Id;
            model.Description    = "You bought route " + routeToMakePayment.Code + ". Thank you for using our service.";
            model.Amount         = routeToMakePayment.TotalAmount;
            model.Status         = PaymentStatus.Success;
            model.StripeChargeId = charge.Id;
            model.FeeAmount      = Convert.ToDecimal(charge.BalanceTransaction.Fee) / 100;
            var payment = _mapper.Map <PaymentCreateViewModel, Payment>(model); //map từ ViewModel qua Model

            _paymentRepository.Add(payment);
            _unitOfWork.CommitChanges();
            return("");
        }
        public ActionResult Get(int creditCardId)
        {
            var userId     = _userManager.GetUserAsync(HttpContext.User).Result.Id;
            var creditCard = _creditCardRepository.Get(userId, creditCardId);

            if (creditCard != null)
            {
                return(Ok(creditCard));
            }
            else
            {
                return(NoContent());
            }
        }
Beispiel #4
0
        public async Task <IEnumerable <CreditCartOutput> > Handle(GetAllCreditCardQuery request, CancellationToken cancellationToken)
        {
            _logger.LogTrace("Handle Begin");
            var dbResult = await _creditCardRepository.Get();

            var result = dbResult.Select(r => new CreditCartOutput()
            {
                Id         = r.Id,
                Name       = r.Name,
                CardNumber = r.CardNumber,
                ExpiryDate = r.ExpiryDate
            });

            _logger.LogTrace("Handle Return");
            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// Executa o tratamento do comando
        /// </summary>
        /// <param name="message">Comando de Exclusão de Cartão de Crédito</param>
        public async Task <Response> Handle(RemoveCreditCardCommand message)
        {
            try
            {
                var creditCard = await _repository.Get(message.CreditCardId);

                if (creditCard == null)
                {
                    return(new Response().AddError("Nenhum cartão de crédito encontrado"));
                }

                await _repository.RemoveCreditCard(creditCard);

                return(new Response("Cartão de crédito removido com sucesso"));
            }
            catch (Exception ex)
            {
                return(new Response().AddError(ex.Message));
            }
        }
Beispiel #6
0
        /// <summary>
        /// Executa o tratamento do comando
        /// </summary>
        /// <param name="message">Comando de Pagamento de Cartão de Crédito</param>
        public async Task <Response> Handle(PayCreditCardCommand message)
        {
            try
            {
                var creditCard = await _creditCardRepository.Get(message.CardId);

                creditCard.ReleaseCredit(message.Amount);

                await _creditCardRepository.ChangeCardLimits(creditCard);

                var response = new
                {
                    amountPaid = message.Amount,
                    creditCard.AvailableCredit,
                    creditCard.PendingPayment
                };

                return(new Response(response));
            }
            catch (Exception ex)
            {
                return(new Response().AddError(ex.Message));
            }
        }