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