public async Task<Microsoft.AspNetCore.Mvc.IActionResult> AddUserToRole(string userName)
        {
            if (userName==null)
            {
                return NotFound();
            }

            var user = await userManager.FindByNameAsync(userName);
            
            if (user == null )
            {
                return NotFound();
            }
            var roles =await roleManager.Roles.ToListAsync();

            var viewModel = new ViewModels.UserManagerViewModel()
            {
                UserId = user.Id
            };

            foreach (var item in roles)
            {
                if (!await userManager.IsInRoleAsync(user, item.Name))
                {
                    
                    viewModel.UserRoles.Add(item.Name);

                }
            }
            
            ViewData["Roles"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(viewModel.UserRoles, "RoleName");
            return View(viewModel);
        }
        public async Task<Microsoft.AspNetCore.Mvc.IActionResult> AddUserToRole(ViewModels.UserManagerViewModel viewModel)
        {

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

            var user = await userManager.FindByIdAsync(viewModel.UserId);
            var fulluser = UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.GetUserByUsername(user.UserName);
            if (user == null)
            {
                return NotFound();
            }

            var requestedRole = viewModel.RoleName;

            bool roleExistResult = await roleManager.RoleExistsAsync(requestedRole);
            if (!roleExistResult)
            {
                IdentityRole role = new IdentityRole()
                {
                    Name = requestedRole,
                };
                var roleResult = await roleManager.CreateAsync(role);
            }
            if (fulluser.RoleId==Guid.Empty)
            {
                var result = await userManager.AddToRoleAsync(user, requestedRole);

                if (result.Succeeded)
                {
                    fulluser.RoleId = Guid.Parse(roleManager.FindByNameAsync(requestedRole).Result.Id);
                    UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.Update(fulluser);
                    UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.Save();
                    viewModel.RoleId = fulluser.RoleId;
                    return RedirectToAction(actionName: "ListAllUsers", controllerName: "ManageUser");
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            viewModel.RoleId = fulluser.RoleId;
           return View(viewModel);

        }
        public async Task<Microsoft.AspNetCore.Mvc.IActionResult> RemoveUserFromRole(ViewModels.UserManagerViewModel viewModel)
        {
            if (viewModel == null)
            {
                return NotFound();
            }

            var user = await userManager.FindByIdAsync(viewModel.UserId);
            var fulluser = UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.GetUserByUsername(user.UserName);
            if (user == null)
            {
                return NotFound();
            }

            var requestedRole = viewModel.RoleName;
                       
            if (fulluser.RoleId != Guid.Empty)
            {
                var result = await userManager.RemoveFromRoleAsync(user, requestedRole);

                if (result.Succeeded)
                {
                    fulluser.RoleId = Guid.Empty;
                    UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.Update(fulluser);
                    UnitOfWork.BethanyPieShopUnitOfWork.UserRepository.Save();
                    viewModel.RoleId = fulluser.RoleId;
                    return RedirectToAction(actionName: "ListAllUsers", controllerName: "ManageUser");
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            viewModel.RoleId = fulluser.RoleId;
            return View(viewModel);
        }