public async Task <IActionResult> Details([FromRoute] long ID) { if (!ModelState.IsValid) { return(BadRequest()); } var product = await mProductClient.GetProductAsync(ID); return(View(product)); }
public async Task <IActionResult> GetOrders() { // Usually, you would get userid from an access token, for example. This is hardcoded for simplicity. long userID = 1; var xOrders = await mOrderClient.GetOrdersByUserID(userID); var orders = new List <GetOrderResponse>(); foreach (var order in xOrders) { var getproductTasks = order.OrderItems.Select(oi => mProductClient.GetProductAsync(oi.ProductID)).ToList(); var orderItems = new List <GetOrderResponseItem>(); for (int i = 0; i < getproductTasks.Count; i++) { var product = await getproductTasks[i]; orderItems.Add(new GetOrderResponseItem( id: order.OrderItems[i].ID, productID: product.ID, productName: product.Name, price: product.Price, quantity: order.OrderItems[i].Quantity )); } orders.Add(new GetOrderResponse( id: order.ID, totalPrice: orderItems.Sum(ci => ci.Price * ci.Quantity), address: order.Address, deliveryMethod: order.DeliveryMethod, orderStatus: order.OrderStatus, orderItems: orderItems )); } return(Ok(orders)); }
public async Task <IActionResult> GetProduct([FromRoute] long ID) { if (!ModelState.IsValid) { return(BadRequest()); } var product = await mProductClient.GetProductAsync(ID); if (product == null) { return(NotFound()); } return(Ok(product)); }
public async Task <IActionResult> CheckoutAsync([FromBody] CheckoutRequest request) { if (!ModelState.IsValid) { return(BadRequest()); } // Usually, you would get userid from an access token, for example. This is hardcoded for simplicity. var userID = 1; var cart = await mCartClient.GetCartByUserIDAsync(userID); if (!cart.CartItems.Any()) { return(BadRequest()); } var getproductTasks = cart.CartItems.Select(ci => mProductClient.GetProductAsync(ci.ProductID)).ToList(); var orderItems = new List <XAddOrderItemRequestItems>(); for (int i = 0; i < getproductTasks.Count; i++) { var product = await getproductTasks[i]; orderItems.Add(new XAddOrderItemRequestItems { ProductID = product.ID, Quantity = cart.CartItems[i].Quantity, Price = product.Price }); } var bAddOrderSuccess = await mOrderClient.AddOrderAsync(new XAddOrderRequest { UserID = userID, Address = request.Address, DeliveryMethod = request.DeliveryMethod.Value, OrderItems = orderItems }); if (!bAddOrderSuccess) { return(new ObjectResult(null) { StatusCode = (int)HttpStatusCode.InternalServerError }); } var bUpdateCartStatusSuccess = await mCartClient.UpdateCartStatus(userID, new XUpdateCartStatusRequest { Status = EXCartStatus.Ordered }); if (!bUpdateCartStatusSuccess) { return(new ObjectResult(null) { StatusCode = (int)HttpStatusCode.InternalServerError }); } return(Ok()); }
public Task <GetProductResponse> GetProductAsync(int productId) { return(_productClient.GetProductAsync(GetProductRequest.CreateNew(productId))); }