<?php
/**
 * Konum: /magaza/ajax-user-actions.php
 * İşlev: Favoriye ekleme/çıkarma ve Fiyat Alarmı kurma/iptal etme AJAX motoru
 */

// Eğer session başlatılmamışsa başlatıyoruz ki kullanıcı id'sine ulaşabilelim
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once 'includes/db.php';

// Tarayıcıya JSON formatında yanıt vereceğimizi bildiriyoruz
header('Content-Type: application/json; charset=utf-8');

// 1. Güvenlik: Sadece giriş yapmış kullanıcılar işlem yapabilir
if (!isset($_SESSION['user_id'])) {
    echo json_encode(['status' => 'error', 'message' => 'Lütfen giriş yapın.']);
    exit;
}

// 2. İşlem: POST isteği ve gerekli veriler gelmiş mi kontrolü
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && isset($_POST['product_id'])) {
    
    $user_id = (int)$_SESSION['user_id'];
    $product_id = (int)$_POST['product_id'];
    $action = $_POST['action']; // 'toggle_fav' veya 'toggle_alert'

    try {
        global $db;

        // --- FAVORİ İŞLEMLERİ ---
        if ($action === 'toggle_fav') {
            // Önce bu ürün kullanıcının favorilerinde zaten var mı diye bakıyoruz
            $check = $db->prepare("SELECT id FROM favorites WHERE user_id = ? AND product_id = ?");
            $check->execute([$user_id, $product_id]);
            
            if ($check->fetch()) {
                // Varsa: Favorilerden Çıkar (Sil)
                $del = $db->prepare("DELETE FROM favorites WHERE user_id = ? AND product_id = ?");
                $del->execute([$user_id, $product_id]);
                echo json_encode(['status' => 'success', 'state' => 'removed']);
            } else {
                // Yoksa: Favorilere Ekle
                $ins = $db->prepare("INSERT INTO favorites (user_id, product_id) VALUES (?, ?)");
                $ins->execute([$user_id, $product_id]);
                echo json_encode(['status' => 'success', 'state' => 'added']);
            }
        } 
        
        // --- FİYAT ALARMI İŞLEMLERİ ---
        elseif ($action === 'toggle_alert') {
            $price = isset($_POST['price']) ? (float)$_POST['price'] : 0;

            // Önce bu ürün için fiyat alarmı kurulmuş mu diye bakıyoruz
            $check = $db->prepare("SELECT id FROM price_alerts WHERE user_id = ? AND product_id = ?");
            $check->execute([$user_id, $product_id]);
            
            if ($check->fetch()) {
                // Varsa: Alarmı İptal Et (Sil)
                $del = $db->prepare("DELETE FROM price_alerts WHERE user_id = ? AND product_id = ?");
                $del->execute([$user_id, $product_id]);
                echo json_encode(['status' => 'success', 'state' => 'removed']);
            } else {
                // Yoksa: Alarm Kur (O anki fiyatı ile birlikte)
                $ins = $db->prepare("INSERT INTO price_alerts (user_id, product_id, alert_price) VALUES (?, ?, ?)");
                $ins->execute([$user_id, $product_id, $price]);
                echo json_encode(['status' => 'success', 'state' => 'added']);
            }
        } 
        
        else {
            echo json_encode(['status' => 'error', 'message' => 'Bilinmeyen işlem türü.']);
        }

    } catch (PDOException $e) {
        // Hata durumunda (Örn: Veritabanı bağlantısı koparsa)
        echo json_encode(['status' => 'error', 'message' => 'Sistemsel bir hata oluştu: ' . $e->getMessage()]);
    }
} else {
    echo json_encode(['status' => 'error', 'message' => 'Geçersiz veya eksik veri gönderimi.']);
}
?>