public async Task <IActionResult> PostUser([FromBody] UserRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _userHelper.GetUserByEmailAsync(request.Email); if (user != null) { return(BadRequest("This Email is already registered.")); } user = new User { Email = request.Email, FirstName = request.FirstName, LastName = request.LastName, PhoneNumber = request.Phone, UserName = request.Email }; var result = await _userHelper.AddUserAsync(user, user.Email); if (result != IdentityResult.Success) { return(BadRequest(result.Errors.FirstOrDefault().Description)); } UserResponse userResponse = await _converterHelper.GetUSerResponseViewModelByEmail(user.Email); var userNew = await _userHelper.GetUserByEmailAsync(request.Email); await _userHelper.AddUserToRoleAsync(user, "Writer"); var myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(userNew); var tokenLink = Url.Action("ConfirmEmail", "Account", new { userid = user.Id, token = myToken }, protocol: HttpContext.Request.Scheme); _mailHelper.SendMail(request.Email, "Prensa Estudiantil - Email confirmation", $"<h1>Prensa Estudiantil - Email Confirmation</h1>" + $"To allow the user, " + $"please click on this link:</br></br><a href = \"{tokenLink}\">Confirm Email</a>"); return(Ok(userResponse)); }