public IActionResult EditUserClaims(string userId)
        {
            var user = _userManager.FindByIdAsync(userId).Result;

            if (user == null)
            {
                return(NotFound());
            }

            var claimsPrincipal = _signInManager.CreateUserPrincipalAsync(user).Result;

            var listOfClaims = new List <HotelAvailableClaims>();

            foreach (var ctype in HotelClaims.GetUserAvailableClaims())
            {
                var claim = claimsPrincipal.FindFirst(c => c.Type == ctype);
                if (claim != null)
                {
                    listOfClaims.Add(new HotelAvailableClaims()
                    {
                        ClaimType = claim.Type,
                        HasClaim  = claim.Value == HotelClaims.True
                    });
                }
            }

            HotelClaimsViewModel userClaims = new HotelClaimsViewModel()
            {
                UserId          = userId,
                UserName        = user.UserName,
                UserOwnedClaims = listOfClaims
            };

            return(View(userClaims));
        }
        public async Task <IActionResult> EditUserClaims(HotelClaimsViewModel userClaims)
        {
            var user = _userManager.FindByIdAsync(userClaims.UserId).Result;
            var cp   = _signInManager.CreateUserPrincipalAsync(user).Result;

            if (userClaims.UserOwnedClaims != null) //In case someone tries to edit a user with no editable claims, UserOwnedClaims becomes null
            {
                foreach (var e in userClaims.UserOwnedClaims)
                {
                    var oldClaim = cp.FindFirst(c =>
                                                c.Type == e.ClaimType);

                    if (oldClaim != null)
                    {
                        var newClaim = new Claim(e.ClaimType, e.HasClaim ? HotelClaims.True : HotelClaims.False);

                        await _userManager.ReplaceClaimAsync(user, oldClaim, newClaim);
                    }
                }
            }

            return(RedirectToAction(nameof(ManageUsers)));
        }