<?php
// tickets.php - سیستم تیکتینگ حرفه‌ای

session_start();
require_once 'config/database.php';
require_once 'includes/db.php';
require_once 'includes/auth.php';
require_once 'includes/functions.php';

if (!isLoggedIn()) {
    header('Location: login.php');
    exit;
}

$user = getCurrentUser();
$pageTitle = 'سیستم تیکتینگ';
$pageSubtitle = 'ارسال و مدیریت تیکت‌ها';

// ===== دریافت پارامترها =====
$status_filter = $_GET['status'] ?? 'all';
$priority_filter = $_GET['priority'] ?? 'all';
$search = $_GET['search'] ?? '';
$ticket_id = $_GET['id'] ?? 0;

// ===== دریافت آمار تیکت‌ها =====
$ticketStats = getTicketStats($user['id']);

// ===== دریافت لیست تیکت‌ها =====
$tickets = getUserTickets($user['id'], $status_filter, $priority_filter, $search);

// ===== دریافت اطلاعات یک تیکت خاص =====
$selectedTicket = null;
$replies = [];
if ($ticket_id > 0) {
    $selectedTicket = getTicketById($ticket_id);
    if ($selectedTicket) {
        // بررسی دسترسی به تیکت
        if ($selectedTicket['sender_id'] == $user['id'] || 
            $selectedTicket['receiver_id'] == $user['id'] || 
            $selectedTicket['receiver_role_id'] == $user['role_id']) {
            
            $replies = getTicketReplies($ticket_id);
            
            // علامت‌گذاری به عنوان خوانده شده
            if ($selectedTicket['receiver_id'] == $user['id'] || 
                $selectedTicket['receiver_role_id'] == $user['role_id']) {
                markTicketAsRead($ticket_id, $user['id']);
            }
        } else {
            $selectedTicket = null;
        }
    }
}

// ===== دریافت لیست نقش‌ها و مدرسین برای فرم ارسال =====
$roles = getAllRoles();
$teachers = getAllTeachers();

// ===== پردازش ارسال تیکت =====
$message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $action = $_POST['action'] ?? '';
    
    if ($action == 'send_ticket') {
        $subject = trim($_POST['subject'] ?? '');
        $body = trim($_POST['body'] ?? '');
        $receiver_type = $_POST['receiver_type'] ?? 'role';
        $receiver_role_id = (int)($_POST['receiver_role_id'] ?? 0);
        $receiver_id = (int)($_POST['receiver_id'] ?? 0);
        $priority = $_POST['priority'] ?? 'medium';
        
        $errors = [];
        if (empty($subject)) {
            $errors[] = 'موضوع را وارد کنید';
        }
        if (empty($body)) {
            $errors[] = 'متن تیکت را وارد کنید';
        }
        
        // ===== بررسی گیرنده =====
        if ($receiver_type == 'role') {
            if (empty($receiver_role_id) || $receiver_role_id == 0) {
                $errors[] = 'لطفاً یک نقش را انتخاب کنید';
            }
        } elseif ($receiver_type == 'user') {
            if (empty($receiver_id) || $receiver_id == 0) {
                $errors[] = 'لطفاً یک مدرس را انتخاب کنید';
            }
        } else {
            $errors[] = 'نوع گیرنده نامعتبر است';
        }
        
        if (empty($errors)) {
            // ===== آرایه داده (بدون created_at) =====
            $data = [
                'sender_id' => $user['id'],
                'subject' => $subject,
                'body' => $body,
                'priority' => $priority,
                'status' => 'new',
                'is_read' => 0
            ];
            
            if ($receiver_type == 'role') {
                $data['receiver_role_id'] = $receiver_role_id;
                $data['receiver_id'] = null;
            } else {
                $data['receiver_id'] = $receiver_id;
                $data['receiver_role_id'] = null;
            }
            
            $result = insertData('tickets', $data);
            
            if ($result !== false && $result > 0) {
                $message = '<div class="alert alert-success">✅ تیکت با موفقیت ارسال شد.</div>';
                // به‌روزرسانی لیست
                $tickets = getUserTickets($user['id'], $status_filter, $priority_filter, $search);
                $ticketStats = getTicketStats($user['id']);
            } else {
                $message = '<div class="alert alert-danger">❌ خطا در ارسال تیکت. لطفاً مجدداً تلاش کنید.</div>';
            }
        } else {
            $message = '<div class="alert alert-danger">❌ ' . implode('<br>', $errors) . '</div>';
        }
    }
}

$content = 'tickets-content.php';
require_once 'includes/layout.php';
?>