public async Task <IActionResult> AddToRole(AddUserToRoleFormModel model)
        {
            var roleExists = await this.roleManager.RoleExistsAsync(model.Role);

            var user = await this.userManager.FindByIdAsync(model.UserId);

            var userExists = user != null;

            if (!roleExists || !userExists)
            {
                ModelState.AddModelError(string.Empty, "User or role does not exists.");
                return(RedirectToAction(nameof(Index)));
            }

            if (!ModelState.IsValid)
            {
                ModelState.AddModelError(string.Empty, "Invalid model state.");
                return(RedirectToAction(nameof(Index)));
            }

            await this.userManager.AddToRoleAsync(user, model.Role);

            // If the profile does not exists create new teacher profile
            if (model.Role == TeacherRole && !usersService.TeacherProfileExists(model.UserId))
            {
                await usersService.CreateTeacherProfile(model.UserId);
            }

            TempData.AddSuccessMessage($"User {user.UserName} successfully added to the {model.Role} role.");
            return(RedirectToAction(nameof(Index)));
        }