private async Task <IActionResult> specReg(SpecialistRegistrationVm specialistViewModel) { var user = new AppUser { UserName = specialistViewModel.UserName, Email = specialistViewModel.Email, PhoneNumber = specialistViewModel.PhoneNumber ?? "" }; var result = await _userManager.CreateAsync(user, specialistViewModel.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(specialistViewModel.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _specialistService.InsertAsync(new Specialist { AppUser = user, Name = specialistViewModel.Name, Surname = specialistViewModel.Surname, CityId = specialistViewModel.CityId, DateOfBirth = specialistViewModel.DateOfBirth }); await _userManager.AddToRolesAsync(user, new[] { "specialist" }); await _signInManager.SignInAsync(user, isPersistent : false); 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 = false }; return(View("SignUp", viewModel)); }
public async Task <IActionResult> SpecialistForm() { var specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }; return(PartialView("_SpecialistRegistrationPartial", specialist)); }
public async Task <IActionResult> SignUpSpecialist(SpecialistRegistrationVm specialist) { if (!specialist.AgreedWithTerms) { ModelState.AddModelError(string.Empty, "Accept terms and conditions"); var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = false }; 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 = false }; return(View("SignUp", viewModel)); } var phoneCheck = _userManager.Users.Any(item => item.PhoneNumber == specialist.PhoneNumber); if (phoneCheck) { ModelState.AddModelError(string.Empty, "This Phone is used"); var viewModel = new RegistrationViewModel { Specialist = new SpecialistRegistrationVm { Cities = await _locationService.GetAllCitiesAsync() }, IsClient = false }; return(View("SignUp", viewModel)); } return(await specReg(specialist)); }