Пример #1
0
        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));
        }
Пример #2
0
        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));
        }