コード例 #1
0
        public async Task <IActionResult> Create([FromBody] ShoppingCart cart)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            dbContext.ShoppingCart.Add(cart);
            await dbContext.SaveChangesAsync();

            return(Ok(cart));
        }
コード例 #2
0
        public async Task <IActionResult> ProceedPayment([FromBody] PaymentRequest paymentRequest)
        {
            var requestToBank = mapper.Map <BankPaymentRequest>(paymentRequest);

            requestToBank.MerchantId = HttpContext.GetMerchantId();
            var paymentResult = await bankService.ProceedPaymentAsync(requestToBank);

            if (paymentResult.StatusCode != PaymentStatusCode.Success)
            {
                logger.LogInformation($"Payment for merchant {HttpContext.GetMerchantId()} was declined");
                return(BadRequest(
                           new ErrorResponse
                {
                    Errors = new List <ErrorModel>
                    {
                        new ErrorModel {
                            ErrorName = "Payment Failed", Message = "Some custom message"
                        }
                    }
                }));
            }
            var payment = mapper.Map <PaymentDTO>(requestToBank);

            payment.BankPaymentId = paymentResult.PaymentId;
            await dbContext.Payments.AddAsync(payment);

            await dbContext.SaveChangesAsync();

            var response = mapper.Map <PaymentResponse>(payment);

            logger.LogInformation($"Successfully proceeded payment for merchant {payment.MerchantId}");
            return(Ok(response));
        }
コード例 #3
0
        public async Task <T> AddAsync(T entity)
        {
            context.Set <T>().Add(entity);
            await context.SaveChangesAsync();

            return(entity);
        }
コード例 #4
0
            public async Task <PaymentResponseModel> Handle(CreatePaymentCommand request, CancellationToken cancellationToken)
            {
                try
                {
                    var entity = new Payment
                    {
                        CardInformation = new CardInformation(request.CardNumber, request.CardHolder),
                        Transaction     = new Transaction {
                            Amount = request.Amount, UserId = request.UserId,
                        }
                    };

                    _context.Payments.Add(entity);
                    await _context.SaveChangesAsync(cancellationToken);

                    var paymentCreated = new PaymentCreated
                    {
                        Id        = entity.Id,
                        RequestId = entity.Transaction.RequestId,
                        State     = entity.Transaction.State
                    };

                    await _endpoint.Publish(paymentCreated, cancellationToken);

                    return(_mapper.Map <PaymentResponseModel>(entity));
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
コード例 #5
0
        public async Task <(bool IsSuccessful, int CheckoutId)> AddAsync(Models.CheckoutModel checkout)
        {
            try
            {
                var entity = _mapper.Map <Entities.Checkout>(checkout);
                _dbContext.Checkouts.Add(entity);
                await _dbContext.SaveChangesAsync();

                return(true, entity.Id);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                return(false, -1);
            }
        }