public ActionResult Edit(ItemTypesViewModel viewModel) { if (Session["isAdmin"] == null || !(bool)Session["isAdmin"]) return RedirectToAction("Index", new { controller = "Home", action = "Index" }); if (ModelState.IsValid) { db.Entry(viewModel.ItemTypeModel).State = EntityState.Modified; db.SaveChanges(); if (viewModel.ItemsModel != null) for(int i = 0; i<viewModel.ItemsModel.Count; i++) { var dbItem = db.Items.Find(viewModel.ItemsModel[i].ItemId); if (dbItem == null) return RedirectToAction("Index"); dbItem.InventoryLocationId = viewModel.ItemsModel[i].InventoryLocationId; dbItem.LabelId = viewModel.ItemsModel[i].LabelId; db.Entry(dbItem).State = EntityState.Modified; db.SaveChanges(); } return RedirectToAction("Index"); } return null; }
// GET: ItemTypes/Edit/5 public ActionResult Edit(int? id) { if (Session["isAdmin"] == null || !(bool)Session["isAdmin"]) return RedirectToAction("Index", new { controller = "Home", action = "Index" }); if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //Find the Item Type ItemTypes itemTypes = db.ItemTypes.Find(id); if (itemTypes == null) { return HttpNotFound(); } var availableToEdit = itemTypes.Item.Where(item => item.BundleId == null); var itemsModel = availableToEdit.Where(item => item.CheckedOutSchoolId==null).OrderBy(item => item.InventoryLocation != null ? item.InventoryLocation.InventoryLocationName : "").ThenBy(item => item.Label !=null ? item.Label.LabelName : "").ToList(); //Create List of Inventory Locations IList<SelectListItem> inventoryLocations = db.InventoryLocations.Select(x => new SelectListItem { Text = x.InventoryLocationName, Value = x.InventoryLocationId.ToString() }).OrderBy(listItem => listItem.Text).ToList(); //Create List of Labels IList<SelectListItem> labels = db.Labels.Select(x => new SelectListItem { Text = x.LabelName, Value = x.LabelId.ToString() }).OrderBy(listItem => listItem.Text).ToList(); //Insert Empty value for no location inventoryLocations.Insert(0, new SelectListItem { Text = "", Value = null }); labels.Insert(0, new SelectListItem { Text = "", Value = null }); //Create List of Lists of SelectListItems (1 for every Item) IList<IEnumerable<SelectListItem>> invLocSelectLists = new List<IEnumerable<SelectListItem>>(); IList<IEnumerable<SelectListItem>> labelSelectLists = new List<IEnumerable<SelectListItem>>(); for (int i= 0; i < itemsModel.Count; i++) { var currId = itemsModel[i].InventoryLocationId; //Current Id IList<SelectListItem> currList = new List<SelectListItem>(); //Create Copy of list foreach (var item in inventoryLocations) currList.Add(new SelectListItem {Text= item.Text, Value = item.Value }); var currLabelId = itemsModel[i].LabelId; IList<SelectListItem> currLabelList = new List<SelectListItem>(); //Create Copy of list foreach (var item in labels) currLabelList.Add(new SelectListItem { Text = item.Text, Value = item.Value }); //Find the index to be selected if (currId == null) currList[0].Selected = true; else for (int j = 0; j < currList.Count; j++) if (currId.ToString().Equals(currList[j].Value)) { currList[j].Selected = true; break; } if(currLabelId == null) currLabelList[0].Selected = true; else for (int j = 0; j < currLabelList.Count; j++) if (currLabelId.ToString().Equals(currLabelList[j].Value)) { currLabelList[j].Selected = true; break; } invLocSelectLists.Add(currList); //Add to the collection labelSelectLists.Add(currLabelList); } ItemTypesViewModel vm = new ItemTypesViewModel { ItemTypeModel = itemTypes, ItemsModel = itemsModel, InventoryLocations = invLocSelectLists, Labels = labelSelectLists }; return View(vm); }