public async Task <IActionResult> ManageRole(List <string> userId, string role)
        {
            if (!(await _customRoleService.IsUserInRoleAsync(await _userManager.GetUserAsync(User), Roles.DemoUser.ToString())))
            {
                foreach (var id in userId)
                {
                    CustomUser user = await _dbContext.Users.FindAsync(id);

                    if (!await _customRoleService.IsUserInRoleAsync(user, role))
                    {
                        var userRole = await _customRoleService.ListUserRoleAsync(user);

                        foreach (var roles in userRole)
                        {
                            await _customRoleService.RemoveUserFromRoleAsync(user, roles);
                        }
                        await _customRoleService.AddUserToRoleAsync(user, role);
                    }
                }
                return(View());
            }
            return(RedirectToAction("DemoUser", "Projects"));
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new CustomUser {
                    UserName = Input.Email, Email = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName, CompanyId = _context.Company.FirstOrDefault(c => c.Name == "New User Company").Id
                };

                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    await _roleService.AddUserToRoleAsync(user, Roles.NewUser.ToString());

                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    var admin = await _userManager.FindByEmailAsync("*****@*****.**");

                    WelcomeNotification welcomenotification = new WelcomeNotification
                    {
                        Name        = "Welcome To The Bug Tracker",
                        Description = $"Hello {user.FullName} You have created a new account in my bug tracker service. Your role is New User and you are working at {_context.Company.FirstOrDefault(c => c.Id == user.CompanyId).Name}. Please wait our admin or project manager assign you a higher role in the system. You can contact our staff by the inbox system. My recommendation is to Login as a Demo User, you can see everything my Bug Tracker can do..",
                        Created     = DateTime.Now,
                        SenderId    = (admin).Id,
                        RecipientId = user.Id
                    };
                    await _context.WelcomeNotification.AddAsync(welcomenotification);

                    await _context.SaveChangesAsync();

                    WelcomeNotification welcomenotification2 = new WelcomeNotification
                    {
                        Name        = "New Account have been created",
                        Description = $"A new user have been created on {DateTime.Now} with Full Name is: {user.FullName} and Email is: {user.Email}",
                        Created     = DateTime.Now,
                        SenderId    = (admin).Id,
                        RecipientId = (admin).Id
                    };
                    await _context.WelcomeNotification.AddAsync(welcomenotification2);

                    await _context.SaveChangesAsync();


                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }