<?php
session_start();
include '../config.php';

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

// Kullanıcı kontrolü (Cookie tabanlı - sistemin kullandığı yöntem)
$user_token = $_COOKIE['user_token'] ?? null;

if (empty($user_token)) {
    echo json_encode(['success' => false, 'message' => 'Oturum açmanız gerekiyor']);
    exit;
}

// Kullanıcı bilgilerini çek (token ile)
$userQuery = $db->prepare("SELECT user_id, user_kayit, user_jeton FROM kullanicilar WHERE user_token = ?");
$userQuery->execute([$user_token]);
$user = $userQuery->fetch(PDO::FETCH_ASSOC);

if (!$user) {
    echo json_encode(['success' => false, 'message' => 'Kullanıcı bulunamadı']);
    exit;
}

$user_id = $user['user_id'];
$user_jeton = $user['user_jeton'] ?? 0;
$action = $_POST['action'] ?? '';

// Çark geçmişinden bilgileri al (kullanicilar tablosuna sütun eklemeden)
$historyQuery = $db->prepare("
    SELECT 
        MAX(spin_time) as last_spin,
        COUNT(*) as total_spins,
        SUM(CASE WHEN prize_type = 'jeton' THEN prize_amount ELSE 0 END) as total_won
    FROM cark_gecmis 
    WHERE user_id = ?
");
$historyQuery->execute([$user_id]);
$history = $historyQuery->fetch(PDO::FETCH_ASSOC);

$lastSpinTime = $history['last_spin'] ?? 0;
$totalSpins = $history['total_spins'] ?? 0;

// ============================
// ÇARK DURUMU KONTROLÜ
// ============================
if ($action == 'check_status') {
    $currentTime = time();
    $registrationTime = $user['user_kayit'];
    
    // DURUM BELİRLEME
    $status = '';
    $message = '';
    $canSpin = false;
    $nextSpinTime = 0;
    $remainingTime = 0;
    
    // 1. JETON KONTROLÜ: Sadece 0 jetonlu kullanıcılar çevirebilir
    if ($user_jeton != 0) {
        $status = 'jeton_var';
        $message = 'Jetonunuz olduğu için çarkı çeviremezsiniz. Jetonlarınız bitince çevirebilirsiniz.';
        $canSpin = false;
    } else {
        // Jetonu 0, zaman kontrolü yap
        $canSpinAfterRegistration = ($currentTime - $registrationTime) >= 86400;
        
        if ($lastSpinTime == 0) {
            // İlk çevirme
            if ($canSpinAfterRegistration) {
                $status = 'cevirebilir';
                $message = 'Çarkı çevirebilirsiniz!';
                $canSpin = true;
            } else {
                $status = 'ilk_cevirme_bekle';
                $nextSpinTime = $registrationTime + 86400;
                $remainingTime = $nextSpinTime - $currentTime;
                $message = 'İlk çevirme için kayıt tarihinden 24 saat geçmesi gerekiyor.';
            }
        } else {
            // Sonraki çevirmeler
            $canSpinAfterLastSpin = ($currentTime - $lastSpinTime) >= 86400;
            
            if ($canSpinAfterLastSpin) {
                $status = 'cevirebilir';
                $message = 'Çarkı çevirebilirsiniz!';
                $canSpin = true;
            } else {
                $status = 'zaman_bekle';
                $nextSpinTime = $lastSpinTime + 86400;
                $remainingTime = $nextSpinTime - $currentTime;
                $message = 'Sonraki çark için bekleyin.';
            }
        }
    }
    
    echo json_encode([
        'success' => true,
        'status' => $status, // jeton_var, ilk_cevirme_bekle, zaman_bekle, cevirebilir
        'canSpin' => $canSpin,
        'nextSpinTime' => $nextSpinTime,
        'remainingTime' => max(0, $remainingTime),
        'totalSpins' => $totalSpins,
        'message' => $message,
        'user_jeton' => $user_jeton
    ]);
    exit;
}

// ============================
// ÇARK ÇEVİRME
// ============================
if ($action == 'spin') {
    $currentTime = time();
    $registrationTime = $user['user_kayit'];
    
    // JETON KONTROLÜ: Sadece 0 jetonlu kullanıcılar çevirebilir
    if ($user_jeton != 0) {
        echo json_encode(['success' => false, 'message' => 'Sadece 0 jetonlu kullanıcılar çarkı çevirebilir']);
        exit;
    }
    
    // Çevirme hakkı kontrolü (aynı kontroller)
    if ($lastSpinTime == 0) {
        $canSpin = ($currentTime - $registrationTime) >= 86400;
    } else {
        $canSpin = ($currentTime - $lastSpinTime) >= 86400;
    }
    
    if (!$canSpin) {
        echo json_encode(['success' => false, 'message' => 'Henüz çevirme hakkınız yok']);
        exit;
    }
    
    // ÖDÜL BELİRLEME (Backend'de - Güvenlik)
    $prizes = [
        ['type' => 'jeton', 'amount' => 5, 'label' => '5 Jeton', 'probability' => 90],
        ['type' => 'jeton', 'amount' => 10, 'label' => '10 Jeton', 'probability' => 10],
        ['type' => 'jeton', 'amount' => 15, 'label' => '15 Jeton', 'probability' => 0],
        // Diğerleri çıkmayacak (0% ihtimal)
        ['type' => 'jeton', 'amount' => 100, 'label' => '100 Jeton', 'probability' => 0],
        ['type' => 'jeton', 'amount' => 500, 'label' => '500 Jeton', 'probability' => 0],
        ['type' => 'jeton', 'amount' => 1000, 'label' => '1000 Jeton', 'probability' => 0],
        ['type' => 'arama', 'amount' => 1, 'label' => 'Arama Paketi', 'probability' => 0],
        ['type' => 'onay', 'amount' => 1, 'label' => 'Onay Paketi', 'probability' => 0]
    ];
    
    // İhtimal hesaplama
    $totalProbability = 0;
    foreach ($prizes as $prize) {
        $totalProbability += $prize['probability'];
    }
    
    $rand = mt_rand(0, $totalProbability * 100) / 100;
    $selectedPrize = null;
    $cumulativeProbability = 0;
    
    foreach ($prizes as $prize) {
        $cumulativeProbability += $prize['probability'];
        if ($rand <= $cumulativeProbability && $prize['probability'] > 0) {
            $selectedPrize = $prize;
            break;
        }
    }
    
    // Fallback (hiçbiri seçilmediyse 5 jeton ver)
    if ($selectedPrize === null) {
        $selectedPrize = ['type' => 'jeton', 'amount' => 5, 'label' => '5 Jeton'];
    }
    
    // ÖDÜLÜ KULLANICIYA VER
    try {
        $db->beginTransaction();
        
        // Önce geçmişe kaydet (tek kaynak - single source of truth)
        $insertHistory = $db->prepare("INSERT INTO cark_gecmis (user_id, prize_type, prize_amount, spin_time, ip_address) VALUES (?, ?, ?, ?, ?)");
        $insertHistory->execute([
            $user_id,
            $selectedPrize['type'],
            $selectedPrize['amount'],
            $currentTime,
            $_SERVER['REMOTE_ADDR']
        ]);
        
        // Ödülü kullanıcıya ver
        if ($selectedPrize['type'] == 'jeton') {
            // Jeton ekle
            $updateJeton = $db->prepare("UPDATE kullanicilar SET user_jeton = user_jeton + ? WHERE user_id = ?");
            $updateJeton->execute([$selectedPrize['amount'], $user_id]);
            
        } else if ($selectedPrize['type'] == 'arama') {
            // Arama paketi ver (call_unlock = 1)
            $updateCall = $db->prepare("UPDATE kullanicilar SET user_call_unlock = 1 WHERE user_id = ?");
            $updateCall->execute([$user_id]);
            
        } else if ($selectedPrize['type'] == 'onay') {
            // Onay paketi ver (visitor_unlock = 2)
            $updateVisitor = $db->prepare("UPDATE kullanicilar SET user_visitor_unlock = 2 WHERE user_id = ?");
            $updateVisitor->execute([$user_id]);
        }
        
        $db->commit();
        
        echo json_encode([
            'success' => true,
            'prize' => $selectedPrize,
            'message' => 'Tebrikler! ' . $selectedPrize['label'] . ' kazandınız!',
            'nextSpinTime' => $currentTime + 86400
        ]);
        
    } catch (Exception $e) {
        $db->rollBack();
        echo json_encode(['success' => false, 'message' => 'Bir hata oluştu']);
    }
    
    exit;
}

// Geçersiz istek
echo json_encode(['success' => false, 'message' => 'Geçersiz istek']);
?>

