public async Task <IActionResult> EditAccessGroups(string id, UserAccessGroupsModel presentation) { if (id == null) { return(NotFound()); } User user = _context.Users.Where(x => x.Id == id).SingleOrDefault(); presentation.UserName = user.UserName; if (ModelState.IsValid) { // Remove all User Access Group rels foreach (UserAccessGroup userGroup in _context.UserAccessGroups.Where(x => x.UserId == id)) { _context.UserAccessGroups.Remove(userGroup); } // Set all User Access Group rels foreach (AccessGroup group in presentation.AccessGroups.Where(x => x.RelationshipPresent == true)) { var localAccessGroup = _context.AccessGroups.AsNoTracking().Where(x => x.AccessGroupId == group.AccessGroupId).SingleOrDefault(); var newUserGroup = new UserAccessGroup() { AccessGroupId = localAccessGroup.AccessGroupId, UserId = user.Id }; _context.UserAccessGroups.Add(newUserGroup); } _context.SaveChanges(); // Remove all existing rels IdentityResult removeRoles = await RemoveUserRoles(user); // Set new rels IdentityResult addRoles = await AddUserRoles(user); TempData["SuccessMessage"] = $"Access Groups Updated for User {user.UserName}"; return(RedirectToAction(nameof(Index))); } return(View(presentation)); }
public async Task <IActionResult> EditAccessGroups(string id) { if (id == null) { return(NotFound()); } var user = await _context.Users.Where(x => x.Id == id).SingleOrDefaultAsync(); var accessGroups = _context.AccessGroups.AsNoTracking().ToList(); var relatedAccessGroups = _context.UserAccessGroups.AsNoTracking().Where(x => x.UserId == id).Select(x => x.AccessGroupId).ToList(); accessGroups.Where(x => relatedAccessGroups.Contains(x.AccessGroupId)).ToList().ForEach(y => y.RelationshipPresent = true); var presentation = new UserAccessGroupsModel { UserName = user.UserName, AccessGroups = accessGroups }; return(View(presentation)); }