<?php
// File: public/miniapp/api/admin_config_update.php
declare(strict_types=1);
require __DIR__.'/config.php';

header('Content-Type: application/json; charset=utf-8');

// بررسی درخواست POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['ok' => false, 'error' => 'Method not allowed'], JSON_UNESCAPED_UNICODE);
    exit;
}

// دریافت داده‌های JSON از بدنه درخواست
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'Invalid JSON'], JSON_UNESCAPED_UNICODE);
    exit;
}

// بررسی initData
$initData = $input['initData'] ?? null;
if (!$initData) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Missing initData'], JSON_UNESCAPED_UNICODE);
    exit;
}

// اعتبارسنجی کاربر از طریق initData
parse_str($initData, $data);
if (!isset($data['user'])) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Invalid initData'], JSON_UNESCAPED_UNICODE);
    exit;
}

$userJson = json_decode($data['user'], true);
if (!is_array($userJson) || !isset($userJson['id'])) {
    http_response_code(401);
    echo json_encode(['ok' => false, 'error' => 'Invalid user data'], JSON_UNESCAPED_UNICODE);
    exit;
}

$user_id = (int)$userJson['id'];

// بررسی ادمین بودن
if (!isAdmin($user_id)) {
    http_response_code(403);
    echo json_encode(['ok' => false, 'error' => 'Only admin allowed'], JSON_UNESCAPED_UNICODE);
    exit;
}

// دریافت داده‌های کانفیگ
$config_id = (int)($input['config_id'] ?? 0);
$title = trim($input['title'] ?? '');
$config_text = trim($input['config_text'] ?? '');
$config_link = trim($input['config_link'] ?? '');

// اعتبارسنجی داده‌ها
if ($config_id <= 0) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'شناسه کانفیگ الزامی است'], JSON_UNESCAPED_UNICODE);
    exit;
}

if (empty($title)) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'عنوان کانفیگ الزامی است'], JSON_UNESCAPED_UNICODE);
    exit;
}

if (empty($config_text) && empty($config_link)) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'متن یا لینک کانفیگ الزامی است'], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    // گرفتن اطلاعات کانفیگ فعلی
    $get_config = $pdo->prepare("SELECT * FROM configs WHERE id = :id LIMIT 1");
    $get_config->execute([':id' => $config_id]);
    $config = $get_config->fetch(PDO::FETCH_ASSOC);
    
    if (!$config) {
        http_response_code(404);
        echo json_encode(['ok' => false, 'error' => 'کانفیگ یافت نشد'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // بررسی اینکه کانفیگ استفاده شده یا نه
    if ((int)$config['is_used'] === 1) {
        http_response_code(400);
        echo json_encode([
            'ok' => false,
            'error' => 'این کانفیگ قبلاً استفاده شده و قابل ویرایش نیست'
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // به‌روزرسانی کانفیگ
    $update_stmt = $pdo->prepare("
        UPDATE configs 
        SET title = :title,
            config_text = :config_text,
            config_link = :config_link
        WHERE id = :id
    ");
    
    $update_stmt->execute([
        ':title' => $title,
        ':config_text' => $config_text ?: null,
        ':config_link' => $config_link ?: null,
        ':id' => $config_id
    ]);
    
    // گرفتن اطلاعات کانفیگ به‌روز شده
    $get_config->execute([':id' => $config_id]);
    $updated_config = $get_config->fetch(PDO::FETCH_ASSOC);
    
    // پاسخ موفقیت‌آمیز
    echo json_encode([
        'ok' => true,
        'message' => 'کانفیگ با موفقیت به‌روزرسانی شد',
        'data' => [
            'config' => $updated_config
        ]
    ], JSON_UNESCAPED_UNICODE);
    
    // ارسال پیام به ادمین در تلگرام
    try {
        $message = "✏️ کانفیگ ویرایش شد\n\n";
        $message .= "📦 پلن: {$config['plan_code']}\n";
        $message .= "📝 عنوان: {$title}\n";
        $message .= "🆔 شناسه: #{$config_id}\n";
        $message .= "👤 توسط: {$userJson['first_name']}";
        
        tg('sendMessage', [
            'chat_id' => $user_id,
            'text' => $message,
            'parse_mode' => 'HTML'
        ]);
    } catch (Exception $e) {
        error_log("Failed to send Telegram notification: " . $e->getMessage());
    }

} catch (PDOException $e) {
    error_log("❌ Error in admin_config_update.php: " . $e->getMessage());
    http_response_code(500);
    echo json_encode([
        'ok' => false,
        'error' => 'خطا در به‌روزرسانی کانفیگ: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}

