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)); }
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)); }