public async Task <IActionResult> EditEmployees(int id, ShopEmployeesEditViewModel viewmodel) { if (id != viewmodel.Shop.Id) { return(NotFound()); } try { IEnumerable <int> listEmployees = viewmodel.SelectedEmployees; IQueryable <Employment> toBeRemoved = _context.Employment.Where(s => !listEmployees.Contains(s.EmployeeId) && s.ShopId == id); _context.Employment.RemoveRange(toBeRemoved); IEnumerable <int> existEmployees = _context.Employment.Where(s => listEmployees.Contains(s.EmployeeId) && s.ShopId == id).Select(s => s.EmployeeId); IEnumerable <int> newEmployees = listEmployees.Where(s => !existEmployees.Contains(s)); foreach (int employeeId in newEmployees) { _context.Employment.Add(new Employment { EmployeeId = employeeId, ShopId = id, StartDate = DateTime.Now }); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ShopExists(viewmodel.Shop.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index", "Employments", new { id = viewmodel.Shop.Id })); }
public async Task <IActionResult> EditEmployees(int?id) { if (id == null) { return(NotFound()); } var shop = _context.Shop.Where(s => s.Id == id).Include(s => s.Employees).First(); if (shop == null) { return(NotFound()); } ShopEmployeesEditViewModel viewmodel = new ShopEmployeesEditViewModel { Shop = shop, EmployeeList = new MultiSelectList(_context.Employee, "Id", "FullName"), SelectedEmployees = shop.Employees.Select(sa => sa.EmployeeId) }; return(View(viewmodel)); }