public async Task <IActionResult> CreateAsync(CartModelItem model) { var token = HttpContext.Request.Headers .Where(x => x.Key == JwtConstants.RefreshToken) .Select(x => x.Value).FirstOrDefault(); var userId = _jwtHelper.GetIdFromToken(token); var result = await _orderService.MakeOrderAsync(model, userId); return(Ok(result)); }
public static Order MapCartModelToEntity(CartModelItem cartModel, long userId, long paymentId) { var model = new Order() { UserId = userId, PaymentId = paymentId, CreationDate = DateTime.Now, Description = cartModel.Description }; return(model); }
private async Task <BaseModel> CreateAsync(CartModelItem model, long userId) { var paymentId = await GetPaymentIdAsync(model.TransactionId); var order = OrderMapper.MapCartModelToEntity(model, userId, paymentId); var response = new OrdersModel(); if (model == null) { response.Errors.Add(ErrorConstants.ModelIsNull); return(response); } var result = await _orderRepository.CreateAsync(order); if (!result) { response.Errors.Add(ErrorConstants.ImpossibleToCreateOrder); } return(response); }
private async Task <OrderItemModelItem> CreateOrderItemsAsync(CartModelItem model) { var paymentId = await GetPaymentIdAsync(model.TransactionId); var orderId = await GetOrderIdAsync(paymentId); var response = new OrderItemModelItem(); var items = new List <OrderItem>(); foreach (var item in model.OrderItems) { var orderItem = OrderItemMapper.MapModelToEntity(item); orderItem.OrderId = orderId; items.Add(orderItem); } var result = await _orderItemRepository.CreateRangeAsync(items); if (!result) { response.Errors.Add(ErrorConstants.ImpossibleToCreateOrderItem); } response.OrderId = orderId; return(response); }
public async Task <OrdersModelItem> MakeOrderAsync(CartModelItem model, long userId) { var response = new OrdersModelItem(); var result = await CreatePaymentAsync(model.TransactionId); if (result.Errors.Any()) { return((OrdersModelItem)result); } result = await CreateAsync(model, userId); if (result.Errors.Any()) { return((OrdersModelItem)result); } var createItemResult = await CreateOrderItemsAsync(model); if (result.Errors.Any()) { return((OrdersModelItem)result); } response.Id = createItemResult.OrderId; return(response); }