<?php
session_start();
require_once '../config/database.php';
require_once '../includes/functions.php';

if (!isset($_SESSION['user_id'])) {
    header('Location: ../login.php');
    exit();
}

$db = new Database();
$conn = $db->getConnection();

$export_type = $_POST['export_type'] ?? 'with-data';   // with-data | empty
$table_type  = $_POST['table_type']  ?? 'antibiotic';  // antibiotic | simple
$empty_rows  = max(1, min(100, (int)($_POST['empty_rows'] ?? 20)));

// ─── جلب البيانات ────────────────────────────────────────────────────────────

$antibiotic_data = [];
$simple_data     = [];

if ($export_type === 'with-data') {

    // جدول مراقبة المضادات الحيوية
    if ($table_type === 'antibiotic') {
        $stmt = $conn->prepare("
            SELECT
                ar.id,
                ar.report_date,
                p.patient_name,
                p.mrn          AS medical_no,
                COALESCE(a.antibiotic_name, ar.other_medication_name, 'غير محدد') AS antibiotic_name,
                ar.status      AS approval_status,
                ar.problem_authority  AS indication,
                ar.intervention_choice AS adjustment,
                usr.full_name  AS consultant_name,
                u.unit_name    AS location
            FROM antibiotic_reports ar
            JOIN patients  p   ON ar.patient_id            = p.id
            LEFT JOIN antibiotics a ON ar.antibiotic_id    = a.id
            JOIN users usr     ON ar.reporting_pharmacist_id = usr.id
            JOIN units u       ON ar.unit_id                = u.id
            ORDER BY ar.report_date DESC, ar.created_at DESC
        ");
        $stmt->execute();
        $antibiotic_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    // جدول المراقبة البسيطة
    if ($table_type === 'simple') {
        $stmt = $conn->prepare("
            SELECT
                spm.id,
                spm.report_date,
                p.patient_name,
                p.mrn          AS medical_no,
                spm.consultant_name,
                spm.location,
                spm.notes,
                usr.full_name  AS pharmacist_name
            FROM simple_patient_monitoring spm
            JOIN patients p ON spm.patient_id  = p.id
            JOIN users usr  ON spm.created_by  = usr.id
            ORDER BY spm.report_date DESC, spm.created_at DESC
        ");
        $stmt->execute();
        $simple_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

// ─── دوال مساعدة ─────────────────────────────────────────────────────────────

function translateStatus($status) {
    $map = ['approved' => 'موافق', 'pending' => 'معلق', 'rejected' => 'مرفوض'];
    return $map[$status] ?? $status;
}

function translateIndication($val) {
    $map = [
        'physicians'  => 'الأطباء',
        'nurses'      => 'الممرضات',
        'pharmacist'  => 'الصيدلي',
        'other'       => 'أخرى',
    ];
    return $map[$val] ?? $val;
}

function translateAdjustment($val) {
    $map = [
        'drug_discontinuation'       => 'إيقاف الدواء',
        'monitoring'                 => 'المراقبة',
        'changing_another_agent'     => 'تغيير إلى دواء آخر',
        'changing_administration_route' => 'تغيير طريقة الإعطاء',
        'addition_new_drug'          => 'إضافة دواء جديد',
        'change_medication'          => 'تغيير الدواء',
        'patient_own_medication'     => 'دواء المريض الخاص',
        'illegible_abbreviations'    => 'اختصارات غير واضحة',
        'medication_dispensing'      => 'صرف الدواء',
        'illegible_hand_writing'     => 'خط يد غير واضح',
    ];
    $decoded = json_decode($val, true);
    if (is_array($decoded)) {
        return implode('، ', array_map(fn($k) => $map[$k] ?? $k, $decoded));
    }
    return $map[$val] ?? $val;
}

// ─── إعداد الهيدر ─────────────────────────────────────────────────────────────

$filename_prefix = $table_type === 'antibiotic' ? 'antibiotic_monitoring' : 'simple_monitoring';
if ($export_type === 'empty') $filename_prefix .= '_empty';

header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header('Content-Disposition: attachment; filename="' . $filename_prefix . '_' . date('Y-m-d_H-i-s') . '.xls"');
header('Cache-Control: max-age=0');
header('Pragma: public');

echo "\xEF\xBB\xBF"; // BOM for Arabic support
?>
<!DOCTYPE html>
<html dir="rtl">
<head>
    <meta charset="UTF-8">
    <style>
        body { font-family: 'Arial', 'Tahoma', sans-serif; direction: rtl; margin: 0; padding: 0; font-size: 9pt; }
        table { border-collapse: collapse; width: 100%; }
        .main-table th {
            border: 1px solid #000;
            padding: 6px 4px;
            text-align: center;
            font-weight: bold;
            background-color: #4472C4;
            color: #ffffff;
            vertical-align: middle;
            font-size: 8pt;
            line-height: 1.2;
        }
        .main-table td {
            border: 1px solid #aaa;
            padding: 5px 4px;
            text-align: center;
            vertical-align: middle;
            font-size: 8pt;
        }
        .main-table tr:nth-child(odd)  td { background-color: #ffffff; }
        .main-table tr:nth-child(even) td { background-color: #f2f7ff; }
        .status-approved { background-color: #d4edda; color: #155724; font-weight: bold; }
        .status-pending  { background-color: #fff3cd; color: #856404; font-weight: bold; }
        .status-rejected { background-color: #f8d7da; color: #721c24; font-weight: bold; }
        .empty-cell { height: 28px; }
        .stats-row td { background-color: #D9E1F2; font-weight: bold; color: #1F3864; font-size: 8pt; }
        .stats-val  td { background-color: #f8f9fa; font-weight: bold; color: #0d6efd; font-size: 9pt; }
    </style>
</head>
<body>

<?php
// ─── عنوان الجدول ─────────────────────────────────────────────────────────────
$table_title = $table_type === 'antibiotic'
    ? 'جدول مراقبة المضادات الحيوية'
    : 'جدول المراقبة البسيطة للمرضى';

$col_count = $table_type === 'antibiotic' ? 11 : 8;
?>

<!-- Header -->
<table>
    <tr>
        <td colspan="<?php echo $col_count; ?>" style="background-color:#1a3a5c; color:#ffffff; font-size:14pt; font-weight:bold; text-align:center; padding:10px;">
            <?php echo $table_title; ?>
        </td>
    </tr>
    <tr>
        <td colspan="<?php echo $col_count; ?>" style="background-color:#2e5c8a; color:#ffffff; font-size:9pt; text-align:center; padding:5px;">
            مستشفى مدينة نصر التخصصي &nbsp;|&nbsp; Nasr City Specialized Hospital
            &nbsp;|&nbsp; تاريخ التصدير: <?php echo date('d/m/Y H:i'); ?>
            &nbsp;|&nbsp; أعده: <?php echo htmlspecialchars($_SESSION['full_name'] ?? ''); ?>
        </td>
    </tr>
    <tr><td colspan="<?php echo $col_count; ?>" style="height:6px; border:none;"></td></tr>
</table>

<?php if ($table_type === 'antibiotic'): ?>
<!-- ═══════════════════════════════════════════════════════════════════════════ -->
<!-- جدول مراقبة المضادات الحيوية                                              -->
<!-- ═══════════════════════════════════════════════════════════════════════════ -->

<?php if ($export_type === 'with-data' && !empty($antibiotic_data)):
    // إحصائيات
    $total   = count($antibiotic_data);
    $approved = count(array_filter($antibiotic_data, fn($r) => $r['approval_status'] === 'approved'));
    $pending  = count(array_filter($antibiotic_data, fn($r) => $r['approval_status'] === 'pending'));
    $rejected = count(array_filter($antibiotic_data, fn($r) => $r['approval_status'] === 'rejected'));
?>
<!-- Statistics -->
<table>
    <tr>
        <td colspan="8" style="background-color:#D9E1F2; color:#1F3864; font-weight:bold; font-size:11pt; text-align:right; padding:7px 12px; border:2px solid #4472C4;">
            📊 الإحصائيات العامة
        </td>
    </tr>
    <tr class="stats-row">
        <td>إجمالي التقارير</td><td>موافق عليها</td><td>معلقة</td><td>مرفوضة</td>
        <td>عدد المرضى</td><td>عدد المضادات</td><td>عدد الأقسام</td><td>معدل الموافقة</td>
    </tr>
    <tr class="stats-val">
        <td><?php echo $total; ?></td>
        <td><?php echo $approved; ?></td>
        <td><?php echo $pending; ?></td>
        <td><?php echo $rejected; ?></td>
        <td><?php echo count(array_unique(array_column($antibiotic_data, 'medical_no'))); ?></td>
        <td><?php echo count(array_unique(array_column($antibiotic_data, 'antibiotic_name'))); ?></td>
        <td><?php echo count(array_unique(array_column($antibiotic_data, 'location'))); ?></td>
        <td><?php echo $total > 0 ? round(($approved / $total) * 100, 1) : 0; ?>%</td>
    </tr>
    <tr><td colspan="8" style="height:6px; border:none;"></td></tr>
</table>
<?php endif; ?>

<!-- Main Table -->
<table class="main-table">
    <thead>
        <tr>
            <th rowspan="2">التاريخ<br><small>Date</small></th>
            <th rowspan="2">اسم المريض<br><small>Patient Name</small></th>
            <th rowspan="2">الرقم الطبي<br><small>Medical No.</small></th>
            <th rowspan="2">المضاد الحيوي<br><small>Antibiotic</small></th>
            <th colspan="3">الموافقة<br><small>Approval</small></th>
            <th rowspan="2">المؤشر<br><small>Indication</small></th>
            <th rowspan="2">التعديل<br><small>Adjustment</small></th>
            <th rowspan="2">الطبيب المعالج<br><small>Consultant</small></th>
            <th rowspan="2">الموقع<br><small>Location</small></th>
        </tr>
        <tr>
            <th style="background-color:#217346; color:#fff;">موافق<br><small>Approved</small></th>
            <th style="background-color:#b8860b; color:#fff;">معلق<br><small>Pending</small></th>
            <th style="background-color:#c0392b; color:#fff;">مرفوض<br><small>Rejected</small></th>
        </tr>
    </thead>
    <tbody>
        <?php if ($export_type === 'empty'): ?>
            <?php for ($i = 0; $i < $empty_rows; $i++): ?>
            <tr>
                <?php for ($j = 0; $j < 11; $j++): ?>
                <td class="empty-cell">&nbsp;</td>
                <?php endfor; ?>
            </tr>
            <?php endfor; ?>
        <?php elseif (empty($antibiotic_data)): ?>
            <tr>
                <td colspan="11" style="text-align:center; padding:25px; color:#6c757d;">
                    لا توجد بيانات مراقبة مضادات حيوية
                </td>
            </tr>
        <?php else: ?>
            <?php foreach ($antibiotic_data as $row): ?>
            <tr>
                <td><?php echo htmlspecialchars($row['report_date']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['patient_name']); ?></td>
                <td><?php echo htmlspecialchars($row['medical_no']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['antibiotic_name']); ?></td>
                <td class="<?php echo $row['approval_status'] === 'approved' ? 'status-approved' : ''; ?>">
                    <?php echo $row['approval_status'] === 'approved' ? '✓' : ''; ?>
                </td>
                <td class="<?php echo $row['approval_status'] === 'pending' ? 'status-pending' : ''; ?>">
                    <?php echo $row['approval_status'] === 'pending' ? '⏳' : ''; ?>
                </td>
                <td class="<?php echo $row['approval_status'] === 'rejected' ? 'status-rejected' : ''; ?>">
                    <?php echo $row['approval_status'] === 'rejected' ? '✗' : ''; ?>
                </td>
                <td><?php echo htmlspecialchars(translateIndication($row['indication'])); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars(translateAdjustment($row['adjustment'])); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['consultant_name']); ?></td>
                <td><?php echo htmlspecialchars($row['location']); ?></td>
            </tr>
            <?php endforeach; ?>
        <?php endif; ?>
    </tbody>
</table>

<?php else: ?>
<!-- ═══════════════════════════════════════════════════════════════════════════ -->
<!-- جدول المراقبة البسيطة                                                     -->
<!-- ═══════════════════════════════════════════════════════════════════════════ -->

<?php if ($export_type === 'with-data' && !empty($simple_data)):
    $total_simple = count($simple_data);
?>
<!-- Statistics -->
<table>
    <tr>
        <td colspan="5" style="background-color:#D9E1F2; color:#1F3864; font-weight:bold; font-size:11pt; text-align:right; padding:7px 12px; border:2px solid #4472C4;">
            📊 الإحصائيات العامة
        </td>
    </tr>
    <tr class="stats-row">
        <td>إجمالي السجلات</td>
        <td>عدد المرضى</td>
        <td>عدد الأقسام</td>
        <td>أقدم سجل</td>
        <td>أحدث سجل</td>
    </tr>
    <tr class="stats-val">
        <td><?php echo $total_simple; ?></td>
        <td><?php echo count(array_unique(array_column($simple_data, 'medical_no'))); ?></td>
        <td><?php echo count(array_unique(array_filter(array_column($simple_data, 'location')))); ?></td>
        <td><?php $dates = array_column($simple_data, 'report_date'); echo !empty($dates) ? min($dates) : '-'; ?></td>
        <td><?php echo !empty($dates) ? max($dates) : '-'; ?></td>
    </tr>
    <tr><td colspan="5" style="height:6px; border:none;"></td></tr>
</table>
<?php endif; ?>

<!-- Main Table -->
<table class="main-table">
    <thead>
        <tr>
            <th>التاريخ<br><small>Date</small></th>
            <th>اسم المريض<br><small>Patient Name</small></th>
            <th>الرقم الطبي<br><small>Medical No.</small></th>
            <th>الطبيب المعالج<br><small>Consultant</small></th>
            <th>الموقع<br><small>Location</small></th>
            <th>الملاحظات<br><small>Notes</small></th>
            <th>الصيدلي<br><small>Pharmacist</small></th>
            <th>م<br>#</th>
        </tr>
    </thead>
    <tbody>
        <?php if ($export_type === 'empty'): ?>
            <?php for ($i = 0; $i < $empty_rows; $i++): ?>
            <tr>
                <?php for ($j = 0; $j < 8; $j++): ?>
                <td class="empty-cell">&nbsp;</td>
                <?php endfor; ?>
            </tr>
            <?php endfor; ?>
        <?php elseif (empty($simple_data)): ?>
            <tr>
                <td colspan="8" style="text-align:center; padding:25px; color:#6c757d;">
                    لا توجد بيانات متابعة مرضى
                </td>
            </tr>
        <?php else: ?>
            <?php foreach ($simple_data as $i => $row): ?>
            <tr>
                <td><?php echo htmlspecialchars($row['report_date']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['patient_name']); ?></td>
                <td><?php echo htmlspecialchars($row['medical_no']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['consultant_name']); ?></td>
                <td><?php echo htmlspecialchars($row['location']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['notes']); ?></td>
                <td style="text-align:right;"><?php echo htmlspecialchars($row['pharmacist_name']); ?></td>
                <td><?php echo $i + 1; ?></td>
            </tr>
            <?php endforeach; ?>
        <?php endif; ?>
    </tbody>
</table>

<?php endif; ?>

<!-- Footer -->
<table>
    <tr><td colspan="<?php echo $col_count; ?>" style="height:6px; border:none;"></td></tr>
    <tr>
        <td colspan="<?php echo $col_count; ?>" style="background-color:#f2f2f2; text-align:center; padding:8px; font-size:8pt; color:#555; border:1px solid #ccc;">
            نظام الصيدلة الإكلينيكية المتكامل (ICS) &nbsp;|&nbsp; مستشفى مدينة نصر التخصصي
            &nbsp;|&nbsp; تم التصدير بواسطة: <?php echo htmlspecialchars($_SESSION['full_name'] ?? ''); ?>
            &nbsp;|&nbsp; التاريخ: <?php echo date('d/m/Y H:i'); ?>
        </td>
    </tr>
</table>

</body>
</html>

<?php
// تسجيل عملية التصدير
try {
    logActivity($conn, $_SESSION['user_id'],
        'تصدير Excel - ' . ($table_type === 'antibiotic' ? 'مراقبة المضادات الحيوية' : 'المراقبة البسيطة'),
        'monitoring'
    );
} catch (Exception $e) {
    error_log("Export log error: " . $e->getMessage());
}
?>
