Esempio n. 1
0
        // GET: Orders/ProcessOrder/5
        public async Task <ActionResult> ProcessOrder(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            double         TotalCost       = 0;
            List <int>     orderedgoodsIDs = new List <int>();
            List <Package> packages        = await db.Packages.Where(d => d.OrderID == id).ToListAsync();

            List <OrderedGood> orderedgoods = await db.OrderedGoods.Where(d => d.OrderID == id).ToListAsync();

            List <OrderedGoodViewModel> OrderedGoods = new List <OrderedGoodViewModel>();
            List <PackageViewModel>     Packages     = new List <PackageViewModel>();

            foreach (OrderedGood good in orderedgoods)
            {
                OrderedGoods.Add(new OrderedGoodViewModel
                {
                    OrderedGoodInfo = good,
                    GoodName        = db.GoodInfoes.Find(good.GoodID).Name
                });
                orderedgoodsIDs.Add(good.GoodID);
            }
            foreach (Package pkg in packages)
            {
                Packages.Add(new PackageViewModel
                {
                    PackageInfo = pkg,
                    DeliverName = db.PackageProviders.Find(pkg.ProviderID).ProviderName,
                });
            }

            List <StorageGoodViewModel> AssignedGoodInStorage = new List <StorageGoodViewModel>();

            foreach (Storage storagegood in db.Storages.Where(d => d.OrderID == id))
            {
                AssignedGoodInStorage.Add(new StorageGoodViewModel
                {
                    StorageGoodInfo = storagegood,
                    GoodName        = db.GoodInfoes.Find(storagegood.GoodID).Name
                });
                TotalCost += storagegood.TotalCost ?? 0;
            }
            OrderViewModel orderviewdata = await GetOrderViewModelData(db.Orders.Find(id));

            ProcessOrderViewModel processOrderview = new ProcessOrderViewModel
            {
                TotalCost             = TotalCost,
                Revenue               = Convert.ToDouble(0),
                Duration              = 1,
                OrderInfoView         = orderviewdata,
                Packages              = Packages,
                OrderedGoods          = OrderedGoods,
                AssignedGoodInStorage = AssignedGoodInStorage
            };

            return(View(processOrderview));
        }
Esempio n. 2
0
        public async Task <IActionResult> ViewOrder(long id, string statusMessage = null, string successMessage = null, string failureMessage = null)
        {
            var viewModel = new ProcessOrderViewModel()
            {
                Order          = OrderHelper.GetOrder(id, _context),
                StatusMessage  = statusMessage,
                FailureMessage = failureMessage,
                SuccessMessage = successMessage,
                Returns        = _context.Returns.
                                 Where(x => x.OrderId == id).
                                 Include(x => x.ReturnItems).
                                 ToList(),
                OrderHistories = _context.OrderHistories.
                                 Where(x => x.OrderId == id).
                                 Include(x => x.OrderStatus).
                                 ToList()
            };

            foreach (var returnItem in viewModel.Returns)
            {
                var productList = new List <Product>();

                foreach (var itemId in returnItem.ReturnItems)
                {
                    var product = _context.Products.
                                  Where(x => x.Id == itemId.ItemId).
                                  Include(x => x.ProductImages).
                                  SingleOrDefault();
                    productList.Add(product);
                }

                returnItem.Products = productList;
            }

            viewModel.User = await _userManager.FindByIdAsync(viewModel.Order.UserId);

            return(View(viewModel));
        }