Ejemplo n.º 1
0
        public async Task <IActionResult> Register(string type, RegisterViewModel model)
        {
            if (model.IsCompany)
            {
                SetPageContent("uyekayit-sirket");
            }
            else
            {
                SetPageContent("uyekayit");
            }

            if (ModelState.IsValid)
            {
                if (model.IsCompany && model.SelectedUserCategories == null)
                {
                    ModelState.AddModelError("", "En az bir adet hizmet vermek istediğiniz kategori seçmelisiniz.");
                }
                else
                {
                    var user = new User
                    {
                        FullName             = model.FullName,
                        UserName             = model.Email,
                        PhoneNumber          = model.CellPhone,
                        Email                = model.Email,
                        SlugUrl              = GetUniqueSlugUrl(model.FullName),
                        TwoFactorEnabled     = true,
                        PhoneNumberConfirmed = true,
                        LockoutEnabled       = false,
                        CreatedDate          = DateTime.Now
                    };

                    var existsPhoneNumber = _userManager.Users.Any(i => i.PhoneNumber == model.CellPhone);

                    if (!existsPhoneNumber)
                    {
                        var result = await _userManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            await _signInManager.SignInAsync(user, isPersistent : false);

                            _userEngine.AfterRegistration(user.Id, SelectedUserCategories: model.SelectedUserCategories);

                            return(RedirectToRoute("verifycode"));
                        }
                        else if (result.Errors.Any(i => i.Code == "DuplicateUserName"))
                        {
                            var duplicateUserName = result.Errors.FirstOrDefault(i => i.Code == "DuplicateUserName");

                            if (duplicateUserName != null)
                            {
                                duplicateUserName.Description = string.Format("{0} adresli hesap bulunmaktadır!", model.Email);
                            }
                        }

                        AddErrors(result);
                    }
                    else
                    {
                        ModelState.AddModelError("", "Kullandığınız cep telefonu numarası ile birden fazla kayıt yapamazsınız.");
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            model.UserCategories = _projectEngine.GetUserCategories();
            return(View(model));
        }