コード例 #1
0
        public async Task <IActionResult> Edit(int id, EmployeeRoleSelections employeeRoleSelections)
        {
            if (!employeeRoleSelections.roleSelections.Any(mbox => mbox.Selected))
            {
                ModelState.AddModelError("roleSelections", "You must select one role!");
            }
            if (id != employeeRoleSelections.employee.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(employeeRoleSelections.employee);
                    _context.SaveChanges();

                    var rolesSelected = _context.EmployeeRole.Where(e => e.EmployeeId == employeeRoleSelections.employee.Id).ToList();
                    _context.RemoveRange(rolesSelected);

                    foreach (RoleSelection roleSelection in employeeRoleSelections.roleSelections)
                    {
                        if (roleSelection.Selected)
                        {
                            EmployeeRole employeeRole = new EmployeeRole
                            {
                                RoleId     = roleSelection.role.Id,
                                EmployeeId = employeeRoleSelections.employee.Id
                            };
                            _context.EmployeeRole.Add(employeeRole);
                        }
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EmployeeExists(employeeRoleSelections.employee.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                _context.SaveChanges();
                return(RedirectToAction(nameof(Index)));
            }
            return(View(employeeRoleSelections));
        }
コード例 #2
0
        public async Task <IActionResult> Edit(int id, EmployeeRoleSelections employeeRoleSelections)
        {
            if (!employeeRoleSelections.roleSelections.Any(m => m.Selected))
            {
                ModelState.AddModelError("roleSelections", "You must select at least one role!");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var allEmployeeRoles = _context.EmployeeRole.Where(e => e.EmployeeId == id).ToList();
                    if (allEmployeeRoles.Count > 0)
                    {
                        _context.RemoveRange(allEmployeeRoles);
                    }

                    foreach (RoleSelection roleSelection in employeeRoleSelections.roleSelections)
                    {
                        if (roleSelection.Selected)
                        {
                            _context.EmployeeRole.Add(new EmployeeRole {
                                EmployeeId = id, RoleId = roleSelection.role.Id
                            });
                        }
                    }

                    _context.Update(employeeRoleSelections.employee);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(employeeRoleSelections));
        }