Exemplo n.º 1
0
        public async Task <IActionResult> Edit(EditGoodView model, List <int> storagesParameter)
        {
            if (ModelState.IsValid)
            {
                Good good = await unitOfWork.Goods.Get(model.Id);

                if (good != null)
                {
                    good.Name              = model.Name;
                    good.Specification     = model.Specification;
                    good.PhotoUrl          = model.PhotoUrl;
                    good.YearOfManufacture = model.YearOfManufacture;
                    good.WarrantyTerm      = model.WarrantyTerm;
                    good.Price             = model.Price;
                    good.Type              = model.Type;
                    good.Count             = model.Count;
                    good.Producer          = unitOfWork.Producers.GetAll()
                                             .Where(p => p.Name == Request.Form["producerSelect"]).First();

                    List <Storage> goodStorages = new List <Storage>();

                    foreach (var storage in good.Storages)
                    {
                        if (storage.GoodId == good.Id)
                        {
                            goodStorages.Add(await unitOfWork.Storages.Get(storage.StorageId));
                        }
                    }

                    List <Storage> checkedStorages = new List <Storage>();
                    var            storages        = unitOfWork.Storages.GetAll().ToList();

                    for (var i = 0; i < storagesParameter.Count; i++)
                    {
                        var item = storages.Where(s => s.Id == storagesParameter[i])
                                   .FirstOrDefault();

                        if (item != null)
                        {
                            checkedStorages.Add(item);
                        }
                    }

                    var addedStorages  = checkedStorages.Except(goodStorages).ToList();
                    var removedStorage = goodStorages.Except(checkedStorages).ToList();

                    await unitOfWork.Goods.DeleteGoodFromStorage(good.Id, removedStorage);

                    await unitOfWork.Goods.AddGoodToStorage(good.Id, addedStorages);

                    unitOfWork.Goods.Update(good);
                    await unitOfWork.SaveAsync();

                    HttpContext.Session.Set("goods", unitOfWork.Goods.GetAll().ToList());

                    return(RedirectToAction("Index"));
                }
            }
            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Edit(int id)
        {
            Good good = await unitOfWork.Goods.Get(id);

            List <Storage> goodStorages = new List <Storage>();

            if (good == null)
            {
                ViewBag.Message = errorMessage.ReturnErrorMessage("ErrorMessages", "GoodIsNotFounded");

                return(View("ErrorPage"));
            }

            foreach (var storage in good.Storages)
            {
                if (storage.GoodId == good.Id)
                {
                    goodStorages.Add(await unitOfWork.Storages.Get(storage.StorageId));
                }
            }

            EditGoodView model = new EditGoodView
            {
                Id                = good.Id,
                Name              = good.Name,
                Specification     = good.Specification,
                PhotoUrl          = good.PhotoUrl,
                YearOfManufacture = good.YearOfManufacture,
                WarrantyTerm      = good.WarrantyTerm,
                Price             = Convert.ToInt32(good.Price),
                Type              = good.Type,
                Count             = good.Count,
                Producer          = await unitOfWork.Producers.Get(good.ProducerId),
                Producers         = unitOfWork.Producers.GetAll().ToList(),
                AllStorages       = unitOfWork.Storages.GetAll().ToList(),
                Storages          = goodStorages
            };

            return(View(model));
        }