public async Task <IActionResult> ConfirmEmail(string userId, string token) { if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(token)) { return(NotFound()); } var user = await _userHelper.GetUserByIdAsync(userId); if (user == null) { return(NotFound()); } var result = await _userHelper.ConfirmEmailAsync(user, token); if (!result.Succeeded) { return(NotFound()); } var isInRole = await _userHelper.IsUserInRoleAsync(user, "Customer"); if (!isInRole) { await _userHelper.AddUSerToRoleAsync(user, "Customer"); } var owner = new Owner { Appointments = new List <Appointment>(), Pets = new List <Pet>(), User = user, CreatedBy = user, ModifiedBy = user, CreateDate = DateTime.Now, UpdateDate = DateTime.Now }; await _ownerRepository.CreateAsync(owner); return(View()); }
public async Task <IActionResult> Create(RegisterNewViewModel model) { if (ModelState.IsValid) { var user = new User { Address = model.Address, Email = model.UserName, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, UserName = model.UserName }; var response = await _userHelper.AddUserAsync(user, model.Password); if (response.Succeeded) { var userInDB = await _userHelper.GetUserByEmailAsync(model.UserName); await _userHelper.AddUSerToRoleAsync(userInDB, "Customer"); var creator = await _userHelper.GetUserByEmailAsync(User.Identity.Name); var owner = new Owner { Appointments = new List <Appointment>(), Pets = new List <Pet>(), User = userInDB, CreatedBy = creator, ModifiedBy = creator, CreateDate = DateTime.Now, UpdateDate = DateTime.Now }; await _ownerRepository.CreateAsync(owner); try { var myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(userInDB); var tokenLink = Url.Action("ConfirmEmail", "Account", new { userid = userInDB.Id, token = myToken }, protocol: HttpContext.Request.Scheme); _mailHelper.SendMail(model.UserName, "Email confirmation", $"<h1>Email Confirmation</h1>" + $"To allow the user, " + $"please click in this link:</br></br><a href = \"{tokenLink}\">Confirm Email</a>"); return(RedirectToAction(nameof(Index))); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.ToString()); return(View(model)); } } ModelState.AddModelError(string.Empty, response.Errors.FirstOrDefault().Description); } return(View(model)); }
public async Task <bool> CreateOwnerAsync(OwnerModel ownerModel) { return(await _ownerRepository.CreateAsync(ownerModel)); }