public async Task <IActionResult> Create([FromBody] ShoppingCart cart) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } dbContext.ShoppingCart.Add(cart); await dbContext.SaveChangesAsync(); return(Ok(cart)); }
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)); }
public async Task <T> AddAsync(T entity) { context.Set <T>().Add(entity); await context.SaveChangesAsync(); return(entity); }
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; } }
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); } }