public async Task <ActionResult> RecoverPassword(string email)
        {
            var userStore   = MemberschipTools.NewUserStore();
            var userManager = new UserManager <ApplicationUser>(userStore);
            var sonuc       = userStore.Context.Set <ApplicationUser>().FirstOrDefault(x => x.Email == email);

            if (sonuc == null)
            {
                ViewBag.sonuc = "Email adresiniz sisteme kayıtlı değil";
                return(View());
            }

            var randomPass = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 6);

            await userStore.SetPasswordHashAsync(sonuc, userManager.PasswordHasher.HashPassword(randomPass));

            await userStore.UpdateAsync(sonuc);

            await userStore.Context.SaveChangesAsync();

            await SiteSettings.SendMail(new MailModel()
            {
                To      = sonuc.Email,
                Subject = "Şifreniz değişti",
                Message = $"Merhaba{sonuc.Name}{sonuc.Surname} <br/> Yeni şifreniz: <b>{randomPass}</b>"
            });

            ViewBag.sonuc = "Email adresine yeni şifreniz gönderilmiştir";
            return(View());
        }
        public async Task <ActionResult> Activation(string code)
        {
            var userStore   = MemberschipTools.NewUserStore();
            var userManager = new UserManager <ApplicationUser>(userStore);
            var sonuc       = userStore.Context.Set <ApplicationUser>().FirstOrDefault(x => x.ActivationCode == code);

            if (sonuc == null)
            {
                ViewBag.sonuc = "Aktivasyon işlemi başarısız";
                return(View());
            }

            sonuc.EmailConfirmed = true;
            await userStore.UpdateAsync(sonuc);

            await userStore.Context.SaveChangesAsync();

            userManager.RemoveFromRole(sonuc.Id, "Passive");
            userManager.AddToRole(sonuc.Id, "User");
            ViewBag.sonuc = $"Merhaba{sonuc.Name} {sonuc.Surname} <br/> Aktivasyon işleminiz başarılı";
            await SiteSettings.SendMail(new MailModel()
            {
                To      = sonuc.Email,
                Message = ViewBag.sonuc.ToString(),
                Subject = "Aktivasyon",
                Bcc     = "[email protected] "
            });

            return(View());
        }
        public async Task <ActionResult> UpdatePassword(ProfilePasswordViewModel model)
        {
            if (model.PasswordModel.NewPassword != model.PasswordModel.NewPasswordConfirm)
            {
                ModelState.AddModelError(string.Empty, "Şifreler uyuşmuyor");

                return(View("Profile", model));
            }
            return(View("Profile", model));

            try
            {
                var userStore = MemberschipTools.NewUserStore();

                var userManager = new UserManager <ApplicationUser>(userStore);
                var user        = userManager.FindById(model.ProfileModel.Id);
                user = userManager.Find(user.UserName, model.ProfileModel.UserName);
                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "Mevcut şifreniz yanlış girilmiştir");
                    return(View(model));
                }

                await userStore.SetPasswordHashAsync(user, userManager.PasswordHasher.HashPassword(model.PasswordModel.OldPassword));

                await userStore.UpdateAsync(user);

                await userStore.Context.SaveChangesAsync();

                HttpContext.GetOwinContext().Authentication.SignOut();

                return(RedirectToAction("Profile"));
            }
            catch (Exception ex)
            {
                ViewBag.sonuc = "Güncelleştirme işleminde bir hatav oluştu" + ex.Message;
                return(View("Profile", model));
            }
        }
        public async Task <ActionResult> Profile(ProfilePasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                var userStore   = MemberschipTools.NewUserStore();
                var userManager = new UserManager <ApplicationUser>(userStore);

                var user = userManager.FindById(model.ProfileModel.Id);

                user.Name    = model.ProfileModel.Name;
                user.Surname = model.ProfileModel.Surname;
                if (user.Email != model.ProfileModel.Email)
                {
                    user.Email = model.ProfileModel.Email;

                    if (HttpContext.User.IsInRole("Admin"))
                    {
                        userManager.RemoveFromRoles(user.Id, "Admin");
                    }
                    else if (HttpContext.User.IsInRole("User"))
                    {
                        userManager.RemoveFromRoles(user.Id, "User");
                    }
                    userManager.AddToRole(user.Id, "Passive");
                    user.ActivationCode = Guid.NewGuid().ToString().Replace("-", "");
                    string siteUrl = Request.Url.Scheme + Uri.SchemeDelimiter + Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

                    await SiteSettings.SendMail(new MailModel
                    {
                        To      = user.Email,
                        Subject = "Şifreniz değişti",
                        Message = $"Merhaba{user.Name}{user.Surname} <br/>Email adresinizi<b>değiştirdiğiniz</b> için hesabınızı aktif etmelisiniz <a href='{siteUrl}/Account/Activation?code={user.ActivationCode}'> Aktivasyon kodu</a>"
                    });
                }

                await userStore.UpdateAsync(user);

                await userStore.Context.SaveChangesAsync();

                var model1 = new ProfilePasswordViewModel()
                {
                    ProfileModel = new ProfileViewModel
                    {
                        Id       = user.Id,
                        Email    = user.Email,
                        Name     = user.Name,
                        Surname  = user.Surname,
                        UserName = user.UserName
                    }
                };
                ViewBag.sonuc = "Bilgileriniz Güncellenmiştir";

                return(View(model1));
            }


            catch (Exception ex)
            {
                ViewBag.sonuc = "Güncelleştirme işleminde bir hatav oluştu" + ex.Message;
                return(View(model));
            }
        }