<?php
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/includes/db.php';

$yil = isset($_GET['yil']) ? (int)$_GET['yil'] : 0;
$ay = isset($_GET['ay']) ? (int)$_GET['ay'] : 0;

if (!$yil || !$ay) {
    die("Hata: Yıl ve ay parametreleri zorunludur.");
}

$aylar = [
    '01' => 'Ocak', '02' => 'Şubat', '03' => 'Mart', '04' => 'Nisan',
    '05' => 'Mayıs', '06' => 'Haziran', '07' => 'Temmuz', '08' => 'Ağustos',
    '09' => 'Eylül', '10' => 'Ekim', '11' => 'Kasım', '12' => 'Aralık'
];

$ay_str = str_pad($ay, 2, '0', STR_PAD_LEFT);
$ay_adi = $aylar[$ay_str];

try {
    // Seyahat verilerini güzergah adlarıyla birlikte çek
    $stmt = $conn->prepare("
        SELECT
            s.tarih,
            g.guzergah_adi,
            s.ucret,
            s.aciklama
        FROM seyahatler s
        LEFT JOIN guzergahlar g ON s.guzergah_id = g.id
        WHERE YEAR(s.tarih) = :yil AND MONTH(s.tarih) = :ay
        ORDER BY s.tarih ASC
    ");
    $stmt->execute([':yil' => $yil, ':ay' => $ay]);
    $seyahatler = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Aylık toplam ve ödeme durumunu çek
    $stmt2 = $conn->prepare("
        SELECT
            COALESCE(SUM(s.ucret), 0) as toplam_masraf
        FROM seyahatler s
        WHERE YEAR(s.tarih) = :yil AND MONTH(s.tarih) = :ay
    ");
    $stmt2->execute([':yil' => $yil, ':ay' => $ay]);
    $toplam_data = $stmt2->fetch(PDO::FETCH_ASSOC);
    $toplam_masraf = $toplam_data['toplam_masraf'];

    // Ödeme durumunu kontrol et
    $yil_ay = sprintf("%d-%02d", $yil, $ay);
    $stmt3 = $conn->prepare("
        SELECT odendi_mi, odeme_tarihi
        FROM aylik_raporlar
        WHERE yil_ay = :yil_ay
    ");
    $stmt3->execute([':yil_ay' => $yil_ay]);
    $odeme_data = $stmt3->fetch(PDO::FETCH_ASSOC);
    $odendi_mi = $odeme_data ? $odeme_data['odendi_mi'] : 0;
    $odeme_tarihi = $odeme_data ? $odeme_data['odeme_tarihi'] : null;

} catch (PDOException $e) {
    die("Veritabanı hatası: " . $e->getMessage());
}

// Kayıt sayısına göre font boyutunu belirle
$kayit_sayisi = count($seyahatler);
if ($kayit_sayisi > 25) {
    $font_size = '7pt';
    $table_font = '6pt';
    $padding = '3px';
} elseif ($kayit_sayisi > 15) {
    $font_size = '8pt';
    $table_font = '7pt';
    $padding = '4px';
} else {
    $font_size = '9pt';
    $table_font = '8pt';
    $padding = '5px';
}

// PDF oluştur
$mpdf = new \Mpdf\Mpdf([
    'mode' => 'utf-8',
    'format' => 'A4',
    'margin_left' => 10,
    'margin_right' => 10,
    'margin_top' => 10,
    'margin_bottom' => 10,
    'margin_header' => 5,
    'margin_footer' => 5
]);

// HTML içeriği oluştur
$html = '
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        body {
            font-family: DejaVu Sans, sans-serif;
            font-size: ' . $font_size . ';
        }
        .header {
            text-align: center;
            margin-bottom: 8px;
            border-bottom: 2px solid #333;
            padding-bottom: 5px;
        }
        .header h1 {
            margin: 0;
            color: #2c3e50;
            font-size: 14pt;
        }
        .header h2 {
            margin: 3px 0 0 0;
            color: #7f8c8d;
            font-size: 10pt;
            font-weight: normal;
        }
        .info-box {
            background-color: #ecf0f1;
            padding: 5px 8px;
            margin-bottom: 8px;
            border-radius: 3px;
        }
        .info-box table {
            width: 100%;
        }
        .info-box td {
            padding: 2px 5px;
            font-size: ' . $font_size . ';
        }
        .info-box .label {
            font-weight: bold;
            width: 130px;
        }
        table.data-table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 8px;
        }
        table.data-table th {
            background-color: #34495e;
            color: white;
            padding: ' . $padding . ';
            text-align: left;
            font-size: ' . $table_font . ';
        }
        table.data-table td {
            border: 1px solid #bdc3c7;
            padding: ' . $padding . ';
            font-size: ' . $table_font . ';
            line-height: 1.2;
        }
        table.data-table tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        .total-box {
            background-color: #2c3e50;
            color: white;
            padding: 8px;
            text-align: center;
            border-radius: 3px;
            margin-top: 8px;
        }
        .total-box h3 {
            margin: 0 0 3px 0;
            font-size: 9pt;
        }
        .total-box .amount {
            font-size: 13pt;
            font-weight: bold;
        }
        .status-box {
            text-align: center;
            padding: 6px;
            margin-top: 6px;
            border-radius: 3px;
            font-size: ' . $font_size . ';
        }
        .status-paid {
            background-color: #27ae60;
            color: white;
        }
        .status-pending {
            background-color: #f39c12;
            color: white;
        }
        .footer {
            margin-top: 8px;
            text-align: center;
            font-size: 7pt;
            color: #7f8c8d;
            border-top: 1px solid #bdc3c7;
            padding-top: 5px;
        }
        .text-right {
            text-align: right;
        }
        .text-center {
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="header">
        <h1>AYLIK YOL MASRAF RAPORU</h1>
        <h2>' . $ay_adi . ' ' . $yil . '</h2>
    </div>

    <div class="info-box">
        <table>
            <tr>
                <td class="label">Rapor Tarihi:</td>
                <td>' . date("d.m.Y H:i") . '</td>
                <td class="label">Dönem:</td>
                <td>' . $ay_adi . ' ' . $yil . '</td>
            </tr>
            <tr>
                <td class="label">Toplam Kayıt Sayısı:</td>
                <td>' . count($seyahatler) . '</td>
                <td class="label">Ödeme Durumu:</td>
                <td><strong>' . ($odendi_mi ? 'ÖDENDİ' : 'BEKLİYOR') . '</strong></td>
            </tr>';

if ($odendi_mi && $odeme_tarihi) {
    $html .= '
            <tr>
                <td class="label">Ödeme Tarihi:</td>
                <td colspan="3">' . date("d.m.Y", strtotime($odeme_tarihi)) . '</td>
            </tr>';
}

$html .= '
        </table>
    </div>

    <table class="data-table">
        <thead>
            <tr>
                <th width="10%">Tarih</th>
                <th width="30%">Durum / Güzergah</th>
                <th width="15%" class="text-right">Ücret (TL)</th>
                <th width="45%">Açıklama</th>
            </tr>
        </thead>
        <tbody>';

if (count($seyahatler) > 0) {
    foreach ($seyahatler as $seyahat) {
        $tarih = date("d.m.Y", strtotime($seyahat['tarih']));
        $guzergah = htmlspecialchars($seyahat['guzergah_adi'] ?? 'Belirtilmemiş');
        $ucret = number_format($seyahat['ucret'], 2, ',', '.');
        $aciklama = htmlspecialchars($seyahat['aciklama'] ?? '-');

        $html .= '
            <tr>
                <td>' . $tarih . '</td>
                <td>' . $guzergah . '</td>
                <td class="text-right">' . $ucret . '</td>
                <td>' . $aciklama . '</td>
            </tr>';
    }
} else {
    $html .= '
            <tr>
                <td colspan="4" class="text-center" style="padding: 20px; color: #7f8c8d;">
                    Bu ay için kayıtlı seyahat bulunmamaktadır.
                </td>
            </tr>';
}

$html .= '
        </tbody>
    </table>

    <div class="total-box">
        <h3>TOPLAM MASRAF</h3>
        <div class="amount">' . number_format($toplam_masraf, 2, ',', '.') . ' TL</div>
    </div>

    <div class="status-box ' . ($odendi_mi ? 'status-paid' : 'status-pending') . '">
        <strong>' . ($odendi_mi ? '✓ ÖDEME YAPILDI' : '⏳ ÖDEME BEKLİYOR') . '</strong>
    </div>

    <div class="footer">
        Bu rapor otomatik olarak oluşturulmuştur. | Yol Masraf Takip Sistemi
    </div>
</body>
</html>';

// PDF'i oluştur ve indir
$mpdf->WriteHTML($html);

$dosya_adi = "Yol_Masraf_Raporu_" . $ay_adi . "_" . $yil . ".pdf";
$mpdf->Output($dosya_adi, 'D'); // 'D' = Download
?>
