public async Task <IActionResult> Register(CandidateRegisterModel model) { if (ModelState.IsValid) { var cmd = new RegisterCandidateCommand(model.FirstName, model.LastName, model.Birthday, model.CurrentPosition, model.Note); var result = await _mediator.Send(cmd); if (result.IsFailure) { ModelState.AddModelError("", result.Error); } else { return(RedirectToAction(nameof(CandidateController.Index))); } } return(View(model)); }
public async Task <IActionResult> RegisterCandidate([FromBody] CandidateRegisterModel model) { var userExists = await _userManager.FindByNameAsync(model.UserName); if (userExists != null) { if (!userExists.IsDeleted) { return(StatusCode(StatusCodes.Status500InternalServerError, new { Success = false, Message = "User already exists!" })); } else { return(BadRequest(new { Success = false, Message = "UserName not allowed" })); } } if (string.IsNullOrWhiteSpace(model.UserName)) { return(BadRequest(new { Success = false, Message = "UserName is required" })); } if (string.IsNullOrWhiteSpace(model.Password)) { return(BadRequest(new { Success = false, Message = "Password is required" })); } if (string.IsNullOrWhiteSpace(model.Name)) { return(BadRequest(new { Success = false, Message = "Name is required" })); } User user = new User() { UserName = model.UserName, SecurityStamp = Guid.NewGuid().ToString(), Candidate = new Candidate { Name = model.Name } }; var result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(StatusCode(StatusCodes.Status500InternalServerError, new { Success = false, Message = "User creation failed! Please check user details and try again." })); } if (!await _roleManager.RoleExistsAsync(RoleType.Admin)) { await _roleManager.CreateAsync(new Role(RoleType.Admin)); } if (!await _roleManager.RoleExistsAsync(RoleType.Candidate)) { await _roleManager.CreateAsync(new Role(RoleType.Candidate)); } if (!await _roleManager.RoleExistsAsync(RoleType.Company)) { await _roleManager.CreateAsync(new Role(RoleType.Company)); } await _userManager.AddToRoleAsync(user, RoleType.Candidate); return(Ok(new { Success = true, Message = "User created successfully!" })); }