Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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"));
        }