// Buraya gelen filtre sonuçlarının depolandığı sınıf yapısındaki isimler listeye yazılıyor. private void FiltrelemeSonucGoster(FiltreUygulanmislar filtreUygulanmislar) { if (filtreUygulanmislar != null) { if (filtreUygulanmislar.ad != null) { listBox1.Items.Add(filtreUygulanmislar.ad); FiltrelemeSonucGoster(filtreUygulanmislar.sag); } } }
// İlk uygulanan filtreyse kendisi, bu fonksiyon çalışıyor. Üsttekinin bir kopyası diyebiliriz. private void IngilizceBilenlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) // gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ydil.ToLower().Contains("en")) { filtreUygulanmislar.ad = tumBasvuranlar.ad; filtreUygulanmislar.sag = new FiltreUygulanmislar(); IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmislar.sag); } else { IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmislar); } } } }
// Kendisi ilk uygulanan filtre ise çalışan fonksiyon. private void IsDeneyimiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar) //gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi / 12 >= Convert.ToInt32(mindeneyimTxt.Text)) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag); } else { IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar); } } } }
// Kendisi ilk uygulanan filtre ise çalışan fonksiyon. private void BelirliYasAltiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar) { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (DateTime.Now.Year - tumBasvuranlar.dt.Year < Convert.ToInt32(belirliyasaltiTxt.Text)) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag); } else { BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar); } } } }
// Kendisi ilk uygulanan filtre ise çalışan fonksiyon. private void DeneyimsizlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar) //gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi == 0) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag); } else { DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar); } } } }
// Kendisi ilk uygulanan filtre ise çalışan fonksiyon. private void BirdenFazlaDilBilenler(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) //gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ydil.Length > 3) { filtreUygulanmislar.ad = tumBasvuranlar.ad; filtreUygulanmislar.sag = new FiltreUygulanmislar(); BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmislar.sag); } else { BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmislar); } } } }
/* * Her filtrede if-else if yapılarıyla üstteki nesnelerin null durumuna bakarak filtre uygulanmışların tekrar filtreye tabii tutulması sağlanıyor. * Bunun için ilk uygulanan filtrede tüm başvuranların adının bulunduğu bağlı listedeki isimlere filtre uygulandı sonraki filtrelerde bir önceki * filtrenin kullandığı bağlı listedeki isimler üzerinde filtreleme işlemi uygulanıyor. Son kullanılan filtreleme işleminde son bağlı listeye son * isimler giriliyor. Sonrasında o isimler listbox'da gösteriliyor. * */ // Aşağıda ilk sıradaki uygulanacak filtre olduğundan ilkten başka yerde uygulanması imkansız olduğundan bunun diğer varyasyonu yok. private void EnAzLisansFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) //gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.egitimDurumu.enAzLisans == true) { filtreUygulanmislar.ad = tumBasvuranlar.ad; filtreUygulanmislar.sag = new FiltreUygulanmislar(); // null hatası almamak için yapılan atama. Null iken ad'ı eşitleyemiyoruz. EnAzLisansFiltre(tumBasvuranlar.sag, filtreUygulanmislar.sag); } else { // Filtrelenenlerin eklendiği bu yapıya ekleme yapılmadan sonraki başvurana geçileceğinden sağ tarafa geçmiyoruz. EnAzLisansFiltre(tumBasvuranlar.sag, filtreUygulanmislar); } } } }
// En son yapılan filtre hangisiyse, oradaki isimler istenilen sonuçlar olacağı için ona göre kontrol ediliyor. private void HangiFiltrelenmisDegiskeni() { listBox1.Items.Clear(); if (filtreUygulanmislar7 != null) { FiltrelemeSonucGoster(filtreUygulanmislar7); } else if (filtreUygulanmislar6 != null) { FiltrelemeSonucGoster(filtreUygulanmislar6); } else if (filtreUygulanmislar5 != null) { FiltrelemeSonucGoster(filtreUygulanmislar5); } else if (filtreUygulanmislar4 != null) { FiltrelemeSonucGoster(filtreUygulanmislar4); } else if (filtreUygulanmislar3 != null) { FiltrelemeSonucGoster(filtreUygulanmislar3); } else if (filtreUygulanmislar2 != null) { FiltrelemeSonucGoster(filtreUygulanmislar2); } else { FiltrelemeSonucGoster(filtreUygulanmislar1); } // Bellekte çok yer kaplamalarına gerek kalmadı, filtre işlemleri sonuçlandı. Null'a çevriliyor ki diğer filtrelemelere hazır olsun. filtreUygulanmislar1 = null; filtreUygulanmislar2 = null; filtreUygulanmislar3 = null; filtreUygulanmislar4 = null; filtreUygulanmislar5 = null; filtreUygulanmislar6 = null; filtreUygulanmislar7 = null; }
// Kendisi ilk uygulanan filtre değilse kendisinden önceki filtre sonuçlarındaki isimler arasında filtre yapılacağı için bu fonksiyon çalışıyor. private void IngilizceBilenlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar) { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.ydil.ToLower().Contains("en")) { OncekiFiltreUygulanmislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); //null değişken üzerinde eşitleme ataması yapamazsın hatasını önlemek için. IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag); } else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad) // filtre koşulunu sağlamadığı için değil de isim farkından ise... { IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar); // başvuranlarda gezinmeye devam, diğerlerinde gezinme yok. } else // filtre koşulunu sağlamadı adlar aynı, o halde önceki filtre sonucu ve tüm başvuranlarda gezinme devam, diğerinde değil. { IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag); } } } }
// Kendisi ilk uygulanan filtre değilse çalışan fonksiyon. private void BelirliYasAltiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar oncekiFiltreUygulanmislar) { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ad == oncekiFiltreUygulanmislar.ad && DateTime.Now.Year - tumBasvuranlar.dt.Year < Convert.ToInt32(belirliyasaltiTxt.Text)) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, oncekiFiltreUygulanmislar.sag); } else if (tumBasvuranlar.ad != oncekiFiltreUygulanmislar.ad) // Adlar aynı değil, tüm başvuranlarda gezintiye devam { BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar); } else // Adlar aynı koşul sağlanmadı, o zaman sıradaki başvuranlara geçiliyor. { BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar.sag); } } } }
// Kendisi ilk uygulanan filtre değilse çalışan fonksiyon. private void IsDeneyimiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar oncekiFiltreUygulanmislar) { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ad == oncekiFiltreUygulanmislar.ad && tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi / 12 >= Convert.ToInt32(mindeneyimTxt.Text)) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, oncekiFiltreUygulanmislar.sag); } else if (tumBasvuranlar.ad != oncekiFiltreUygulanmislar.ad) // adlar farklıysa gezintiye devam { IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar); } else // Gezinti sonrası aynı ad ama koşul sağlanmıyorsa sonraki başvuranlarla kontrol yapılıyor { IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar.sag); } } } }
// Kendisi ilk uygulanan filtre değilse çalışan fonksiyon. private void DeneyimsizlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar) //gelen filtreuygulanmislar1 { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi == 0) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag); } else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad) // adlar farklıysa aynı olana kadar gezin { DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar); } else // Gezinildi, adlar aynı ama koşul sağlanmadı o zaman hem önceki filtre sonuçları hem de tüm başvuranlarda sonraki şahısa devam. { DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag); } } } }
// Kendisi ilk uygulanacak filtre değilse çalışacak fonksiyon. private void BirdenFazlaDilBilenler(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar) { if (tumBasvuranlar != null) { if (tumBasvuranlar.ad != null) { if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.ydil.Length > 3) { filtreUygulanmamislar.ad = tumBasvuranlar.ad; filtreUygulanmamislar.sag = new FiltreUygulanmislar(); BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag); } else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad) // adlar farklıysa adlar aynı olana kadar gezin { BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar); } else // Gezinildi, adlar aynı ama koşul sağlanmadı o zaman hem önceki filtre sonuçları hem de tüm başvuranlarda sonraki şahısa devam. { BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag); } } } }
// Bütün null kontrollerinin nedeni kendisinden önce yapılan filtreleme var mı diye bakıp onun sonuçları üzerine tekrar filtreleme yapılıyor olması private void Filtrele() { if (secilenfiltrelerListBox.Items.Contains("En az lisans mezunu olanlar")) { filtreUygulanmislar1 = new FiltreUygulanmislar(); EnAzLisansFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } if (secilenfiltrelerListBox.Items.Contains("İngilizce bilenler")) { if (filtreUygulanmislar1 != null) { filtreUygulanmislar2 = new FiltreUygulanmislar(); IngilizceBilenlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar2, filtreUygulanmislar1); } else { filtreUygulanmislar1 = new FiltreUygulanmislar(); IngilizceBilenlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } } if (secilenfiltrelerListBox.Items.Contains("Birden fazla yabancı dil bilenler")) { if (filtreUygulanmislar2 != null) { filtreUygulanmislar3 = new FiltreUygulanmislar(); BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar3, filtreUygulanmislar2); } else if (filtreUygulanmislar1 != null) { filtreUygulanmislar3 = new FiltreUygulanmislar(); BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar3, filtreUygulanmislar1); } else { filtreUygulanmislar1 = new FiltreUygulanmislar(); BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } } if (secilenfiltrelerListBox.Items.Contains("Deneyimsizler")) { if (filtreUygulanmislar3 != null) { filtreUygulanmislar4 = new FiltreUygulanmislar(); DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar3); } else if (filtreUygulanmislar2 != null) { filtreUygulanmislar4 = new FiltreUygulanmislar(); DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar2); } else if (filtreUygulanmislar1 != null) { filtreUygulanmislar4 = new FiltreUygulanmislar(); DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar1); } else { filtreUygulanmislar1 = new FiltreUygulanmislar(); DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } } if (mindeneyimTxt.Text != "") { if (filtreUygulanmislar4 != null) { filtreUygulanmislar5 = new FiltreUygulanmislar(); IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar4); } else if (filtreUygulanmislar3 != null) { filtreUygulanmislar5 = new FiltreUygulanmislar(); IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar3); } else if (filtreUygulanmislar2 != null) { filtreUygulanmislar5 = new FiltreUygulanmislar(); IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar2); } else if (filtreUygulanmislar1 != null) { filtreUygulanmislar5 = new FiltreUygulanmislar(); IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar1); } else { filtreUygulanmislar1 = new FiltreUygulanmislar(); IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } } if (belirliyasaltiTxt.Text != "") { if (filtreUygulanmislar5 != null) { filtreUygulanmislar6 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar5); } else if (filtreUygulanmislar4 != null) { filtreUygulanmislar6 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar4); } else if (filtreUygulanmislar3 != null) { filtreUygulanmislar6 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar3); } else if (filtreUygulanmislar2 != null) { filtreUygulanmislar6 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar2); } else if (filtreUygulanmislar1 != null) { filtreUygulanmislar6 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar1); } else { filtreUygulanmislar1 = new FiltreUygulanmislar(); BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1); } } if (ehliyetTxt.Text != "") { listBox1.Items.Clear(); FiltrelemeIslemi(Başvurular.tumBasvuranlar, 7); //Üstteki fonksiyonda ehliyet filtresinin numarası 7 goto Filtresonubypass; // Ehliyet filtresi sadece tek yapılabiliyor, önceki filtreleme sonuçlarını kontrol etmeye gerek yok. } HangiFiltrelenmisDegiskeni(); Filtresonubypass :; }