<?php
// File: public/miniapp/api/admin_config_add.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;
}

// دریافت داده‌های کانفیگ - 🔧 یکسان‌سازی plan_code
$plan_code = strtoupper(trim($input['plan_code'] ?? ''));  // همیشه uppercase
$title = trim($input['title'] ?? '');
$config_text = trim($input['config_text'] ?? '');
$config_link = trim($input['config_link'] ?? '');

error_log("📝 admin_config_add: plan_code='{$plan_code}', title='{$title}'");

// اعتبارسنجی داده‌ها
if (empty($plan_code)) {
    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 {
    // بررسی اینکه پلن وجود دارد
    $plan_check = $pdo->prepare("SELECT plan_code, title FROM plans WHERE plan_code = :code LIMIT 1");
    $plan_check->execute([':code' => $plan_code]);
    $plan = $plan_check->fetch(PDO::FETCH_ASSOC);
    
    if (!$plan) {
        // اگر پلن در DB نبود، از تابع plans() چک کنیم
        $all_plans = plans();
        if (!isset($all_plans[$plan_code])) {
            http_response_code(400);
            echo json_encode([
                'ok' => false,
                'error' => "پلن با کد {$plan_code} یافت نشد"
            ], JSON_UNESCAPED_UNICODE);
            exit;
        }
    }
    
    // چک تکراری بودن کانفیگ (بر اساس config_text یا config_link)
    $duplicate_check = $pdo->prepare("
        SELECT id FROM configs
        WHERE (config_text = :txt AND config_text IS NOT NULL AND config_text != '')
           OR (config_link = :link AND config_link IS NOT NULL AND config_link != '')
        LIMIT 1
    ");
    $duplicate_check->execute([
        ':txt' => $config_text ?: null,
        ':link' => $config_link ?: null
    ]);
    
    if ($duplicate_check->fetch()) {
        http_response_code(400);
        echo json_encode([
            'ok' => false,
            'error' => 'این کانفیگ قبلاً ثبت شده است'
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // درج کانفیگ جدید
    $insert_stmt = $pdo->prepare("
        INSERT INTO configs 
        (plan_code, title, config_text, config_link, created_by, created_at)
        VALUES 
        (:plan_code, :title, :config_text, :config_link, :created_by, NOW())
    ");
    
    $insert_stmt->execute([
        ':plan_code' => $plan_code,
        ':title' => $title,
        ':config_text' => $config_text ?: null,
        ':config_link' => $config_link ?: null,
        ':created_by' => $user_id
    ]);
    
    $config_id = (int)$pdo->lastInsertId();
    
    // گرفتن اطلاعات کانفیگ ذخیره شده
    $get_config = $pdo->prepare("SELECT * FROM configs WHERE id = :id LIMIT 1");
    $get_config->execute([':id' => $config_id]);
    $new_config = $get_config->fetch(PDO::FETCH_ASSOC);
    
    // پاسخ موفقیت‌آمیز
    echo json_encode([
        'ok' => true,
        'message' => 'کانفیگ با موفقیت اضافه شد',
        'data' => [
            'config' => $new_config
        ]
    ], JSON_UNESCAPED_UNICODE);
    
    // ارسال پیام به ادمین در تلگرام
    try {
        $message = "✅ کانفیگ جدید اضافه شد\n\n";
        $message .= "📦 پلن: {$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_add.php: " . $e->getMessage());
    http_response_code(500);
    echo json_encode([
        'ok' => false,
        'error' => 'خطا در ذخیره کانفیگ: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}

