<?php
/**
 * Admin Deneme Paketi İçin Tekli Denemeleri Getiren AJAX Servisi
 * Konum: /magaza/admin/urunler/ajax_deneme_getir.php
 */

require_once '../../includes/db.php';
require_once '../../includes/functions.php';

// Güvenlik: Sadece adminler bu veriyi çekebilir
adminCheck();

// AJAX isteklerine JSON yanıt döneceğimizi belirtiyoruz
header('Content-Type: application/json; charset=utf-8');

// Sadece POST isteklerini kabul et (Güvenlik)
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['status' => 'error', 'message' => 'Geçersiz istek türü.']);
    exit;
}

try {
    // Gelen filtreleri alalım
    $tur = isset($_POST['tur']) ? trim($_POST['tur']) : '';
    $marka_id = (isset($_POST['marka_id']) && $_POST['marka_id'] !== '') ? (int)$_POST['marka_id'] : 0;
    $arama = isset($_POST['arama']) ? trim($_POST['arama']) : '';
    
    // YENİ EKLENEN TARİH FİLTRELERİ
    $baslangic_tarihi = isset($_POST['baslangic_tarihi']) ? trim($_POST['baslangic_tarihi']) : '';
    $bitis_tarihi = isset($_POST['bitis_tarihi']) ? trim($_POST['bitis_tarihi']) : '';

    // Temel Sorgu: Sadece 'single_exam' (Tekli Denemeler) ve durumu aktif (1) olanları getir
    $where_clauses = ["p.type = 'single_exam'", "p.status = 1", "p.stock_quantity > 0"];
    $params = [];

    if ($tur !== '') {
        $where_clauses[] = "p.exam_type = ?";
        $params[] = $tur;
    }

    if ($marka_id > 0) {
        $where_clauses[] = "p.brand_id = ?";
        $params[] = $marka_id;
    }

    if ($arama !== '') {
        $where_clauses[] = "(p.name LIKE ? OR p.sku LIKE ?)";
        $params[] = "%$arama%";
        $params[] = "%$arama%";
    }

    // Tarih Aralığı Sorguları (Uygulanma Tarihine Göre - exam_date)
    if ($baslangic_tarihi !== '') {
        $where_clauses[] = "p.exam_date >= ?";
        $params[] = $baslangic_tarihi;
    }

    if ($bitis_tarihi !== '') {
        $where_clauses[] = "p.exam_date <= ?";
        $params[] = $bitis_tarihi;
    }

    $where_sql = "WHERE " . implode(" AND ", $where_clauses);

    // Sorguyu Hazırla (YENİ: Joker Kapak ve Logo Zekası Eklendi)
    $sql = "
        SELECT 
            p.id, p.name, p.sku, p.price, p.stock_quantity, p.exam_type, p.exam_publication_date, p.exam_date,
            b.name as brand_name,
            COALESCE(
                (SELECT image_path FROM product_images WHERE product_id = p.id AND is_main = 1 LIMIT 1),
                b.default_cover,
                b.logo
            ) as main_image
        FROM products p
        LEFT JOIN brands b ON p.brand_id = b.id
        $where_sql
        ORDER BY p.exam_date ASC, p.id DESC
        LIMIT 50 -- Performans için maksimum 50 sonuç döndürüyoruz
    ";

    $stmt = $db->prepare($sql);
    $stmt->execute($params);
    $denemeler = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Gelen verileri frontend'in rahat okuyacağı şekle sokalım
    foreach ($denemeler as $key => $deneme) {
        // Eğer hiçbir görsel (ürün resmi, marka kapağı veya marka logosu) yoksa boş atıyoruz ki JS no-image bassın
        if (empty($deneme['main_image'])) {
            $denemeler[$key]['main_image'] = ''; 
        }
        // Tarih formatını güzelleştirelim (Örn: 14.09.2025)
        $denemeler[$key]['formatted_date'] = $deneme['exam_date'] ? date('d.m.Y', strtotime($deneme['exam_date'])) : 'Tarih Yok';
    }

    // Başarılı JSON yanıtı
    echo json_encode([
        'status' => 'success',
        'count' => count($denemeler),
        'data' => $denemeler
    ]);

} catch (PDOException $e) {
    // Veritabanı hatası
    echo json_encode([
        'status' => 'error',
        'message' => 'Sorgu hatası: ' . $e->getMessage()
    ]);
}
?>