<?php
// modules/tum-izinler-rapor.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
yetkiKontrol(['root', 'yonetici', 'mudur', 'vardiya_amiri', 'muhasebe', 'insan_kaynaklari']);
// --- PARAMETRELER ---
$format = $_GET['format'] ?? 'print';
$kullanici_id = $_SESSION['kullanici_id'];
$rol = $_SESSION['rol'];
$yuksek_yetki = in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari']);
// Filtre Değerleri
$filtre_durum = $_GET['filtre'] ?? 'aktif';
$filtre_personel_id = isset($_GET['personel_id']) ? (int)$_GET['personel_id'] : 0;
$secilen_yil = $_GET['yil'] ?? date('Y');
$secilen_ay = $_GET['ay'] ?? date('m');
date_default_timezone_set('Europe/Istanbul');
$rapor_tarihi_saati = date('d.m.Y H:i');
$ay_isimleri = ['01'=>'OCAK','02'=>'ŞUBAT','03'=>'MART','04'=>'NİSAN','05'=>'MAYIS','06'=>'HAZİRAN','07'=>'TEMMUZ','08'=>'AĞUSTOS','09'=>'EYLÜL','10'=>'EKİM','11'=>'KASIM','12'=>'ARALIK'];
// --- BAŞLIK OLUŞTURMA ---
$baslik_ek = "";
$donem_ek = "";
// Personel İsmi
if ($filtre_personel_id > 0) {
$stmt_p = $pdo->prepare("SELECT ad, soyad FROM kullanicilar WHERE id = ?");
$stmt_p->execute([$filtre_personel_id]);
$p_bilgi = $stmt_p->fetch();
if($p_bilgi) $baslik_ek = $p_bilgi['ad'] . " " . $p_bilgi['soyad'] . " - ";
}
// Dönem Bilgisi
if ($filtre_durum == 'aktif') {
$donem_ek = " (" . $ay_isimleri[date('m')] . " " . date('Y') . ")";
} elseif ($filtre_durum == 'tarih') {
$donem_ek = " (" . $ay_isimleri[sprintf('%02d', $secilen_ay)] . " " . $secilen_yil . ")";
} else {
$donem_ek = " (TÜM GEÇMİŞ)";
}
$rapor_basligi = $baslik_ek . "PERSONEL İZİN RAPORU" . $donem_ek;
// --- SQL SORGUSU ---
$sql = "SELECT i.*, k.ad, k.soyad, k.rol as k_rol, k.tc_no,
o.ad as o_ad, o.soyad as o_soyad,
y.ad as y_ad, y.soyad as y_soyad
FROM izin_talepleri i
JOIN kullanicilar k ON i.calisan_id = k.id
LEFT JOIN kullanicilar o ON i.onaylayan_id = o.id
LEFT JOIN kullanicilar y ON i.hedef_yonetici_id = y.id
WHERE 1=1 ";
$params = [];
// 1. Yetki
if (!$yuksek_yetki) {
$sql .= " AND i.hedef_yonetici_id = :hid ";
$params[':hid'] = $kullanici_id;
}
// 2. Personel Filtresi
if ($filtre_personel_id > 0) {
$sql .= " AND i.calisan_id = :pid ";
$params[':pid'] = $filtre_personel_id;
}
// 3. Tarih Filtresi
if ($filtre_durum == 'aktif') {
$sql .= " AND YEAR(i.baslangic_tarihi) = YEAR(CURDATE()) AND MONTH(i.baslangic_tarihi) = MONTH(CURDATE())";
} elseif ($filtre_durum == 'tarih') {
$sql .= " AND YEAR(i.baslangic_tarihi) = :yil AND MONTH(i.baslangic_tarihi) = :ay";
$params[':yil'] = $secilen_yil;
$params[':ay'] = $secilen_ay;
}
$sql .= " ORDER BY i.baslangic_tarihi DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$izinler = $stmt->fetchAll();
// --- EXCEL ---
if ($format == 'excel') {
$dosya_adi = "Izin_" . ($filtre_personel_id > 0 ? "Personel_" : "") . date('Y-m-d') . ".xls";
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=$dosya_adi");
echo "\xEF\xBB\xBF";
?>
<table border="1">
<thead>
<tr style="background:#eee;">
<th>Personel</th><th>TC No</th><th>İzin Türü</th><th>Başlangıç</th><th>Bitiş</th><th>Süre</th><th>Açıklama</th><th>Durum</th><th>İşlem Yapan / Yönetici</th>
</tr>
</thead>
<tbody>
<?php foreach ($izinler as $row):
$sure = ($row['izin_turu'] == 'saatlik' || $row['izin_turu'] == 'sut_izni' || $row['izin_turu'] == 'mesaiye_gelmedi') ? $row['saatlik_sure'] . ' Saat' : floatval($row['toplam_gun']) . ' Gün';
$islem_yapan = ($row['durum']=='beklemede') ? $row['y_ad'].' '.$row['y_soyad'].' (Bekliyor)' : $row['o_ad'].' '.$row['o_soyad'];
?>
<tr>
<td><?php echo $row['ad'] . ' ' . $row['soyad']; ?></td>
<td><?php echo $row['tc_no']; ?></td>
<td><?php echo strtoupper($row['izin_turu']); ?></td>
<td><?php echo date('d.m.Y H:i', strtotime($row['baslangic_tarihi'])); ?></td>
<td><?php echo date('d.m.Y H:i', strtotime($row['bitis_tarihi'])); ?></td>
<td><?php echo $sure; ?></td>
<td><?php echo $row['aciklama']; ?></td>
<td><?php echo strtoupper($row['durum']); ?></td>
<td><?php echo $islem_yapan; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php exit;
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>İzin Raporu</title>
<style>
body { font-family: sans-serif; font-size: 11px; padding: 20px; }
.antet { border-bottom: 2px solid #333; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
th, td { border: 1px solid #ccc; padding: 6px; text-align: left; }
th { background: #f2f2f2; }
@media print { .no-print { display: none; } }
</style>
</head>
<body>
<div class="no-print" style="text-align: right; margin-bottom:10px;">
<button onclick="window.print()" style="padding: 5px 15px; font-weight:bold;">Yazdır / PDF</button>
</div>
<div class="antet">
<img src="../assets/img/logo.png" height="50" alt="Logo">
<div style="text-align:right;">
<h3 style="margin:0;"><?php echo $rapor_basligi; ?></h3>
<small>Oluşturulma: <?php echo $rapor_tarihi_saati; ?></small>
</div>
</div>
<table>
<thead>
<tr>
<th>Personel</th><th>Tür</th><th>Başlangıç</th><th>Bitiş</th><th>Süre</th><th>Açıklama</th><th>Durum</th><th>İşlem Yapan</th>
</tr>
</thead>
<tbody>
<?php foreach ($izinler as $row):
$sure = ($row['izin_turu'] == 'saatlik' || $row['izin_turu'] == 'sut_izni') ? $row['saatlik_sure'] . ' Saat' : floatval($row['toplam_gun']) . ' Gün';
$islem_yapan = ($row['durum']=='beklemede') ? $row['y_ad'].' '.$row['y_soyad'] : $row['o_ad'].' '.$row['o_soyad'];
?>
<tr>
<td><?php echo $row['ad'] . ' ' . $row['soyad']; ?></td>
<td><?php echo strtoupper($row['izin_turu']); ?></td>
<td><?php echo date('d.m.Y H:i', strtotime($row['baslangic_tarihi'])); ?></td>
<td><?php echo date('d.m.Y H:i', strtotime($row['bitis_tarihi'])); ?></td>
<td><?php echo $sure; ?></td>
<td><?php echo $row['aciklama']; ?></td>
<td><?php echo strtoupper($row['durum']); ?></td>
<td style="font-size:10px;"><?php echo $islem_yapan; ?></td>
</tr>
<?php endforeach; ?>
<?php if(empty($izinler)): ?>
<tr><td colspan="8" style="text-align:center; padding:20px;">Kayıt bulunamadı.</td></tr>
<?php endif; ?>
</tbody>
</table>
</body>
</html>