示例#1
0
        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));
        }
示例#2
0
        public async Task <IActionResult> SpecialistForm()
        {
            var specialist = new SpecialistRegistrationVm
            {
                Cities = await _locationService.GetAllCitiesAsync()
            };

            return(PartialView("_SpecialistRegistrationPartial", specialist));
        }
示例#3
0
        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));
        }