//get the cusotmer's order items by calling web api
        public async Task <IActionResult> OrderHistory()
        {
            //web api
            var response = await OrderHistoryApi.InitializeClient().GetAsync($"api/OrderHistory/{User.Identity.Name}");

            if (!response.IsSuccessStatusCode)
            {
                return(NotFound());
            }

            // Storing the response details recieved from web api.
            var result = response.Content.ReadAsStringAsync().Result;

            // Deserializing the response recieved from web api and storing into a list.
            var items = JsonConvert.DeserializeObject <List <OrderItem> >(result);

            foreach (var i in items)
            {
                var store = await _context.Stores.SingleAsync(x => x.StoreID == i.StoreID);

                var product = await _context.Products.SingleAsync(x => x.ProductID == i.ProductID);

                i.Store   = store;
                i.Product = product;
            }
            items = items.OrderBy(x => x.OrderID).ToList();

            return(View(items));
        }
Beispiel #2
0
        public async Task <IActionResult> ShowOrderHistory()
        {
            var response = await OrderHistoryApi.InitializeClient().GetAsync("api/WebApi");

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception();
            }

            // Storing the response details recieved from web api.
            var result = response.Content.ReadAsStringAsync().Result;

            // Deserializing the response recieved from web api and storing into a list.
            var orderItem = JsonConvert.DeserializeObject <List <OrderItem> >(result);

            //order by OrderID
            var orders    = new Dictionary <int, List <OrderItem> >();//Save OrderID and OrderItems
            var orderDate = new Dictionary <int, DateTime>();

            foreach (var item in orderItem)
            {
                item.Store = await _context.Store.SingleOrDefaultAsync(x => x.StoreID == item.StoreID);

                item.Product = await _context.Product.SingleOrDefaultAsync(x => x.ProductID == item.ProductID);

                if (orders == null || !orders.Keys.Contains(item.OrderID))
                {
                    var orderItemList = new List <OrderItem>();
                    var orderDateList = new List <DateTime>();
                    orders.Add(item.OrderID, orderItemList);
                    var order = await _context.Order.FirstOrDefaultAsync(x => x.OrderID == item.OrderID);

                    orderDate.Add(item.OrderID, order.CreaTime);
                    orderItemList.Add(item);
                }
                else
                {
                    var orderItemList = new List <OrderItem>();
                    orders.TryGetValue(item.OrderID, out orderItemList);
                    orderItemList.Add(item);
                    orders[item.OrderID] = orderItemList;
                }
            }

            ViewData["OrderDate"] = orderDate;
            ViewData["OrdersMap"] = orders;

            //return View(orderItem);
            return(View());
        }