public async Task <IActionResult> DeleteStaff(string id, string returnUrl = null) { IList <ApplicationUser> users = new List <ApplicationUser>(); users = await _userManager.GetUsersInRoleAsync(MasterStrings.StaffRole); if (users.Count > 0) { foreach (var user in users) { if (user.Id == id) { var result = await _userManager.DeleteAsync(user); if (result.Succeeded) { _logger.LogInformation("User account deleted."); return(ControllerHelper.RedirectToLocal(this, "/ManageStaff?successMessage=User deleted.")); } ControllerHelper.AddErrors(this, result); return(ControllerHelper.RedirectToLocal(this, "/ManageStaff?failureMessage=Something went wrong.")); } } } return(ControllerHelper.RedirectToLocal(this, "/ManageStaff?failureMessage=No user found.")); }
public async Task <IActionResult> AddStaff(InputViewModel input, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var user = new ApplicationUser { UserName = input.Email, Email = input.Email, Forename = input.Forename, Surname = input.Surname, Title = input.Title }; var result = await _userManager.CreateAsync(user, input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, 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>."); await _userManager.AddToRoleAsync(user, MasterStrings.StaffRole); return(ControllerHelper.RedirectToLocal(this, "/ManageStaff?successMessage=" + input.Forename + " added.")); } ControllerHelper.AddErrors(this, result); input.FailureMessage = "Something went wrong."; } input.Titles = CustomerTitle.GetTitles(_context.Titles.Where(c => c.Id > 0).OrderBy(x => x.Value).ToList()); return(View(input)); }