public ActionResult Register() { if (!User.Identity.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } if (User.IsInRole("admin")) { var viewModel = new RegisterViewModel { Roles = GetRoles(UserRole.Admin) }; return(View(viewModel)); } else if (User.IsInRole("staff")) { var viewModel = new TraineeRegisterViewModel { Roles = GetRoles(UserRole.Staff), UserRoleId = Convert.ToInt32(UserRole.Trainee), Deparments = _context.Departments.ToList() }; return(View("TraineeRegister", viewModel)); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); }
public async Task <ActionResult> RegisterForTrainee(TraineeRegisterViewModel model) { if (_context.Users.Any(p => p.UserName == model.UserName)) { this.AddNotification("Sorry, this username is already available", NotificationType.ERROR); return(RedirectToAction("Register")); } var errors = ModelState .Where(x => x.Value.Errors.Count > 0) .Select(x => new { x.Key, x.Value.Errors }) .ToArray(); if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.UserName, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await UserManager.AddToRoleAsync(user.Id, UserRole.Trainee.ToString()); model.TraineeInfo.UserId = user.Id; model.TraineeInfo.DepartmentId = model.DepartmentId; model.TraineeInfo.Department = _context.Departments.SingleOrDefault(p => p.Id == model.DepartmentId); _context.UserInfoes.Add(model.TraineeInfo); _context.SaveChanges(); this.AddNotification("An account has been created!", NotificationType.SUCCESS); return(RedirectToAction("Register", "Account")); } AddErrors(result); } return(RedirectToAction("Register")); }