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