<?php
/**
 * Avatar System API
 */

require_once 'config.php';

// Handle both GET and POST (JSON)
$input = json_decode(file_get_contents('php://input'), true) ?: [];
$userId = $_REQUEST['user_id'] ?? $input['user_id'] ?? 0;

if (!$userId) {
    echo json_encode(['ok' => false, 'error' => 'کاربر نامعتبر']);
    exit;
}

// تعداد خرید لازم برای باز کردن هر آواتار
$unlockRequirements = [
    1 => 0,   // پیش‌فرض - همیشه باز
    2 => 1,   // بعد از ۱ خرید
    3 => 2,   // بعد از ۲ خرید
    4 => 3,   // بعد از ۳ خرید
    5 => 5,   // بعد از ۵ خرید
    6 => 7,   // بعد از ۷ خرید
    7 => 10,  // بعد از ۱۰ خرید
    8 => 15,  // بعد از ۱۵ خرید
    9 => 20,  // بعد از ۲۰ خرید
    10 => 30, // بعد از ۳۰ خرید
];

try {
    // گرفتن تعداد خرید کاربر
    $stmt = $pdo->prepare("SELECT total_purchases FROM users WHERE id = ?");
    $stmt->execute([$userId]);
    $totalPurchases = (int)$stmt->fetchColumn();
    
    // گرفتن اطلاعات آواتار کاربر
    $stmt = $pdo->prepare("SELECT * FROM user_avatars WHERE user_id = ?");
    $stmt->execute([$userId]);
    $avatarData = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$avatarData) {
        // ایجاد رکورد پیش‌فرض
        try {
            $stmt = $pdo->prepare("INSERT INTO user_avatars (user_id, current_avatar, unlocked_avatars) VALUES (?, 1, '1')");
            $stmt->execute([$userId]);
        } catch (PDOException $e) {
            // جدول وجود ندارد
        }
        $avatarData = [
            'user_id' => $userId,
            'current_avatar' => 1,
            'unlocked_avatars' => '1',
        ];
    }
} catch (PDOException $e) {
    // اگر جدول وجود ندارد، مقادیر پیش‌فرض
    $totalPurchases = 0;
    $avatarData = [
        'user_id' => $userId,
        'current_avatar' => 1,
        'unlocked_avatars' => '1',
    ];
}

// بررسی و باز کردن آواتارهای جدید
$unlockedAvatars = array_map('intval', explode(',', $avatarData['unlocked_avatars']));
$newlyUnlocked = [];

foreach ($unlockRequirements as $avatarId => $requiredPurchases) {
    if ($totalPurchases >= $requiredPurchases && !in_array($avatarId, $unlockedAvatars)) {
        $unlockedAvatars[] = $avatarId;
        $newlyUnlocked[] = $avatarId;
    }
}

// بروزرسانی اگر آواتار جدیدی باز شد
if (!empty($newlyUnlocked)) {
    sort($unlockedAvatars);
    $stmt = $pdo->prepare("UPDATE user_avatars SET unlocked_avatars = ? WHERE user_id = ?");
    $stmt->execute([implode(',', $unlockedAvatars), $userId]);
}

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['info_avatar_id'])) {
    $avatarId = max(1, min(10, (int)$_GET['info_avatar_id']));
    $required = $unlockRequirements[$avatarId] ?? 0;
    $unlocked = in_array($avatarId, $unlockedAvatars, true);
    echo json_encode(['ok'=>true,'data'=>[
        'avatar_id'=>$avatarId,
        'unlocked'=>$unlocked,
        'required_purchases'=>$required,
        'reward_text'=>getSetting('avatar_reward_text_'.$avatarId, 'متن پاداش این سطح بعداً توسط مدیر مشخص می‌شود.'),
        'reward_code'=>$unlocked ? getSetting('avatar_reward_code_'.$avatarId, '') : ''
    ]], JSON_UNESCAPED_UNICODE);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    echo json_encode([
        'ok' => true,
        'data' => [
            'current_avatar' => (int)$avatarData['current_avatar'],
            'unlocked_avatars' => $unlockedAvatars,
            'total_purchases' => $totalPurchases,
            'newly_unlocked' => $newlyUnlocked,
        ]
    ]);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $avatarId = (int)($input['avatar_id'] ?? 0);
    
    if ($avatarId < 1 || $avatarId > 10) {
        echo json_encode(['ok' => false, 'error' => 'آواتار نامعتبر']);
        exit;
    }
    
    if (!in_array($avatarId, $unlockedAvatars)) {
        echo json_encode(['ok' => false, 'error' => 'این آواتار قفل است']);
        exit;
    }
    
    $stmt = $pdo->prepare("UPDATE user_avatars SET current_avatar = ? WHERE user_id = ?");
    $stmt->execute([$avatarId, $userId]);
    
    echo json_encode(['ok' => true, 'message' => 'آواتار تغییر کرد']);
    exit;
}

