Ejemplo n.º 1
0
        public virtual ActionResult Ekle(KullanıcıModel model, bool düzenlemeyeDevam, FormCollection form)
        {
            if (!_izinServisi.YetkiVer(StandartİzinSağlayıcı.KullanıcılarıYönet))
            {
                return(ErişimEngellendiView());
            }

            if (!String.IsNullOrWhiteSpace(model.Email))
            {
                var user2 = _kullanıcıServisi.KullanıcıAlEmail(model.Email);
                if (user2 != null)
                {
                    ModelState.AddModelError("", "Email zaten kayıtlı");
                }
            }
            if (!String.IsNullOrWhiteSpace(model.KullanıcıAdı) & _kullanıcıAyarları.KullanıcıAdlarıEtkin)
            {
                var user2 = _kullanıcıServisi.KullanıcıAlKullanıcıAdı(model.KullanıcıAdı);
                if (user2 != null)
                {
                    ModelState.AddModelError("", "Kullanıcı adı zaten alındı");
                }
            }

            //kullanıcı rolü doğrula
            var tümKullanıcıRolleri  = _kullanıcıServisi.TümKullanıcıRolleriniAl(true);
            var yeniKullanıcıRolleri = new List <KullanıcıRolü>();

            foreach (var kullanıcıRolü in tümKullanıcıRolleri)
            {
                if (model.SeçiliKullanıcıRolIdleri.Contains(kullanıcıRolü.Id))
                {
                    yeniKullanıcıRolleri.Add(kullanıcıRolü);
                }
            }
            var kullanıcıRolüHatası = KullanıcıRolüDoğrula(yeniKullanıcıRolleri);

            if (!String.IsNullOrEmpty(kullanıcıRolüHatası))
            {
                ModelState.AddModelError("", kullanıcıRolüHatası);
                HataBildirimi(kullanıcıRolüHatası, false);
            }

            //email adresini doğrula
            if (yeniKullanıcıRolleri.Any() && yeniKullanıcıRolleri.FirstOrDefault(c => c.SistemAdı == SistemKullanıcıRolAdları.Kayıtlı) != null && !GenelYardımcı.GeçerliMail(model.Email))
            {
                ModelState.AddModelError("", "Müşterinin 'Kayıtlı' rolü olması için geçerli e-posta gereklidir.");
                HataBildirimi("Müşterinin 'Kayıtlı' rolü olması için geçerli e-posta gereklidir", false);
            }

            //özel kullanıcı özniteliği

            /*
             * var kullanıcıAttributesXml = ParseCustomCustomerAttributes(form);
             * if (newCustomerRoles.Any() && newCustomerRoles.FirstOrDefault(c => c.SystemName == SystemCustomerRoleNames.Registered) != null)
             * {
             *  var kullanıcıAttributeWarnings = _kullanıcıAttributeParser.GetAttributeWarnings(kullanıcıAttributesXml);
             *  foreach (var error in kullanıcıAttributeWarnings)
             *  {
             *      ModelState.AddModelError("", error);
             *  }
             * }
             */
            if (ModelState.IsValid)
            {
                var kullanıcı = new Kullanıcı
                {
                    KullanıcıGuid        = Guid.NewGuid(),
                    Email                = model.Email,
                    KullanıcıAdı         = model.KullanıcıAdı,
                    AdminYorumu          = model.AdminYorumu,
                    Aktif                = model.Aktif,
                    ŞuTarihdeOluşturuldu = DateTime.UtcNow,
                    SonİşlemTarihi       = DateTime.UtcNow,
                    KayıtOlduSiteId      = _siteContext.MevcutSite.Id
                };
                _kullanıcıServisi.KullanıcıEkle(kullanıcı);

                //form alanları
                if (_kullanıcıAyarları.CinsiyetEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Cinsiyet, model.Cinsiyet);
                }
                _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Adı, model.Adı);
                _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Soyadı, model.Soyadı);
                if (_kullanıcıAyarları.DoğumTarihiEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.DoğumTarihi, model.DoğumGünü);
                }
                if (_kullanıcıAyarları.ŞirketEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Şirket, model.Şirket);
                }
                if (_kullanıcıAyarları.SokakAdresiEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.SokakAdresi1, model.SokakAdresi);
                }
                if (_kullanıcıAyarları.SokakAdresi2Etkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.SokakAdresi2, model.SokakAdresi2);
                }
                if (_kullanıcıAyarları.PostaKoduEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.PostaKodu, model.PostaKodu);
                }
                if (_kullanıcıAyarları.ŞehirEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Şehir, model.Şehir);
                }
                if (_kullanıcıAyarları.ÜlkeEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.ÜlkeId, model.ÜlkeId);
                }
                if (_kullanıcıAyarları.TelEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Tel, model.Tel);
                }
                if (_kullanıcıAyarları.FaksEtkin)
                {
                    _genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.Fax, model.Faks);
                }

                //özel kullanıcı öznitelikleri
                //_genelÖznitelikServisi.ÖznitelikKaydet(kullanıcı, SistemKullanıcıÖznitelikAdları.ÖzelKullanıcıÖznitelikleri, kullanıcıÖznitelikXml);


                //abonelik kaydı
                if (!String.IsNullOrEmpty(kullanıcı.Email))
                {
                    var tümSiteler = _siteServisi.TümSiteler();
                    foreach (var site in tümSiteler)
                    {
                        var bültenAboneliği = _bültenAbonelikServisi
                                              .BültenAboneliğiAlEmailVeSiteId(kullanıcı.Email, site.Id);
                        if (model.SeçiliAbonleikKayıtları != null &&
                            model.SeçiliAbonleikKayıtları.Contains(site.Id))
                        {
                            //abone olundu
                            if (bültenAboneliği == null)
                            {
                                _bültenAbonelikServisi.BültenAboneliğiEkle(new BültenAboneliği
                                {
                                    BültenAboneliğiGuid = Guid.NewGuid(),
                                    Email             = kullanıcı.Email,
                                    Aktif             = true,
                                    SiteId            = site.Id,
                                    OluşturulmaTarihi = DateTime.UtcNow
                                });
                            }
                        }
                        else
                        {
                            //abone olunmadı
                            if (bültenAboneliği != null)
                            {
                                _bültenAbonelikServisi.BültenAboneliğiSil(bültenAboneliği);
                            }
                        }
                    }
                }

                //şifre
                if (!String.IsNullOrWhiteSpace(model.Şifre))
                {
                    var şifreİsteğiniDeğiştir = new ŞifreDeğiştirmeİsteği(model.Email, false, _kullanıcıAyarları.VarsayılanŞifreFormatı, model.Şifre);
                    var şifreDeğiştiSonucu    = _kullanıcıKayıtServisi.ŞifreDeğiştir(şifreİsteğiniDeğiştir);
                    if (!şifreDeğiştiSonucu.Başarılı)
                    {
                        foreach (var şifreDeğiştirmeHatası in şifreDeğiştiSonucu.Hatalar)
                        {
                            HataBildirimi(şifreDeğiştirmeHatası);
                        }
                    }
                }

                //kullanıcı rolleri
                foreach (var kullanıcıRolü in yeniKullanıcıRolleri)
                {
                    //Yönetici olmadığından emin ol
                    if (kullanıcıRolü.SistemAdı == SistemKullanıcıRolAdları.Yönetici &&
                        !_workContext.MevcutKullanıcı.Yönetici())
                    {
                        continue;
                    }

                    kullanıcı.KullanıcıRolleri.Add(kullanıcıRolü);
                }
                _kullanıcıServisi.KullanıcıGüncelle(kullanıcı);

                //işlem kaydı
                _kullanıcıİşlemServisi.İşlemEkle("YeniKullanıcı", "Yeni kullanıcı eklendi", kullanıcı.Id);

                BaşarılıBildirimi("Kullanıcı Eklendi");

                if (düzenlemeyeDevam)
                {
                    //seçili tab
                    SeçiliTabKaydet();

                    return(RedirectToAction("Düzenli", new { id = kullanıcı.Id }));
                }
                return(RedirectToAction("Liste"));
            }

            //sorun olduysa form yeniden doldur
            KullanıcıModelHazırla(model, null, true);
            return(View(model));
        }