public async Task <TrackOrderViewModel> GetOrder(TrackOrderInputModel model) { var order = await this.db.Orders .FirstOrDefaultAsync(x => x.Id == model.OrderId && x.Email == model.Email); if (order != null) { var orderProducts = this.db.OrderProducts.Where(x => x.OrderId == order.Id).ToList(); var result = new TrackOrderViewModel { Id = order.Id, OrderStatus = order.OrderStatus, CreatedOn = order.CreatedOn, FinishedOn = order.FinishedOn, CanceledOn = order.CanceledOn, }; foreach (var orderProduct in orderProducts) { var targetProduct = await this.db.Products .FirstOrDefaultAsync(x => x.Id == orderProduct.ProductId); var image = await this.db.ProductImages .Where(x => x.ProductId == orderProduct.ProductId) .OrderBy(x => x.Name) .FirstOrDefaultAsync(); var product = new ProductInCartViewModel { Id = targetProduct.Id, Name = targetProduct.Name, AvailableQuantity = targetProduct.AvailableQuantity, Price = targetProduct.Price, WantedQuantity = orderProduct.WantedQuantity, TotalProductPrice = targetProduct.Price * orderProduct.WantedQuantity, ImageUrl = image.ImageUrl, }; result.Products.Add(product); } return(result); } return(null); }
public IHttpResponse Details(IHttpContext httpContext) { Cart cart = (Cart)httpContext.Request.Session.GetParameter(SessionParamsConstants.Cart); List <string> headers = new List <string> { "Product", "Count", "Amount" }; IDictionary <int, int> orderedProductsIds = cart.OrderedItems; IDictionary <ProductInCartViewModel, int> orderedProducts = new Dictionary <ProductInCartViewModel, int>(); foreach (KeyValuePair <int, int> productId in orderedProductsIds) { ProductInCartViewModel product = this.products.GetOrderedProductDetails(productId.Key); orderedProducts.Add(product, productId.Value); } decimal totalAmount = 0; string[][] data = new string[orderedProducts.Count][]; for (int i = 0; i < data.Length; i++) { string productName = orderedProducts.ToList()[i].Key.Name; int productsCount = orderedProducts.ToList()[i].Value; decimal price = orderedProducts.ToList()[i].Key.Price; decimal amount = price * productsCount; totalAmount += amount; data[i] = new[] { $"{productName}", $"{productsCount}", $"{amount:f2}" }; } HtmlTableDataModel dataModel = new HtmlTableDataModel(headers, data); string table = HtmlHelper.HtmlTable(dataModel); this.ViewData[ViewDataConstants.Details] = table; this.ViewData[ViewDataConstants.TotalAmount] = $"{totalAmount:f2}"; return(this.HtmlViewResponse("/cart/details")); }