#!/usr/bin/perl
#
# Yönetici şifresini doğru giren kullanıcıların seçimleri doğrultusunda
# raporlar üretir. Kullanıcılar raporlar konusundaki seçimlerini
# rapor_menu.pl programının görüntülediği formda belirtirler. 

#
# Önce bu programı çalıştırmak isteyen kullanıcının bir önceki
# adımda şifreyi dogru girmiş olup olmadığını kontrol etmek lazım.
require "fonksiyonlar.pl";

$cookie = $ENV{'HTTP_COOKIE'};
$yetkili=0;
$yetkili=1 if ($cookie=~ /sifre\=dogru/);

#
# Henüz şifreyi girmemişse şifre giriş sayfasına gönderelim
if ( !$yetkili ) {
   print "Location: /i-kaynak/sifre_sor.html\n\n";
   exit;
}

# Şifreyi doğru girmiş, raporları üretebiliriz.

# Kullanıcının yaptığı seçimlerin belirlenmesi işleri:

$gelen_bilgi = <STDIN>; 
 
# gelen_bilgi içinde SIRALAMA=TARIH_SIRALI&EGITIM=Hepsi&GOREV=Sekreterlik gibi 
# bir satır olmalı.

@ciftler = split("&", $gelen_bilgi);
foreach $cift (@ciftler) {
  # 
  ($alan_adi, $degeri) = split("=", $cift);
  $degeri =~ tr/+/ /;
  $degeri =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $form{$alan_adi} = $degeri;
}

$siralama_tipi = "T";		# Sırala tipini "Tarihe göre" diye kabul et
$siralama_tipi = "I"  if ($form{'SIRALAMA'} eq "ISIM_SIRALI" );

html_baslat();

# Başvuruları sakladığımız çağrışımlı liste dosyasını aç
dbmopen(%BASVURULAR, "basvurular", 0600) or 
                                        hata ("Basvuru dosyası açılamadı!");
# Sıradan tüm kayıtları elden geçir. İstenen şartlara uyan kayıtları bir
# liste içinde topla. Liste tamamlanınca sort deyimiyle kolayca 
# sıralayabilmek için listeye yerleştirirken sıralama tipine uygun olan
# olan alanı kaydın başına ekleyerek yerleştir.

@siralanacak=();
while ( ($anahtar, $dbm_kaydi) = each(%BASVURULAR)) {
    #
    # form_sakla.pl programında yaptığımız paketi çöz
   ($ad_soyad, $cinsiyet, $d_tarihi, $e_posta, $egitim, $son_okul, 
         $meslek, $gorev, $adres1, $adres2, $adres3, $tel, 
          $ip_adresi, $basvuru_tarihi, $basvuru_saati) = 
       unpack ("A30A1A10A40A32A32A32A32A32A32A32A32A16A10A5", $dbm_kaydi);
       ($gun,$ay,$yil) = split("/", $basvuru_tarihi);
       ($saat,$dakika) = split(":", $basvuru_saati);

    #
    # Kayıt isteklere uygun mu?
    if ( ($form{'EGITIM'} ne "Hepsi" ) and ($egitim ne $form{'EGITIM'}) ) {
       next;         # Bu kayit aradigimiz kritere uygun degil
    }
    if ( ($form{'GOREV'} ne "Hepsi" ) and ($gorev ne $form{'GOREV'}) ) {
       next;         # Bu kayit aradigimiz kritere uygun degil
    }
    $siralama_anahtari = $ad_soyad;
    if ($siralama_tipi eq "T" ) {
       $siralama_anahtari = $yil . $ay . $gun . $saat . $dakika;
    }
    $siralanacak_kayit = $siralama_anahtari."-".$anahtar."-".$dbm_kaydi;
    push(@siralanacak, $siralanacak_kayit);    
}

@sirali = sort(@siralanacak);
reverse (@sirali) if ($siralama_tipi eq "T");  # En yeni başvuru en üste 
                                               # gelsin diye.		
#
# Bulunan kayitlari gostermeye basla

$bulunan_kayit_sayisi = @sirali;
if ($bulunan_kayit_sayisi == 0) {
    print "<p>Aradığınız özelliklerde kayıt bulunamadı<p>\n";
    print "<hr>";
    &html_kapat;
    exit;
}
print "<TITLE>CGI AS Insan Kaynakları</TITLE>\n";
print "<center><img src=\"/i_kaynak/logo.gif\">\n";
print "<p><font size=\"+2\"><b>Başvuru Listesi</b></font><br>\n";
print "(Alfabetik Sıralı)" if $siralama_tipi eq "I";
print "(Başvuru Tarihine Göre Sıralı)" if $siralama_tipi eq "T";
print "<br><font size=\"-2\">";

($sn, $dk, $saat, $gun, $ay, $yil) = localtime(); 
$yil  = $yil +1900;	
$ay   = $ay + 1;
$ay   = "0".$ay   if ($ay   < 10);  	# 3. ay 03. ay olsun diye
$gun  = "0".$gun  if ($gun  < 10);  	# ayın 8'i 08'i olsun diye
$saat = "0".$saat if ($saat < 10);  	# ayın 8'i 08'i olsun diye
$dk   = "0".$dk   if ($dk   < 10);  	# ayın 8'i 08'i olsun diye
print "$gun/$ay/$yil $saat:$dk</font><p>\n";

print <<_SON_;
<table width="90%" border="0" cellpadding="1" cellspacing="1">
<tr><td><b>Adı, Soyadı</b></td><td><b>Tarih</b></td>
<td><b>Mesleği</b></td><td><b>İstediği Görev</b></td>
<td><b>Öğrenim Durumu</b></td><td> </td>
</tr>
_SON_

foreach $kayit(@sirali) {
    #
    # İstenen şartları karşılayan tüm kayıtları bir HTML tablosunun
    # satırları olarak düzenlemeliyiz. Başvuru sahibinin adını
    # tıklanabilir bir link olarak görüntüleyeceğiz. Bu link tıklandığında
    # başvurunun ayrıntılarına geçeceğiz. Bunu yapabilmek için
    # her başvurunun linkini o başvuru için "goster.pl" programını 
    # çalıştıracak şekilde düzenlemeliyiz. 
    # Her başvurunun kendi anahtarını goster.pl programına parametre
    # olarak geçirirsek (bunun için GET metodunu kullanabiliriz) sorun
    # kalmayacaktır.
    #
    # Kayıtları silmek için tıklanması gereken linkleri de aynı mantıkla
    # düzenleyebiliriz.
    #
    ($siralama_anahtari, $anahtar, $dbm_kaydi) = split("-", $kayit);
   ($ad_soyad, $cinsiyet, $d_tarihi, $e_posta, $egitim, $son_okul, 
         $meslek, $gorev, $adres1, $adres2, $adres3, $tel, 
          $ip_adresi, $basvuru_tarihi, $basvuru_saati) = 
       unpack ("A30A1A10A40A32A32A32A32A32A32A32A32A16A10A5", $dbm_kaydi);
   
    print "<tr>";
    # 
    # Basvuru sahibinin adı tıklandığında ayrıntıları görüntülenecek
    # olan kaydın anahtarını goster.pl programına GET metoduyla 
    # aktarabiliriz.
    
    # Ayrıntılar yeni bir web sayfasında görünsün ve içindeki bir
    # link tıklanarak kapatılabilsin istiyoruz. Biliyorsunuz bunun
    # çalışabilmesi için yeni pencerenin Javascript ile açılması
    # gerekiyor.
    $java_komutu = "javascript:void(window.open(";
    $java_komutu .= "\'/cgi-bin/i_kaynak/goster.pl?anahtar=";
    $java_komutu .= $anahtar."\',\'yeni\',\'width=500,height=400,menubar=yes";
    $java_komutu .= ",scrollbars=yes,resizable=yes\'))";
 
    print "<td><a href=\"$java_komutu\">$ad_soyad</a></td>";
    print "<td>$gun/$ay/$yil</td>";
    print "<td>$meslek</td>";
    print "<td>$gorev</td>";
    print "<td>$egitim</td>";
    # 
    # Asık surat ikonu tıklandığında silinecek olan kaydın 
    # anahtarını goster.pl programına GET metoduyla aktarabiliriz.
    print "<td><a href=\"/cgi-bin/i_kaynak/sil.pl?anahtar=$anahtar\">";
    print "   <img src=\"/i_kaynak/sil.gif\" border=\"0\" Alt=\"Sil\"></td>\n";
    print "</tr>\n";
}
#
# Bulunan kayıtların görüntülenmesi tamamlandı. sayfanın kalanına ait
# HTML kodunu da yaz ve çık

print <<_SON_;
</table>
<p><a href="/cgi-bin/i_kaynak/rapor_menu.pl">Raporlar Menüsüne dönüş<a>
</center>
</body></html>
_SON_

exit;