<?php
if($data == 'my_tickets_menu') {
    $responseText = "📩 *بخش پشتیبانی و تیکت‌ها*\n\nلطفاً یک گزینه را انتخاب کنید:";
    $keyboard     = json_encode([
        "inline_keyboard" => [
            [
                ['text' => '📝 ارسال تیکت جدید', 'callback_data' => 'new_ticket'],
                ['text' => '📂 تیکت‌های من', 'callback_data' => 'list_my_tickets']
            ],
            [
                ['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']
            ]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'back_to_profile') {
    $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM `orders` WHERE `user_id` = ?");
    $stmt->execute([$chat_id]);
    $ordersCount = $stmt->fetch()->count;
    $stmt = $pdo->prepare("SELECT COUNT(*) as count, SUM(reward_coins) as total_reward FROM `referrals` WHERE `inviter_id` = ?");
    $stmt->execute([$chat_id]);
    $refData        = $stmt->fetch();
    $referralsCount = $refData->count;
    $referralIncome = $refData->total_reward ?? 0;
    $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM `support_tickets` WHERE `user_id` = ?");
    $stmt->execute([$chat_id]);
    $ticketsCount = $stmt->fetch()->count;
    $coins = number_format((float) $user->coins, 2, '.', '');
    $responseText = "👤 *اطلاعات حساب کاربری شما*\n\n" .
        "🆔 *شناسه کاربری:* *$chat_id*\n" .
        "💰 *موجودی کیف پول:* *$coins* سکه\n" .
        "📦 *تعداد سفارشات:* *$ordersCount*\n" .
        "👥 *تعداد زیرمجموعه‌ها:* *$referralsCount* نفر\n" .
        "💵 *درآمد از زیرمجموعه‌گیری:* *$referralIncome* سکه\n" .
        "📩 *تیکت‌های پشتیبانی:* *$ticketsCount*";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [
                ['text' => '🏆 برترین کاربران', 'callback_data' => 'top_users'],
                ['text' => '📜 تاریخچه خرید', 'callback_data' => 'purchase_history']
            ],
            [
                ['text' => '⚙️ تنظیمات', 'callback_data' => 'settings'],
                ['text' => '💸 انتقال سکه', 'callback_data' => 'transfer_coins']
            ],
            [
                ['text' => '📩 تیکت‌ها', 'callback_data' => 'my_tickets_menu'],
                ['text' => '🎁 کد هدیه', 'callback_data' => 'enter_gift_code']
            ]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'new_ticket') {
    $responseText = "❓ *انتخاب موضوع تیکت*\n\nلطفاً موضوع تیکت خود را انتخاب کنید:";
    $subjects     = getTicketSubjects();
    $inline       = [];
    $row          = [];

foreach($subjects as $code => $label) {
        $row[] = ['text' => $label, 'callback_data' => "ticket_subject:$code"];

if(count($row) == 2) {
            $inline[] = $row;
            $row      = [];
}

}


if(!empty($row)) {
        $inline[] = $row;
}

    $inline[] = [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'my_tickets_menu']];
    $keyboard = json_encode(["inline_keyboard" => $inline]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if(strpos($data, 'ticket_subject:') === 0) {
    $subjects = getTicketSubjects();
    $code     = substr($data, strlen('ticket_subject:'));
    $subject  = $subjects[$code] ?? 'سایر موارد';
    setStep($chat_id, "ticket_ask:$subject");
    $responseText = "✏️ *متن تیکت خود را بنویسید:*\n\n" .
        "موضوع انتخاب شده: $subject\n\n" .
        "لطفاً متن پیام خود را در یک پیام ارسال کنید.";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'my_tickets_menu']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


function getTicketSubjects()
{
    return [
        'order' => '🛍 پیگیری سفارش',
        'technical' => '⚠️ مشکل فنی',
        'financial' => '💰 بخش مالی',
        'other' => 'سایر موارد',
        'vip' => '🌟 حساب ویژه',
        'referral' => '👥 دعوت و زیرمجموعه',
        'payment' => '💳 مشکل پرداخت',
        'security' => '🛡 امنیت و گزارش',
        'account' => '👤 حساب کاربری',
        'channel' => '📢 مدیریت کانال'
    ];
}


if(strpos($user->step, 'ticket_ask:') === 0 && $text != "🔙 برگشت به منو قبل") {
    $subject = substr($user->step, strlen('ticket_ask:'));
    $trackingCode = rand(100000, 999999);
    $stmt = $pdo->prepare("INSERT INTO `support_tickets` (`tracking_code`, `user_id`, `subject`, `question`, `status`, `created_at`) VALUES (?, ?, ?, ?, 'pending', NOW())");
    $stmt->execute([$trackingCode, $chat_id, $subject, $text]);
    $logMsg = "📩 *تیکت جدید*\n\n" .
              "👤 کاربر: *[$from_id](uid:$from_id)*\n" .
              "🔖 کد پیگیری: *$trackingCode*\n" .
              "📌 موضوع: *$subject*\n" .
              "📄 متن: $text";
    sendLogChannel($logMsg);
    $responseText = "✅ *تیکت شما با موفقیت ثبت شد.*\n\n" .
        "🔖 *کد پیگیری:* *$trackingCode*\n" .
        "⏳ *وضعیت:* *در انتظار بررسی*\n\n" .
        "پاسخ تیکت از طریق همین ربات برای شما ارسال خواهد شد.";
    sendMessage($chat_id, $responseText);
    setStep($chat_id, "none");
    die;
}


if($data == 'list_my_tickets') {
    $stmt = $pdo->prepare("SELECT tracking_code, MAX(created_at) as last_update, ANY_VALUE(subject) as subject, ANY_VALUE(status) as status FROM `support_tickets` WHERE `user_id` = ? GROUP BY `tracking_code` ORDER BY last_update DESC LIMIT 10");
    try {
        $stmt->execute([$chat_id]);
        $tickets = $stmt->fetchAll();
} catch (PDOException $e) {
        $stmt = $pdo->prepare("SELECT * FROM `support_tickets` WHERE `user_id` = ? ORDER BY `created_at` DESC");
        $stmt->execute([$chat_id]);
        $allTickets = $stmt->fetchAll();
        $tickets    = [];
        $seen       = [];

foreach($allTickets as $t) {

if(!in_array($t->tracking_code, $seen)) {
                $tickets[] = $t;
                $seen[]    = $t->tracking_code;
}


if(count($tickets) >= 10)
                break;
}

}


if(!$tickets) {
        answerCallbackQuery($query_id, "❌ شما هنوز هیچ تیکتی ثبت نکرده‌اید.", true);
        return;
}

    $buttons = [];

foreach($tickets as $t) {
        $statusEmoji = match ($t->status) {
            'pending'  => '⏳',
            'seen'     => '👁',
            'answered' => '✅',
            'closed'   => '🔒',
            default    => '❓'
};
        $buttons[]   = [['text' => "$statusEmoji {$t->subject} ({$t->tracking_code})", 'callback_data' => "view_ticket:{$t->tracking_code}:1"]];
}

    $buttons[] = [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'my_tickets_menu']];
    $keyboard = json_encode(["inline_keyboard" => $buttons]);
    editMessage($chat_id, $message_id, "📂 *لیست تیکت‌های شما*\n\nبرای مشاهده جزئیات روی تیکت کلیک کنید.", $keyboard);
    die;
}


if(strpos($data, 'view_ticket:') === 0) {
    $parts  = explode(':', substr($data, strlen('view_ticket:')));
    $code   = $parts[0];
    $page   = intval($parts[1] ?? 1);
    $limit  = 2;
    $offset = ($page - 1) * $limit;
    $stmtCount = $pdo->prepare("SELECT COUNT(*) FROM `support_tickets` WHERE `tracking_code` = ? AND `user_id` = ?");
    $stmtCount->execute([$code, $chat_id]);
    $totalMessages = $stmtCount->fetchColumn();
    $stmt = $pdo->prepare("SELECT * FROM `support_tickets` WHERE `tracking_code` = ? AND `user_id` = ? ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset");
    $stmt->execute([$code, $chat_id]);
    $tickets = $stmt->fetchAll();

if(!$tickets) {
        answerCallbackQuery($query_id, "❌ تیکت یافت نشد.", true);
        return;
}

    $firstTicket = $tickets[0]; 
    $stmtStatus = $pdo->prepare("SELECT status, subject FROM `support_tickets` WHERE `tracking_code` = ? AND `user_id` = ? ORDER BY `created_at` DESC LIMIT 1");
    $stmtStatus->execute([$code, $chat_id]);
    $latestInfo    = $stmtStatus->fetch();
    $currentStatus = $latestInfo->status;
    $subject       = $latestInfo->subject;
    $statusText = match ($currentStatus) {
        'pending'  => 'در انتظار بررسی',
        'seen'     => 'مشاهده شده توسط ادمین',
        'answered' => 'پاسخ داده شده',
        'closed'   => 'بسته شده',
        default    => 'نامشخص'
};
    $totalPages = ceil($totalMessages / $limit);
    $responseText = "🔖 *گفتگوی تیکت #{$code}*\n" .
        "📌 *موضوع:* *{$subject}*\n" .
        "⏳ *وضعیت:* *$statusText*\n" .
        "📄 *صفحه:* *$page* از *$totalPages*\n\n" .
        "➖➖➖➖➖➖➖➖➖➖\n\n";

foreach($tickets as $t) {
        $responseText .= "👤 *شما:*\n{$t->question}\n" .
            "📅 " . jdate("H:i  Y/m/d ", strtotime($t->created_at)) . "\n\n";

if($t->answer) {
            $responseText .= "🗣 *پشتیبانی:*\n{$t->answer}\n" .
                "📅 " . jdate("H:i  Y/m/d ", strtotime($t->answered_at)) . "\n\n";
}

        $responseText .= "──────────────────\n\n";
}

    $buttons    = [];
    $navButtons = [];

if($page < $totalPages) {
        $navButtons[] = ['text' => '⬅️ صفحه بعدی', 'callback_data' => "view_ticket:$code:" . ($page + 1)];
}


if($page > 1) {
        $navButtons[] = ['text' => 'صفحه قبلی ➡️', 'callback_data' => "view_ticket:$code:" . ($page - 1)];
}


if(!empty($navButtons)) {
        $buttons[] = $navButtons;
}


if($currentStatus != 'closed') {
        $buttons[] = [['text' => '✍️ پاسخ دادن', 'callback_data' => "user_reply_ticket:$code"]];
}

    $buttons[] = [['text' => '🔙 بازگشت به لیست', 'callback_data' => 'list_my_tickets']];
    $keyboard = json_encode(["inline_keyboard" => $buttons]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if(strpos($data, 'user_reply_ticket:') === 0) {
    $code = substr($data, strlen('user_reply_ticket:'));
    $stmt = $pdo->prepare("SELECT status FROM `support_tickets` WHERE `tracking_code` = ? ORDER BY `created_at` DESC LIMIT 1");
    $stmt->execute([$code]);
    $tStatus = $stmt->fetch()->status ?? 'closed';

if($tStatus == 'closed') {
        answerCallbackQuery($query_id, "⛔️ این تیکت بسته شده است و امکان ارسال پاسخ وجود ندارد.", true);
        die;
}

    setStep($chat_id, "user_replying:$code");
    $responseText = "✍️ *پاسخ خود را بنویسید:*\n\n" .
        "پیام شما به عنوان ادامه گفتگوی تیکت #$code ثبت خواهد شد.";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => "view_ticket:$code"]]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if(strpos($user->step, 'user_replying:') === 0 && $text != "🔙 بازگشت به منو قبل") {
    $code = substr($user->step, strlen('user_replying:'));
    $stmt = $pdo->prepare("SELECT subject FROM `support_tickets` WHERE `tracking_code` = ? LIMIT 1");
    $stmt->execute([$code]);
    $ticket  = $stmt->fetch();
    $subject = $ticket->subject ?? 'پاسخ کاربر';
    $stmt = $pdo->prepare("INSERT INTO `support_tickets` (`tracking_code`, `user_id`, `subject`, `question`, `status`, `created_at`) VALUES (?, ?, ?, ?, 'pending', NOW())");
    $stmt->execute([$code, $chat_id, $subject, $text]);
    $logMsg = "📩 *پاسخ جدید از کاربر*\n\n" .
              "👤 کاربر: *$chat_id*\n" .
              "🔖 کد پیگیری: *$code*\n" .
              "📌 موضوع: *$subject*\n" .
              "📄 متن: $text";
    sendLogChannel($logMsg);
    sendMessage($chat_id, "✅ پاسخ شما ارسال شد.");
    setStep($chat_id, "none");
    die;
}

