public ActionResult KullaniciSil(int id = 0)
 {
     if (!_userJWTInfo.UserNullOrEmpty())
     {
         var kullanici = _firmalarService.GetByID(id);
         if (kullanici == null)
         {
             return(Ok(new { Error = "Lütfen teknik destek ile iletişime geçiniz. 'Kayıt bulunamadı.'" }));
         }
         //if (firma == 0) BURASI PROGRAMLANACAK. BAĞLI KAYITLAR.
         //{
         //    var altHizmetKategoriler = await _context.HizmetKategorilers.FirstOrDefaultAsync(a => a.BagliOlduguHizmetID == id && a.Aktif == true);
         //    if (altHizmetKategoriler != null) return Ok(new { Error = "Alt kategorisi olan bir kayıt silinemez." });
         //}
         kullanici.Aktif           = false;
         kullanici.DuzenleyenId    = _userJWTInfo.GetInfo().id;
         kullanici.DuzenlemeTarihi = DateTime.Now;
         _firmalarService.Update(kullanici);
         return(Ok(new { MessageType = 1, Message = "İşlem başarıyla tamamlandı." }));
     }
     else
     {
         return(Ok(new { Error = "Lütfen teknik destek ile iletişime geçiniz. 'Kullanıcı bilgileri session sorunu.'" }));
     }
 }
        public IActionResult GetToken([FromBody] Employee model)
        {
            var firmaFind = _firmaService.Authorize(model.UserName, Encrypt.MD5Encrypt(model.Password));

            if (firmaFind.Item1 == "1")
            {
                string secretSection = Configuration.GetSection("AppSettings").GetSection("Secret").Value;
                string token         = GenerateToken.Generate(new TokenDescriptor
                {
                    Claims = new Claim[]
                    {
                        new Claim("id", firmaFind.Item2.FirmaID.ToString()),
                        new Claim("userName", firmaFind.Item2.FirmaKisaAd),
                        new Claim("role", firmaFind.Item2.Rol),
                        new Claim("email", firmaFind.Item2.Eposta),
                    },
                    ExpiresValue = DateTime.UtcNow.AddDays(1),
                    Secret       = secretSection
                });

                firmaFind.Item2.SonGirisTarihi = DateTime.Now;
                _firmaService.Update(firmaFind.Item2);

                return(new JsonResult(new
                {
                    Token = token,
                    Role = firmaFind.Item2.Rol,
                    UserNameSurname = firmaFind.Item2.FirmaAd,
                    DisDerinligiSayisi = firmaFind.Item2.DisDerinligiSayisi,
                }));
            }
            else if (firmaFind.Item1 == "2")
            {
                return(new JsonResult(new
                {
                    Token = "",
                    Message = firmaFind.Item2.Rol + " hesabıyla giriş yapmaya çalışıyorsunuz. Lütfen " + firmaFind.Item2.Rol + " kullanıcısı bilgileriyle giriş yapmayı deneyin."
                }));
            }
            else if (firmaFind.Item1 == "3")
            {
                return(new JsonResult(new
                {
                    Token = "",
                    Message = "Üyeliğiniz pasif durumda gözükmektedir. Lütfen iletişime geçiniz."
                }));
            }
            else
            {
                return(new JsonResult(new
                {
                    Token = "",
                    Message = "Kullanıcı adı (mail adresi) ya da şifrenizi kontrol edip, tekrar deneyin."
                }));
            }
        }
        public ActionResult FirmaGuncelle(FirmaGuncelleModel model)
        {
            if (!ModelState.IsValid)
            {
                IEnumerable <ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);
                return(Ok(allErrors));
            }
            if (!_userJWTInfo.UserNullOrEmpty())
            {
                var firma = _firmalarService.GetByID(model.FirmaID);
                if (firma == null)
                {
                    return(Ok(new { Error = "Lütfen teknik destek ile iletişime geçiniz. 'Firma bulunamadı.'" }));
                }

                bool isletmeFirmaSube = false;
                if (model.Rol == Role._Isletme || model.Rol == Role._Firma || model.Rol == Role._Sube)
                {
                    var benzerKayit = _firmalarService.Get(a => (a.Aktif == true) && (a.FirmaID != model.FirmaID) &&
                                                           (a.FirmaAd == model.FirmaAd || a.VergiTCNo == model.VergiTCNo));
                    if (benzerKayit != null)
                    {
                        return(Ok(new { Error = "Benzer kayıt bulundu. Lütfen farkli bir firma adı ya da vergi numarası kullanın." }));
                    }
                    isletmeFirmaSube = true;
                }
                else
                {
                    var benzerKayit = _firmalarService.Get(a => (a.Aktif == true) && (a.FirmaID != model.FirmaID) &&
                                                           (a.FirmaAd == model.FirmaAd || a.FirmaKisaAd == model.FirmaKisaAd || a.VergiTCNo == model.VergiTCNo));
                    if (benzerKayit != null)
                    {
                        return(Ok(new { Error = "Benzer kayıt bulundu. Lütfen farkli bir firma adı, firma kısa kodu ya da vergi numarası kullanın." }));
                    }
                }


                firma.Adres         = model.Adres;
                firma.BagliOlduguID = model.BagliOlduguID;
                firma.Eposta        = model.Eposta;
                firma.FaturaAdresi  = model.FaturaAdresi;
                firma.FirmaAd       = model.FirmaAd;
                //firma.FirmaKisaAd = isletmeFirmaSube ? "" : model.FirmaKisaAd;
                firma.FirmaKisaAd = model.FirmaKisaAd;
                if (model.Sifre != "" && model.Sifre != null)
                {
                    firma.Sifre = Encrypt.MD5Encrypt(model.Sifre);
                }
                firma.PsiBar             = model.PsiBar;
                firma.DisDerinligiSayisi = model.DisDerinligiSayisi;
                firma.Rol             = model.Rol;
                firma.TelefonNumarasi = model.TelefonNumarasi;
                firma.VergiTCNo       = model.VergiTCNo;
                firma.KayitTarihi     = model.KayitTarihi;
                firma.ParaBirimID     = model.ParaBirimID;
                //
                firma.KullaniciGorevi  = model.KullaniciGorevi;
                firma.KullaniciKisaKod = model.KullaniciKisaKod;
                //
                firma.YetkiliKisi = model.YetkiliKisi;
                //
                firma.ListeAktiflik = model.ListeAktiflik;

                firma.DuzenleyenId    = _userJWTInfo.GetInfo().id;
                firma.DuzenlemeTarihi = model.DuzenlemeTarihi;

                _firmalarService.Update(firma);

                // Eğer ki işletmenin, firmanın ya da şubenin alt kullanıcıları varsa bazı alanları ortak olmalıdır. Örneğin para birimi gibi, işte bu kodlarla bunun güncellemesini yapıyoruz.
                string kullaniciRolBelirle = "";
                if (firma.Rol == Role._Isletme)
                {
                    kullaniciRolBelirle = Role.IsletmeKullanicisi;
                }
                else if (firma.Rol == Role._Firma)
                {
                    kullaniciRolBelirle = Role.FirmaKullanicisi;
                }
                else if (firma.Rol == Role._Sube)
                {
                    kullaniciRolBelirle = Role.SubeKullanicisi;
                }

                if (kullaniciRolBelirle != "")
                {
                    var firmaninAltKullanicilari = _firmalarService.GetAll(a => a.BagliOlduguID == firma.FirmaID && a.Rol == kullaniciRolBelirle);
                    foreach (var item in firmaninAltKullanicilari)
                    {
                        item.Adres              = firma.Adres;
                        item.FaturaAdresi       = firma.FaturaAdresi;
                        item.PsiBar             = firma.PsiBar;
                        item.ParaBirimID        = firma.ParaBirimID;
                        item.DisDerinligiSayisi = firma.DisDerinligiSayisi;
                        _firmalarService.Update(item);
                    }
                }
                //

                return(Ok(new { MessageType = 1, Message = "İşlem başarıyla tamamlandı. ✓" }));
            }
            else
            {
                return(Ok(new { Error = "Lütfen teknik destek ile iletişime geçiniz. 'Kullanıcı bilgileri session sorunu.'" }));
            }
        }