<?php
/**
 * reports_download.php - تصدير التقارير (تحميل مباشر)
 * @version 9.0.0
 */

require_once 'config.php';
checkAdminAuth();

// ============================================
// معالجة المعلمات
// ============================================
$report_type = $_GET['type'] ?? $_GET['report_type'] ?? 'cashier';
$format = $_GET['format'] ?? 'pdf';
$start_date = $_GET['start_date'] ?? date('Y-m-01');
$end_date = $_GET['end_date'] ?? date('Y-m-t');
$entity_id = isset($_GET['entity_id']) ? (int)$_GET['entity_id'] : 0;

// ============================================
// جلب بيانات الطلبات للكاشير
// ============================================

function getCashierOrdersExport($conn, $start_date, $end_date, $cashier_id = 0) {
    $filter = $cashier_id ? "AND o.cashier_id = $cashier_id" : "";
    $result = $conn->query("
        SELECT 
            o.id as order_id,
            DATE(o.created_at) as order_date,
            o.created_at,
            c.name as customer_name,
            c.phone as customer_phone,
            o.total,
            o.status,
            o.payment_method,
            cp.name as captain_name,
            COUNT(oi.id) as items_count,
            GROUP_CONCAT(DISTINCT m.name SEPARATOR ', ') as items_list,
            o.notes
        FROM orders o
        JOIN customers c ON o.customer_id = c.id
        LEFT JOIN captains cp ON o.captain_id = cp.id
        LEFT JOIN order_items oi ON o.id = oi.order_id
        LEFT JOIN meals m ON oi.meal_id = m.id
        WHERE DATE(o.created_at) BETWEEN '$start_date' AND '$end_date'
        $filter
        GROUP BY o.id
        ORDER BY o.created_at DESC
    ");
    return $result;
}

// ============================================
// تصدير PDF للكاشير - تحميل مباشر
// ============================================

function exportCashierToPDF($conn, $start_date, $end_date, $cashier_id) {
    // جلب الإحصائيات
    $stats = $conn->query("
        SELECT 
            COUNT(DISTINCT o.id) as total_orders,
            COALESCE(SUM(o.total), 0) as total_revenue,
            COALESCE(AVG(o.total), 0) as avg_order,
            COUNT(DISTINCT o.customer_id) as unique_customers,
            SUM(CASE WHEN o.status = 'delivered' THEN 1 ELSE 0 END) as completed_orders
        FROM orders o
        WHERE DATE(o.created_at) BETWEEN '$start_date' AND '$end_date'
    ")->fetch_assoc();
    
    // جلب تفاصيل الكاشير
    $cashiers = $conn->query("
        SELECT 
            c.name,
            c.branch,
            COUNT(DISTINCT o.id) as orders_count,
            COALESCE(SUM(o.total), 0) as total_revenue,
            ROUND(AVG(o.total), 2) as avg_order,
            SUM(CASE WHEN o.status = 'delivered' THEN 1 ELSE 0 END) as completed
        FROM cashiers c
        LEFT JOIN orders o ON c.id = o.cashier_id 
            AND DATE(o.created_at) BETWEEN '$start_date' AND '$end_date'
        GROUP BY c.id, c.name, c.branch
        HAVING orders_count > 0
        ORDER BY total_revenue DESC
    ");
    
    // جلب تفاصيل الطلبات
    $orders = getCashierOrdersExport($conn, $start_date, $end_date, $cashier_id);
    
    // إنشاء HTML للتقرير
    $html = '<!DOCTYPE html>
    <html dir="rtl" lang="ar">
    <head>
        <meta charset="UTF-8">
        <title>تقرير الكاشير - ماكس بروست</title>
        <style>
            body {
                font-family: "DejaVu Sans", "Arial", sans-serif;
                margin: 20px;
                direction: rtl;
                font-size: 12px;
            }
            .header {
                text-align: center;
                margin-bottom: 30px;
                border-bottom: 2px solid #667eea;
                padding-bottom: 10px;
            }
            .header h1 {
                color: #667eea;
                margin: 0;
                font-size: 24px;
            }
            .header p {
                color: #666;
                margin: 5px 0;
            }
            .stats-grid {
                display: flex;
                flex-wrap: wrap;
                gap: 15px;
                margin-bottom: 30px;
            }
            .stat-card {
                flex: 1;
                min-width: 150px;
                background: #f8f9fa;
                border-radius: 10px;
                padding: 15px;
                text-align: center;
                border-right: 4px solid #667eea;
            }
            .stat-value {
                font-size: 24px;
                font-weight: bold;
                color: #667eea;
            }
            .stat-label {
                font-size: 11px;
                color: #666;
                margin-top: 5px;
            }
            .section-title {
                font-size: 16px;
                font-weight: bold;
                color: #667eea;
                margin: 20px 0 15px;
                padding-bottom: 5px;
                border-bottom: 2px solid #e0e0e0;
            }
            table {
                width: 100%;
                border-collapse: collapse;
                margin-bottom: 20px;
                font-size: 11px;
            }
            th {
                background: #f0f0f0;
                padding: 10px;
                border: 1px solid #ddd;
                text-align: center;
            }
            td {
                padding: 8px;
                border: 1px solid #ddd;
                text-align: center;
            }
            .badge {
                display: inline-block;
                padding: 3px 8px;
                border-radius: 15px;
                font-size: 10px;
            }
            .badge-delivered { background: #d4edda; color: #155724; }
            .badge-pending { background: #fff3cd; color: #856404; }
            .badge-accepted { background: #cce5ff; color: #004085; }
            .badge-on_the_way { background: #d1ecf1; color: #0c5460; }
            .footer {
                text-align: center;
                margin-top: 30px;
                padding-top: 10px;
                border-top: 1px solid #ddd;
                font-size: 10px;
                color: #999;
            }
        </style>
    </head>
    <body>
        <div class="header">
            <h1>ماكس بروست</h1>
            <p>تقرير أداء الكاشير المفصل</p>
            <p>الفترة: ' . date('Y-m-d', strtotime($start_date)) . ' إلى ' . date('Y-m-d', strtotime($end_date)) . '</p>
        </div>
        
        <div class="stats-grid">
            <div class="stat-card"><div class="stat-value">' . number_format($stats['total_orders']) . '</div><div class="stat-label">إجمالي الطلبات</div></div>
            <div class="stat-card"><div class="stat-value">' . number_format($stats['total_revenue']) . ' ريال</div><div class="stat-label">إجمالي الإيرادات</div></div>
            <div class="stat-card"><div class="stat-value">' . number_format($stats['avg_order']) . ' ريال</div><div class="stat-label">متوسط الطلب</div></div>
            <div class="stat-card"><div class="stat-value">' . number_format($stats['unique_customers']) . '</div><div class="stat-label">عدد العملاء</div></div>
            <div class="stat-card"><div class="stat-value">' . number_format($stats['completed_orders']) . '</div><div class="stat-label">الطلبات المكتملة</div></div>
        </div>';
    
    // إضافة جدول أداء الكاشير
    if ($cashiers && $cashiers->num_rows > 0) {
        $html .= '<div class="section-title">📊 أداء الكاشير</div>
        <table>
            <thead><tr><th>الكاشير</th><th>الفرع</th><th>الطلبات</th><th>الإيرادات</th><th>متوسط الطلب</th><th>مكتمل</th></tr></thead>
            <tbody>';
        while($row = $cashiers->fetch_assoc()) {
            $html .= '<tr>
                <td>' . htmlspecialchars($row['name']) . '</td>
                <td>' . htmlspecialchars($row['branch'] ?: 'رئيسي') . '</td>
                <td>' . number_format($row['orders_count']) . '</td>
                <td>' . number_format($row['total_revenue']) . ' ريال</td>
                <td>' . number_format($row['avg_order']) . ' ريال</td>
                <td>' . number_format($row['completed']) . '</td>
            </tr>';
        }
        $html .= '</tbody></table>';
    }
    
    // إضافة جدول تفاصيل الطلبات
    $status_text = ['pending' => 'معلق', 'accepted' => 'مقبول', 'on_the_way' => 'في الطريق', 'delivered' => 'مكتمل'];
    $status_class = ['pending' => 'pending', 'accepted' => 'accepted', 'on_the_way' => 'on_the_way', 'delivered' => 'delivered'];
    
    $html .= '<div class="section-title">📋 تفاصيل الطلبات</div>
    <table>
        <thead><tr><th>#</th><th>التاريخ</th><th>العميل</th><th>الهاتف</th><th>المبلغ</th><th>الحالة</th><th>الدفع</th><th>الكابتن</th></tr></thead>
        <tbody>';
    
    if ($orders && $orders->num_rows > 0) {
        while($order = $orders->fetch_assoc()) {
            $html .= '<tr>
                <td>#' . $order['order_id'] . '</td>
                <td>' . date('Y-m-d H:i', strtotime($order['created_at'])) . '</td>
                <td>' . htmlspecialchars($order['customer_name']) . '</td>
                <td>' . htmlspecialchars($order['customer_phone']) . '</td>
                <td>' . number_format($order['total'], 2) . ' ريال</td>
                <td><span class="badge badge-' . $status_class[$order['status']] . '">' . $status_text[$order['status']] . '</span></td>
                <td>' . ($order['payment_method'] == 'cash' ? 'نقدي' : 'بطاقة') . '</td>
                <td>' . htmlspecialchars($order['captain_name'] ?: 'غير معين') . '</td>
            </tr>';
        }
    } else {
        $html .= '<tr><td colspan="8" style="text-align:center;">لا توجد بيانات للعرض</td></tr>';
    }
    
    $html .= '</tbody></table>
        <div class="footer">
            تم إنشاء هذا التقرير بواسطة نظام ماكس بروست - ' . date('Y-m-d H:i:s') . '
        </div>
    </body>
    </html>';
    
    // استخدام مكتبة TCPDF أو بديل
    $tcpdf_paths = [
        'vendor/tecnickcom/tcpdf/tcpdf.php',
        '../vendor/tecnickcom/tcpdf/tcpdf.php',
        '../../vendor/tecnickcom/tcpdf/tcpdf.php',
        'includes/tcpdf/tcpdf.php'
    ];
    
    $tcpdf_loaded = false;
    foreach ($tcpdf_paths as $path) {
        if (file_exists($path)) {
            require_once($path);
            $tcpdf_loaded = true;
            break;
        }
    }
    
    if ($tcpdf_loaded) {
        $pdf = new TCPDF('L', 'mm', 'A4', true, 'UTF-8', false);
        $pdf->SetCreator('Max System');
        $pdf->SetAuthor('مدير النظام');
        $pdf->SetTitle('تقرير الكاشير - ماكس بروست');
        $pdf->SetMargins(10, 10, 10);
        $pdf->SetAutoPageBreak(TRUE, 15);
        $pdf->AddPage();
        $pdf->SetFont('dejavusans', '', 10);
        $pdf->writeHTML($html, true, false, true, false, '');
        
        // تحميل مباشر
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment; filename="Cashier_Report_' . date('Y-m-d') . '.pdf"');
        header('Cache-Control: private, max-age=0, must-revalidate');
        header('Pragma: public');
        
        $pdf->Output('Cashier_Report_' . date('Y-m-d') . '.pdf', 'D');
    } else {
        // عرض HTML للطباعة
        header('Content-Type: text/html; charset=utf-8');
        echo $html;
        echo '<script>window.print();</script>';
    }
    exit;
}

// ============================================
// تصدير Excel للكاشير - تحميل مباشر
// ============================================

function exportCashierToExcel($conn, $start_date, $end_date, $cashier_id) {
    $orders = getCashierOrdersExport($conn, $start_date, $end_date, $cashier_id);
    
    // تحميل مباشر
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="Cashier_Report_' . date('Y-m-d') . '.csv"');
    header('Cache-Control: private, max-age=0, must-revalidate');
    header('Pragma: public');
    
    $output = fopen('php://output', 'w');
    fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF)); // BOM for UTF-8
    
    fputcsv($output, ['تقرير الكاشير المفصل', "من: $start_date إلى: $end_date"]);
    fputcsv($output, []);
    fputcsv($output, ['رقم الطلب', 'التاريخ', 'العميل', 'الهاتف', 'المبلغ', 'الحالة', 'طريقة الدفع', 'الكابتن', 'الأصناف', 'الوجبات', 'ملاحظات']);
    
    $status_text = ['pending' => 'معلق', 'accepted' => 'مقبول', 'on_the_way' => 'في الطريق', 'delivered' => 'مكتمل'];
    
    if ($orders && $orders->num_rows > 0) {
        while($order = $orders->fetch_assoc()) {
            fputcsv($output, [
                $order['order_id'],
                $order['created_at'],
                $order['customer_name'],
                $order['customer_phone'],
                $order['total'],
                $status_text[$order['status']],
                $order['payment_method'] == 'cash' ? 'نقدي' : 'بطاقة',
                $order['captain_name'] ?: 'غير معين',
                $order['items_count'],
                $order['items_list'],
                $order['notes']
            ]);
        }
    } else {
        fputcsv($output, ['لا توجد بيانات للعرض']);
    }
    
    fclose($output);
    exit;
}

// ============================================
// التوجيه حسب نوع التقرير
// ============================================

switch($report_type) {
    case 'cashier':
        if ($format == 'pdf') {
            exportCashierToPDF($conn, $start_date, $end_date, $entity_id);
        } else {
            exportCashierToExcel($conn, $start_date, $end_date, $entity_id);
        }
        break;
        
    default:
        header('Content-Type: text/html; charset=utf-8');
        echo '<h1>تقرير غير معروف</h1>';
        echo '<p>نوع التقرير المطلوب غير مدعوم حالياً</p>';
        break;
}

exit;
?>