public async Task <IActionResult> EditLotItems(int?id) { if (id == null) { return(NotFound()); } var lot = await _context.Lot .Include(u => u.Address) .FirstOrDefaultAsync(u => u.LotId == id); if (lot == null) { return(NotFound()); } var identityUser = await _userManager.GetUserAsync(HttpContext.User); var loggedInUser = _context.Owner.Find(identityUser.OwnerId); var isOwner = _context.OwnerLot .Where(u => u.LotId == id) .Where(u => u.OwnerId == loggedInUser.OwnerId) .Where(u => !u.IsArchive) .Any(); if (!isOwner) { return(NotFound()); } var lotItems = await _context.LotInventory .Include(u => u.Inventory) .Where(u => u.LotId == id) .Select(u => u.Inventory.InventoryId) .ToListAsync(); var vm = new LotEditInventoryVM { Lot = lot, Address = lot.Address, SelectedItems = lotItems }; ViewData["Inventory"] = _context.Inventory.ToList(); return(View(vm)); }
public async Task <IActionResult> EditLotItems(int id, LotEditInventoryVM vm) { if (id != vm.Lot.LotId) { return(NotFound()); } var lot = await _context.Lot .Include(u => u.Address) .FirstOrDefaultAsync(u => u.LotId == id); if (lot == null) { return(NotFound()); } var identityUser = await _userManager.GetUserAsync(HttpContext.User); var loggedInUser = _context.Owner.Find(identityUser.OwnerId); var isOwner = _context.OwnerLot .Where(u => u.LotId == id) .Where(u => u.OwnerId == loggedInUser.OwnerId) .Where(u => !u.IsArchive) .Any(); if (!isOwner) { return(NotFound()); } if (ModelState.IsValid) { // Get the current inventory relationships var currItems = _context.LotInventory .Where(u => u.LotId == id) .ToList(); foreach (var item in currItems) { // Item is still selected - remove it for next step if (vm.SelectedItems != null && vm.SelectedItems.Contains(item.InventoryId)) { vm.SelectedItems.Remove(item.InventoryId); } // Item is not selected anymore - need to remove the relationship else { _context.LotInventory.Remove(item); } } // Any items still in SelectedItems need to be added in the relationship table if (vm.SelectedItems != null) { foreach (var invId in vm.SelectedItems) { _context.LotInventory.Add(new LotInventory { LotId = id, InventoryId = invId, LastModifiedBy = loggedInUser.FullName, LastModifiedDate = DateTime.Now }); } } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(MyLots))); } ViewData["Inventory"] = _context.Inventory.ToList(); return(View(null)); }