private async Task <IActionResult> clientReg(ClientRegistrationVm clientViewModel) { var user = new AppUser { UserName = clientViewModel.UserName, Email = clientViewModel.Email, PhoneNumber = clientViewModel.PhoneNumber ?? "" }; var result = await _userManager.CreateAsync(user, clientViewModel.Password); if (result.Succeeded) { var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Action( action: "ConfirmEmail", controller: "Auth", values: new { userId = user.Id, code }, protocol: Request.Scheme); await _senderService.SendEmail(clientViewModel.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _clientService.InsertAsync(new Client { AppUser = user }); await _userManager.AddToRolesAsync(user, new[] { "client" }); await _signInManager.SignInAsync(user, isPersistent : false); TempData["Notification"] = "Please check your Email on new message"; return(RedirectToAction("Index", "Home")); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = true }; return(View("SignUp", viewModel)); }
public async Task <IActionResult> SignUpClient(ClientRegistrationVm client) { if (!client.AgreedWithTerms) { ModelState.AddModelError(string.Empty, "Accept terms and conditions"); var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = true }; return(View("SignUp", viewModel)); } if (!ModelState.IsValid) { ModelState.AddModelError(string.Empty, "Model state is invalid"); var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = true }; return(View("SignUp", viewModel)); } var phoneCheck = _userManager.Users.Any(item => item.PhoneNumber == client.PhoneNumber); if (phoneCheck) { ModelState.AddModelError(string.Empty, "This Phone is used"); var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = true }; return(View("SignUp", viewModel)); } return(await clientReg(client)); }