<?php
// miniapp/api/wallet_deposit.php
// افزایش موجودی کیف پول با کارت - دقیقا مثل بات
header('Content-Type: application/json; charset=utf-8');

require __DIR__ . '/config.php';

// دریافت پارامترها (multipart/form-data)
$userId = isset($_POST['user_id']) ? (int)$_POST['user_id'] : 0;
$amount = isset($_POST['amount']) ? (int)$_POST['amount'] : 0;
$receiptText = isset($_POST['receipt_text']) ? trim($_POST['receipt_text']) : '';

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

if ($amount < 10000) {
    echo json_encode(['ok' => false, 'error' => 'حداقل مبلغ واریز ۱۰,۰۰۰ تومان است'], JSON_UNESCAPED_UNICODE);
    exit;
}

// چک فایل رسید
if (!isset($_FILES['receipt']) || $_FILES['receipt']['error'] !== UPLOAD_ERR_OK) {
    echo json_encode(['ok' => false, 'error' => 'لطفا تصویر رسید را آپلود کنید'], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    // دریافت اطلاعات کاربر
    $userStmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $userStmt->execute([$userId]);
    $user = $userStmt->fetch(PDO::FETCH_ASSOC);

    if (!$user) {
        // ایجاد کاربر جدید
        $createUser = $pdo->prepare("INSERT INTO users (id, balance) VALUES (?, 0)");
        $createUser->execute([$userId]);
        $user = ['id' => $userId, 'first_name' => 'کاربر', 'balance' => 0];
    }

    // آپلود فایل
    $uploadDir = __DIR__ . '/../uploads/';
    if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);

    $ext = pathinfo($_FILES['receipt']['name'], PATHINFO_EXTENSION);
    $fileName = 'deposit_' . $userId . '_' . time() . '.' . $ext;
    $filePath = $uploadDir . $fileName;

    if (!move_uploaded_file($_FILES['receipt']['tmp_name'], $filePath)) {
        throw new Exception('خطا در ذخیره فایل');
    }

    // ثبت تراکنش
    $txStmt = $pdo->prepare("
        INSERT INTO wallet_transactions (user_id, amount, type, status, description, receipt_text, created_at) 
        VALUES (?, ?, 'DEPOSIT', 'PENDING', 'درخواست افزایش موجودی از مینی‌اپ', ?, NOW())
    ");
    $txStmt->execute([$userId, $amount, $receiptText]);
    $txId = $pdo->lastInsertId();

    // ساخت پیام برای ادمین
    $caption = "💰 <b>درخواست افزایش موجودی (مینی‌اپ)</b>\n\n";
    $caption .= "👤 کاربر: <a href='tg://user?id={$userId}'>" . htmlspecialchars($user['first_name'] ?? 'کاربر') . "</a> ({$userId})\n";
    $caption .= "💵 مبلغ: " . number_format($amount) . " تومان\n";
    $caption .= "🆔 کد تراکنش: #{$txId}\n\n";
    if ($receiptText) {
        $caption .= "📝 توضیحات: " . htmlspecialchars($receiptText);
    }

    // دکمه‌های تایید/رد (مثل بات)
    $keyboard = [
        'inline_keyboard' => [
            [
                ['text' => '✅ تأیید', 'callback_data' => 'ADMIN_APPROVE_DEPOSIT__' . $txId],
                ['text' => '❌ رد', 'callback_data' => 'ADMIN_REJECT_DEPOSIT__' . $txId]
            ]
        ]
    ];

    // ارسال به ادمین‌ها
    $admins = explode(',', ADMIN_IDS);
    foreach ($admins as $adminId) {
        $adminId = trim($adminId);
        if ($adminId) {
            tg('sendPhoto', [
                'chat_id' => $adminId,
                'photo' => $filePath,
                'caption' => $caption,
                'parse_mode' => 'HTML',
                'reply_markup' => json_encode($keyboard)
            ]);
        }
    }

    echo json_encode([
        'ok' => true,
        'tx_id' => $txId,
        'message' => 'درخواست افزایش موجودی ثبت شد و برای تایید به ادمین ارسال شد.'
    ], JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    error_log("wallet_deposit error: " . $e->getMessage());
    echo json_encode(['ok' => false, 'error' => $e->getMessage()], JSON_UNESCAPED_UNICODE);
}

