<?php
require_once __DIR__ . '/../auth_middleware.php'; // JWT doğrulama için
require_once '/home/akgbilis/fi_sf/config.php';

header('Content-Type: application/json');

// POST body'den combine_id al
$data = json_decode(file_get_contents("php://input"), true);
$combineId = $data['combine_id'] ?? null;

if (!$combineId) {
    http_response_code(400);
    echo json_encode(["error" => "Kupon ID gerekli"]);
    exit;
}

$userId = $decoded->sub;

// 1. Kuponun VIP olup olmadığını ve fiyatını kontrol et
$stmt = $pdo->prepare("SELECT type, price FROM combines WHERE id = ?");
$stmt->execute([$combineId]);
$combine = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$combine || strtolower($combine['type']) !== 'vip') {
    http_response_code(403);
    echo json_encode(["error" => "Bu kupon VIP değil veya bulunamadı."]);
    exit;
}

$price = (int)$combine['price'];

// 2. Zaten satın alınmış mı kontrol et
$stmt = $pdo->prepare("SELECT COUNT(*) FROM combine_purchases WHERE user_id = ? AND combine_id = ?");
$stmt->execute([$userId, $combineId]);
if ($stmt->fetchColumn() > 0) {
    echo json_encode(["success" => true, "message" => "Bu kuponu zaten satın aldınız."]);
    exit;
}

// 3. Kullanıcının kredisi yeterli mi?
$stmt = $pdo->prepare("SELECT credits FROM users WHERE id = ?");
$stmt->execute([$userId]);
$userCredits = (int)$stmt->fetchColumn();

if ($userCredits < $price) {
    http_response_code(402);
    echo json_encode(["error" => "Yetersiz kredi"]);
    exit;
}

// 4. Kredi düş ve satın alma kaydet
try {
    $pdo->beginTransaction();

    $pdo->prepare("UPDATE users SET credits = credits - ? WHERE id = ?")
        ->execute([$price, $userId]);

    $pdo->prepare("INSERT INTO combine_purchases (user_id, combine_id) VALUES (?, ?)")
        ->execute([$userId, $combineId]);

    $pdo->commit();

    echo json_encode(["success" => true, "message" => "VIP kupon başarıyla satın alındı."]);
} catch (Exception $e) {
    $pdo->rollBack();
    http_response_code(500);
    echo json_encode(["error" => "İşlem sırasında hata oluştu", "details" => $e->getMessage()]);
}