<?php
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__ . '/includes/db.php';

$data = json_decode(file_get_contents('php://input'), true);

if (empty($data) || !isset($data['yil']) || !isset($data['ay']) || !isset($data['odendi'])) {
    echo json_encode(['success' => false, 'message' => 'Eksik parametre.']);
    http_response_code(400);
    exit;
}

$yil = (int)$data['yil'];
$ay = (int)$data['ay'];
$odendi = (bool)$data['odendi']; // true veya false gelir

$yil_ay_key = $yil . '-' . str_pad($ay, 2, '0', STR_PAD_LEFT);
$odeme_tarihi = $odendi ? date('Y-m-d H:i:s') : null;

try {
    $conn->beginTransaction();

    // "İşe Gidilmedi" güzergahının ID'sini al
    $iseGidilmediId = null;
    try {
        $stmt_guz = $conn->query("SELECT id FROM guzergahlar WHERE guzergah_adi = 'İşe Gidilmedi'");
        $result_guz = $stmt_guz->fetch(PDO::FETCH_ASSOC);
        if ($result_guz) {
            $iseGidilmediId = $result_guz['id'];
        }
    } catch (PDOException $e) {
        // Hata olursa null kalır
    }

    // 1. O aya ait toplam masrafı hesapla (seyahatler tablosundan)
    // ÖNEMLİ: "İşe Gidilmedi" kayıtları toplama DAHİL EDİLMEZ
    if ($iseGidilmediId) {
        $stmt_sum = $conn->prepare("
            SELECT SUM(ucret) as toplam_ucret
            FROM seyahatler
            WHERE YEAR(tarih) = :yil
            AND MONTH(tarih) = :ay
            AND guzergah_id != :ise_gidilmedi_id
        ");
        $stmt_sum->execute([':yil' => $yil, ':ay' => $ay, ':ise_gidilmedi_id' => $iseGidilmediId]);
    } else {
        $stmt_sum = $conn->prepare("
            SELECT SUM(ucret) as toplam_ucret
            FROM seyahatler
            WHERE YEAR(tarih) = :yil
            AND MONTH(tarih) = :ay
        ");
        $stmt_sum->execute([':yil' => $yil, ':ay' => $ay]);
    }
    $aylik_masraf = $stmt_sum->fetch(PDO::FETCH_ASSOC)['toplam_ucret'] ?? 0;

    // 2. aylik_raporlar tablosuna UPSERT yap
    $sql = "INSERT INTO aylik_raporlar (yil_ay, toplam_tutar, odendi_mi, odeme_tarihi)
            VALUES (:yil_ay, :toplam_tutar, :odendi_mi, :odeme_tarihi)
            ON DUPLICATE KEY UPDATE
            toplam_tutar = VALUES(toplam_tutar),
            odendi_mi = VALUES(odendi_mi),
            odeme_tarihi = VALUES(odeme_tarihi)";

    $stmt = $conn->prepare($sql);
    $stmt->execute([
        ':yil_ay' => $yil_ay_key,
        ':toplam_tutar' => $aylik_masraf,
        ':odendi_mi' => $odendi ? 1 : 0,
        ':odeme_tarihi' => $odeme_tarihi
    ]);

    $conn->commit();
    echo json_encode(['success' => true, 'message' => 'Ödeme durumu başarıyla güncellendi.', 'toplam_tutar' => $aylik_masraf, 'odeme_tarihi' => $odeme_tarihi]);

} catch (Exception $e) {
    $conn->rollBack();
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Ödeme durumu güncellenirken hata oluştu: ' . $e->getMessage()]);
}
