Esempio n. 1
0
        public BusinessLayerResult <User> LoginUser(LoginViewModel data)
        {
            // Giriş kontrolü
            // Hesap aktive edilmiş mi?
            BusinessLayerResult <User> res = new BusinessLayerResult <User>();

            res.Result = Find(x => x.Username == data.Username && x.Password == data.Password);

            if (res.Result != null)
            {
                //if (!res.Result.IsActive)
                //{
                //    res.AddError(ErrorMessageCode.UserIsNotActive, "Kullanıcı aktifleştirilmemiştir.");
                //    res.AddError(ErrorMessageCode.CheckYourEmail, "Lütfen e-posta adresinizi kontrol ediniz.");
                //}
            }
            else
            {
                res.AddError(ErrorMessageCode.UsernameOrPassWrong, "Kullanıcı adı yada şifre uyuşmuyor.");
            }

            return(res);
        }
        // Data AccessLayerdaki Repository<T(Generic class)> nesnemizi(EvernoteUser) oluşturuyoruz.
        //  private Repository<EvernoteUser> repo_user = new Repository<EvernoteUser>();
        // Kullanıcı kayıt yapmak için yazılmış fonksiyon.
        public BusinessLayerResult <EvernoteUser> RegisterUser(RegisterViewModel data)
        {
            // RegisterViewModel username,email,sifre,resifre -> data.(PROP)

            /*
             *      Yapılacaklar
             * Kullanıcı username kontrolü
             * Kullanıcı eposta kontrolü
             * Kayıt işlemi
             * Aktivasyon e postası gönderimi
             */
            // Kullanıcının yazdığı Username veya Email  data'nın içindeki yani veri tabanının içinde var mı diye kontrol yapıyoruz.
            // Eğer var ise user null olmuyor , yok ise null oluyor buna göre kontrol yapacağız.
            EvernoteUser user = Find(x => x.UserName == data.Username || x.Email == data.Email); // Find -> Repository fonksiyon.
            // Hata mesajları için nesne oluşturuyoruz
            BusinessLayerResult <EvernoteUser> layerResult = new BusinessLayerResult <EvernoteUser>();

            if (user != null) // Eğer kullanıcı var ise
            {
                // Kullanıcı adı veri tabanında mevcut ise yani kullanıcı daha önceden kayıt olmuş
                //yada başka birinin kullanıcı adı ile kayıt olmaya çalışıyor olabilir.
                if (user.UserName == data.Username)
                {
                    //  layerResult.Errors.Add("Kullanıcı Adı kayıtlı.");
                    layerResult.AddError(ErrorMessageCode.UsernameAlreadyExists, "Kullanıcı adı kayıtlı."); // Hata mesajımız.
                }
                // Email veri tabanında mevcut ise yani kullanıcı daha önceden kayıt olmuş
                //yada başka birinin Email'i ile kayıt olmaya çalışıyor olabilir.
                if (user.Email == data.Email)
                {
                    // layerResult.Errors.Add("E-Posta adresi kayıtlı.");
                    layerResult.AddError(ErrorMessageCode.EmailAlreadyExists, "E-posta adresi kayıtlı."); // Hata mesajımız.
                }
            }
            // Kullanıcı yok -> ise register(kayıt olma) yapacağız
            else
            {
                // Ekleme
                int dbResult = base.Insert(new EvernoteUser() // int dbresult tanımlamamızın sebebi eğer kayıt yapılırsa dbresult değeri 1 artıyor ve veri tabanına bakarak eklendiğini anlıyoruz.
                {
                    UserName             = data.Username,
                    Email                = data.Email,
                    ProfileImageFilename = "user.jpg",
                    Password             = data.Password,
                    ActivateGuid         = Guid.NewGuid(), // Rastgele aktivasyon kodu gönderme

                    IsActive = false,                      // aktivasyon kodunu onayladı mı ?
                    IsAdmin  = false,                      // Yönetici mi ?
                });
                if (dbResult > 0)                          // Eğer eklenmiş ise
                {
                    layerResult.Result = Find(x => x.Email == data.Email && x.UserName == data.Username);
                    // TODO : activasyon maili atılacak.
                    // layerResult.Result.ActivateGuid
                    string siteUri     = ConfigHelper.Get <string>("SiteRootUri");
                    string activateUri = $"{siteUri}/Home/UserActivate/{layerResult.Result.ActivateGuid}";
                    string body        = $"Merhaba {layerResult.Result.UserName};<br><br> Kesabınızı aktifleştirmek için <a href =' {activateUri}' " +
                                         $"target='_blank'>tıklayınız.</a>";
                    MailHelper.SendMail(body, layerResult.Result.Email, "MyEvernote Hesap Aktifleştirme", true);
                    // https://support.google.com/accounts/answer/6010255?hl=tr
                }
            }
            return(layerResult);
        }