Esempio n. 1
0
        // GET: Storages/avaiable/5&3
        public async Task <ActionResult> MatchGoods(int?id)
        {
            int         CurrentUserID = (int)Session["CurrentUserID"];
            OrderedGood orderedGood   = await db.OrderedGoods.FindAsync(id);

            OrderedGoodViewModel orderedgood = new OrderedGoodViewModel
            {
                OrderedGoodInfo = orderedGood,
                GoodName        = db.GoodInfoes.Find(orderedGood.GoodID).Name
            };
            List <StorageGoodViewModel> AvaiavleGoodsInStorage = new List <StorageGoodViewModel>();

            foreach (Storage storagegood in db.Storages.Where(d => d.OrderID == null && d.GoodID == orderedGood.GoodID && d.UserID == CurrentUserID))
            {
                AvaiavleGoodsInStorage.Add(new StorageGoodViewModel
                {
                    StorageGoodInfo = storagegood,
                    GoodName        = db.GoodInfoes.Find(storagegood.GoodID).Name
                });
            }
            MatchGoodViewModel MatchGoodinStorage = new MatchGoodViewModel
            {
                OrderedGood = orderedgood,
                //OrderInfoView = await GetOrderViewModelData(OrderID),
                AvailableGoodsInStorage = AvaiavleGoodsInStorage
            };

            return(View(MatchGoodinStorage));
        }
Esempio n. 2
0
        public async Task <ActionResult> Assign([Bind(Include = "SelectedStorageID,SelectedOrderedGoodID")] MatchGoodViewModel AssignedGoodInStorage)
        {
            if (AssignedGoodInStorage == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Storage storage = await db.Storages.FindAsync(AssignedGoodInStorage.SelectedStorageID);

            int         orderedgoodID = AssignedGoodInStorage.SelectedOrderedGoodID;
            OrderedGood orderedgood   = await db.OrderedGoods.FindAsync(orderedgoodID);

            int GoodID = orderedgood.GoodID;

            if (storage == null)
            {
                return(HttpNotFound());
            }
            int avaiableamount = storage.Quantity;
            int selectedamount = orderedgood.Quantity;

            if (selectedamount > avaiableamount)
            {
                return(HttpNotFound());
            }
            int restofgoodamount = avaiableamount - selectedamount;

            if (restofgoodamount == 0)
            {
                storage.OrderID         = orderedgood.OrderID;
                db.Entry(storage).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
            else
            {
                storage.OrderID         = orderedgood.OrderID;
                storage.Quantity        = selectedamount;
                db.Entry(storage).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //add new record for rest
                Storage newstorage = new Storage
                {
                    GoodID    = storage.GoodID,
                    Cost      = storage.Cost,
                    Quantity  = restofgoodamount,
                    TotalCost = storage.Cost * restofgoodamount,
                };
                db.Storages.Add(newstorage);
                await db.SaveChangesAsync();
            }
            return(RedirectToAction("MatchGoods", "Orders", new { id = orderedgoodID }));
        }