PYBS (Personel Yönetim Bilgi Sistemi) / panels/calisan-panel.php
calisan-panel.php 177 satır • 8.44 KB
<?php
// panels/calisan-panel.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
include '../includes/header.php';
include '../includes/menu.php';

$id = $_SESSION['kullanici_id'];

// --- VERİ HESAPLAMA (BU AY İÇİN) ---
$bu_ay_bas = date('Y-m-01');
$bu_ay_son = date('Y-m-t');

// 1. İzin Hakkı (Yıllık)
$u = $pdo->query("SELECT ise_giris_tarihi, devreden_izin FROM kullanicilar WHERE id = $id")->fetch();
$ise_giris = new DateTime($u['ise_giris_tarihi']);
$kidem_yil = $ise_giris->diff(new DateTime())->y;

// Yasal Hak Hesabı
$hakedilen = ($kidem_yil >= 15) ? 26 : (($kidem_yil >= 5) ? 20 : 14);
if ($_SESSION['rol'] == 'stajyer') { $hakedilen = 0; }
$toplam_hak = $hakedilen + (float)$u['devreden_izin'];

// Kullanılan Yıllık İzin (Sadece Yıllık İzinler Düşer)
$kullanilan = $pdo->query("SELECT SUM(toplam_gun) FROM izin_talepleri WHERE calisan_id = $id AND izin_turu = 'yillik' AND durum = 'onaylandi' AND YEAR(baslangic_tarihi) = YEAR(CURDATE())")->fetchColumn() ?: 0;
$kalan_izin = $toplam_hak - $kullanilan;

// 2. Bu Ayki Mesai Durumu (Onaylı)
$sql_fazla = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'onaylandi' AND mesai_turu = 'fazla_mesai' AND tarih BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";
$aylik_fazla = (float)$pdo->query($sql_fazla)->fetchColumn() ?: 0;

$sql_tatil = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'onaylandi' AND mesai_turu IN ('hafta_tatili', 'resmi_tatil_mesaisi') AND tarih BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";
$aylik_tatil_calisma = (float)$pdo->query($sql_tatil)->fetchColumn() ?: 0;
$aylik_toplam_mesai = $aylik_fazla + $aylik_tatil_calisma;

// 3. Bu Ay Gelmediği Gün/Saat Sayısı
$sql_gelmedigi = "SELECT 
                    SUM(CASE WHEN izin_turu != 'saatlik' THEN toplam_gun ELSE 0 END) as toplam_gun,
                    SUM(CASE WHEN izin_turu = 'saatlik' THEN saatlik_sure ELSE 0 END) as toplam_saat
                  FROM izin_talepleri 
                  WHERE calisan_id = $id 
                  AND durum = 'onaylandi' 
                  AND izin_turu IN ('mazeret', 'hastalik', 'saatlik', 'diger') 
                  AND baslangic_tarihi BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";

$veri_gelmedigi = $pdo->query($sql_gelmedigi)->fetch();
$ham_gun = (float)$veri_gelmedigi['toplam_gun'] ?: 0;
$ham_saat = (float)$veri_gelmedigi['toplam_saat'] ?: 0;

// Saatleri güne çevirme (9 saat = 1 gün kuralı)
$ekstra_gun = floor($ham_saat / 9); // Tam bölünenleri güne ekle
$kalan_saat = $ham_saat % 9; // Kalan saat

$son_gun = $ham_gun + $ekstra_gun;

// Ekrana yazılacak metni oluştur (Örn: 3 Gün 2 Saat)
$gelmedigi_metin = "";
if ($son_gun > 0) {
    $gelmedigi_metin .= (float)$son_gun . " G ";
}
if ($kalan_saat > 0) {
    $gelmedigi_metin .= (float)$kalan_saat . " S";
}
if ($gelmedigi_metin == "") {
    $gelmedigi_metin = "0 Gün";
}

// 4. Onay Bekleyenler
$bekleyen_izin = $pdo->query("SELECT COUNT(*) FROM izin_talepleri WHERE calisan_id = $id AND durum = 'beklemede'")->fetchColumn();
$bekleyen_mesai = $pdo->query("SELECT COUNT(*) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'beklemede'")->fetchColumn();

// --- EKRAN BAŞLIĞI VE TARİH ---
$bu_ay_adi = date('F', strtotime($bu_ay_bas));
$aylar_tr = ['January' => 'Ocak', 'February' => 'Şubat', 'March' => 'Mart', 'April' => 'Nisan', 'May' => 'Mayıs', 'June' => 'Haziran', 'July' => 'Temmuz', 'August' => 'Ağustos', 'September' => 'Eylül', 'October' => 'Ekim', 'November' => 'Kasım', 'December' => 'Aralık'];
$bu_ay_tr = $aylar_tr[$bu_ay_adi];
?>

<div class="container-fluid">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h3 class="m-0"><i class="fas fa-tachometer-alt text-primary me-2"></i> Çalışan Paneli</h3>
        <span class="badge bg-secondary fs-6"><?php echo tarihTurkce(date("Y-m-d"), true); ?></span>
    </div>

    <div class="row g-3 mb-4">
        
        <div class="col-12 col-md-6 col-lg-3">
            <div class="card bg-info text-white shadow h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <p class="text-white-50 mb-0">Kalan Yıllık İzin</p>
                            <h2 class="display-5 fw-bold mb-0"><?php echo (float)$kalan_izin; ?></h2>
                        </div>
                        <i class="fas fa-umbrella-beach fa-3x text-white-50"></i>
                    </div>
                    <small class="text-white-50">Gün (Devir dahil)</small>
                </div>
            </div>
        </div>

        <div class="col-12 col-md-6 col-lg-3">
            <div class="card bg-warning text-dark shadow h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <p class="text-dark-50 mb-0">Onay Bekleyen Başvuru</p>
                            <h2 class="display-5 fw-bold mb-0"><?php echo $bekleyen_izin + $bekleyen_mesai; ?></h2>
                        </div>
                        <i class="fas fa-hourglass-half fa-3x text-dark-50"></i>
                    </div>
                    <small class="text-dark-50">
                        <i class="fas fa-file-signature"></i> İzin: <?php echo $bekleyen_izin; ?> | <i class="fas fa-clock"></i> Mesai: <?php echo $bekleyen_mesai; ?>
                    </small>
                </div>
            </div>
        </div>
        
        <div class="col-12 col-lg-6">
            <div class="d-grid gap-3 h-100">
                <a href="../modules/izin-talep.php" class="btn btn-danger btn-lg shadow-sm py-3 fw-bold">
                    <i class="fas fa-paper-plane me-3"></i> İZİN TALEBİ GÖNDER
                </a>
                <a href="../modules/mesai-giris.php" class="btn btn-primary btn-lg shadow-sm py-3 fw-bold">
                    <i class="fas fa-business-time me-3"></i> FAZLA MESAİ GİR
                </a>
            </div>
        </div>
    </div>

    <div class="card-box p-4 shadow">
        <h5 class="mb-3 border-bottom pb-2 text-dark">
            <i class="fas fa-calendar-alt me-2"></i> <?php echo $bu_ay_tr; ?> Ayı Çalışma Özeti
        </h5>
        
        <div class="row g-3">
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-primary text-uppercase fw-bold">Toplam Onaylı Mesai</small>
                    <h4 class="mt-1 fw-bold text-primary mb-0"><?php echo formatSaatListeleme($aylik_toplam_mesai); ?> Saat</h4>
                    <small class="text-muted">(1.5x + 2x Toplamı)</small>
                </div>
            </div>
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-danger text-uppercase fw-bold">Tatil Mesaisi (2x)</small>
                    <h4 class="mt-1 fw-bold text-danger mb-0"><?php echo formatSaatListeleme($aylik_tatil_calisma); ?> Saat</h4>
                    <small class="text-muted">(Pazar/Bayram)</small>
                </div>
            </div>

            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-warning text-uppercase fw-bold">Mazeret/Rapor Devamsızlık</small>
                    <h4 class="mt-1 fw-bold text-dark mb-0"><?php echo $gelmedigi_metin; ?></h4>
                    <small class="text-muted">(Maaşı etkileyen izinler)</small>
                </div>
            </div>
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-success text-uppercase fw-bold">Kıdem Süresi</small>
                    <h4 class="mt-1 fw-bold text-success mb-0"><?php echo $kidem_yil; ?> Yıl</h4>
                    <small class="text-muted">İşe giriş: <?php echo date('d.m.Y', strtotime($u['ise_giris_tarihi'])); ?></small>
                </div>
            </div>
        </div>

        <div class="alert alert-light border mt-3 small text-center text-muted">
            <i class="fas fa-info-circle"></i> Gösterilen tüm saatler ve devamsızlıklar sadece **onaylanmış** kayıtları içermektedir.
        </div>
    </div>
</div>

<?php include '../includes/footer.php'; ?>