<?php
// تفعيل عرض الأخطاء لغرض التطوير
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// تعيين العناوين العربية وأنواع المصروفات
$typeTitles = [
    'تعزيز' => 'التعزيزات',
    'سلفة' => 'السلف',
    'أخرى' => 'المصروفات الأخرى',
];
$defaultType = 'تعزيز';

// --- تعيين نوع المصروف بناءً على URL أو الافتراضي (تعزيز) ---
// جلب نوع المصروف من البارامتر (إذا كان موجوداً)، وتمريره عبر تنظيف بسيط
$expenseType = htmlspecialchars($_GET['type'] ?? $defaultType);

// التأكد من أن النوع المعروض صالح، وإلا نرجع للتعزيزات
if (!array_key_exists($expenseType, $typeTitles)) {
    $expenseType = $defaultType;
}

$pageTitle = 'قائمة ' . $typeTitles[$expenseType];
// تضمين ملف الرأس لجميع الصفحات
include '../../includes/header.php';

// التحقق من تسجيل الدخول
checkLogin();

// الحصول على كائن قاعدة البيانات
$db = getDB();

// --- إعدادات الترقيم (Pagination) ---
$limit = 10; // عدد السجلات في كل صفحة
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $limit;

// --- جلب وتنظيف معايير البحث الجديدة ---
$titleSearch = htmlspecialchars($_GET['title_search'] ?? '');
$employeeIdFilter = htmlspecialchars($_GET['employee_id_filter'] ?? '');
$startDate = htmlspecialchars($_GET['start_date'] ?? '');
$endDate = htmlspecialchars($_GET['end_date'] ?? '');

// --- بناء استعلام قاعدة البيانات ---
$sqlWhere = " WHERE expense_type = ?";
$params = [$expenseType]; // الآن $expenseType هو المتغير الديناميكي

// 1. شرط البحث بالعنوان
if (!empty($titleSearch)) {
    $sqlWhere .= " AND e.title LIKE ?";
    $params[] = '%' . $titleSearch . '%';
}

// 2. شرط البحث باسم الموظف
if (!empty($employeeIdFilter)) {
    $sqlWhere .= " AND e.employee_id = ?";
    $params[] = $employeeIdFilter;
}

// 3. شرط البحث بين تاريخين
if (!empty($startDate) && !empty($endDate)) {
    // التأكد من أن التواريخ صالحة
    if (strtotime($endDate) >= strtotime($startDate)) {
        $sqlWhere .= " AND e.expense_date BETWEEN ? AND ?";
        $params[] = $startDate;
        $params[] = $endDate;
    }
} elseif (!empty($startDate)) {
    $sqlWhere .= " AND e.expense_date >= ?";
    $params[] = $startDate;
} elseif (!empty($endDate)) {
    $sqlWhere .= " AND e.expense_date <= ?";
    $params[] = $endDate;
}


// استعلام جلب المصروفات (تعزيز/سلفة/أخرى)
$sql = "SELECT e.*, emp.full_name AS employee_name, u.full_name AS creator_name 
        FROM expenses e
        LEFT JOIN employees emp ON e.employee_id = emp.id
        LEFT JOIN users u ON e.created_by = u.id
        " . $sqlWhere . "
        ORDER BY e.created_at DESC
        LIMIT ? OFFSET ?";

// استعلام جلب العدد الكلي للسجلات
$countSql = "SELECT COUNT(*) AS total FROM expenses e " . $sqlWhere;

// استعلام جلب مجموع المصروفات الحالية بعد الفلترة
$filteredTotalSql = "SELECT SUM(amount) AS filtered_total FROM expenses e " . $sqlWhere;

// ننسخ المصفوفة ونضيف إليها الـ LIMIT والـ OFFSET
$queryLimitParams = array_merge($params, [$limit, $offset]); 
$countParams = $params; // لا نحتاج للـ LIMIT والـ OFFSET في استعلام العدد الكلي

$expenses = []; // تغيير اسم المتغير إلى $expenses ليكون عاماً
$totalRecords = 0;
$filteredTotal = 0; 
$employees = [];

// --- جلب المجاميع الإجمالية حسب النوع ---
$totals = [
    'تعزيز' => 0,
    'سلفة' => 0,
    'أخرى' => 0,
];

try {
    // جلب قائمة الموظفين
    $employeesSql = "SELECT id, full_name FROM employees ORDER BY full_name ASC";
    $employees = $db->select($employeesSql);

    // جلب قائمة المصروفات
    $expenses = $db->select($sql, $queryLimitParams);

    // جلب العدد الكلي
    $totalResult = $db->selectOne($countSql, $countParams);
    $totalRecords = $totalResult['total'] ?? 0;
    
    // جلب مجموع المصروفات الحالية (المفلترة)
    $filteredTotalResult = $db->selectOne($filteredTotalSql, $countParams);
    $filteredTotal = $filteredTotalResult['filtered_total'] ?? 0;

    // جلب المجاميع الإجمالية لجميع أنواع المصروفات
    $totalsSql = "SELECT expense_type, SUM(amount) AS total_amount
                  FROM expenses
                  GROUP BY expense_type";
    
    $rawTotals = $db->select($totalsSql);
    
    // تجميع النتائج في المصفوفة $totals
    foreach ($rawTotals as $row) {
        $type = $row['expense_type'];
        $amount = $row['total_amount'];
        
        if ($type === 'تعزيز') {
            $totals['تعزيز'] = $amount;
        } elseif ($type === 'سلفة') {
            $totals['سلفة'] = $amount;
        } else {
            // تجميع أي نوع آخر تحت "أخرى"
             if (!in_array($type, ['تعزيز', 'سلفة'])) {
                $totals['أخرى'] += $amount;
            }
        }
    }

} catch (PDOException $e) {
    $_SESSION['error_message'] = 'حدث خطأ أثناء جلب البيانات: ' . $e->getMessage();
}

$totalPages = ceil($totalRecords / $limit);

// دالة مساعدة لتوليد معلمات GET للترقيم والبحث (مع تضمين نوع المصروف الحالي)
function getFilterParams() {
    $params = [];
    if (!empty($_GET['type'])) $params[] = 'type=' . urlencode($_GET['type']); // إضافة النوع
    if (!empty($_GET['title_search'])) $params[] = 'title_search=' . urlencode($_GET['title_search']);
    if (!empty($_GET['employee_id_filter'])) $params[] = 'employee_id_filter=' . urlencode($_GET['employee_id_filter']);
    if (!empty($_GET['start_date'])) $params[] = 'start_date=' . urlencode($_GET['start_date']);
    if (!empty($_GET['end_date'])) $params[] = 'end_date=' . urlencode($_GET['end_date']);
    return implode('&', $params);
}

$filterQueryString = getFilterParams();
?>

<div class="container py-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <div>
            <h2 class="h4">قائمة <?php echo htmlspecialchars($typeTitles[$expenseType]); ?> (<?php echo $totalRecords; ?>)</h2>
            <p class="text-muted">عرض سجلات الصرف من نوع "<?php echo htmlspecialchars($expenseType); ?>" فقط.</p>
        </div>
        <div class="d-flex align-items-center">
             <form method="GET" action="view_enhancements.php" class="me-3">
                <div class="input-group">
                    <label for="expense_type_selector" class="input-group-text bg-info text-white">نوع المصروف</label>
                    <select class="form-select" id="expense_type_selector" name="type" onchange="this.form.submit()">
                        <?php foreach ($typeTitles as $typeKey => $typeTitle): ?>
                            <option value="<?php echo htmlspecialchars($typeKey); ?>" 
                                <?php echo ($expenseType == $typeKey) ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($typeTitle); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
            </form>
            <button type="button" class="btn btn-warning me-2" data-bs-toggle="modal" data-bs-target="#totalsModal">
                <i class="fas fa-calculator me-2"></i>عرض الإجماليات الكلية
            </button>
            <a href="create.php" class="btn btn-success">
                <i class="fas fa-plus-circle me-2"></i>إنشاء قيد صرف جديد
            </a>
        </div>
    </div>

    <?php include '../../includes/alerts.php'; ?>

    <div class="card shadow-sm mb-4">
        <div class="card-header bg-light">
            <h5 class="mb-0">فلاتر البحث لـ <?php echo htmlspecialchars($typeTitles[$expenseType]); ?></h5>
        </div>
        <div class="card-body">
            <form method="GET" action="view_enhancements.php">
                <input type="hidden" name="type" value="<?php echo htmlspecialchars($expenseType); ?>">
                
                <div class="row g-3">
                    <div class="col-md-6">
                        <label for="title_search" class="form-label">البحث بالعنوان</label>
                        <input type="text" name="title_search" id="title_search" class="form-control" placeholder="عنوان المصروف..." value="<?php echo htmlspecialchars($titleSearch); ?>">
                    </div>

                    <div class="col-md-6">
                        <label for="employee_id_filter" class="form-label">الموظف المستفيد</label>
                        <select class="form-select" id="employee_id_filter" name="employee_id_filter">
                            <option value="">-- اختر موظف --</option>
                            <?php foreach ($employees as $employee): ?>
                                <option value="<?php echo htmlspecialchars($employee['id']); ?>" <?php echo ($employeeIdFilter == $employee['id']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($employee['full_name']); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>

                    <div class="col-md-5">
                        <label for="start_date" class="form-label">من تاريخ</label>
                        <input type="date" name="start_date" id="start_date" class="form-control" value="<?php echo htmlspecialchars($startDate); ?>">
                    </div>

                    <div class="col-md-5">
                        <label for="end_date" class="form-label">إلى تاريخ</label>
                        <input type="date" name="end_date" id="end_date" class="form-control" value="<?php echo htmlspecialchars($endDate); ?>">
                    </div>
                    
                    <div class="col-md-2 d-flex align-items-end">
                        <button type="submit" class="btn btn-primary w-100"><i class="fas fa-search me-2"></i>بحث</button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <div class="card shadow-sm">
        <div class="card-body">
            <div class="mb-3 d-flex justify-content-end gap-2">
    <button id="printTable" class="btn btn-outline-secondary">
        <i class="fas fa-print me-2"></i>طباعة الجدول والتفاصيل
    </button>
    <button id="exportExcel" class="btn btn-outline-success">
        <i class="fas fa-file-excel me-2"></i>تصدير إلى Excel
    </button>
</div>

            <div class="table-responsive">
                <?php if (!empty($expenses)): // تغيير $enhancements إلى $expenses ?>
                    <table class="table table-hover table-striped">
                        <thead>
                            <tr>
                                <th>#</th>
                                <th>العنوان</th>
                                <th>المبلغ</th>
                                <th>تاريخ الصرف</th>
                                <th>الموظف المستفيد</th>
                                <th>القائم بالإدخال</th>
                                <th>الإجراءات</th>
                            </tr>
                        </thead>
                       <tbody>
<?php $counter = $offset + 1; ?>
<?php foreach ($expenses as $expense): ?>
    <?php
        $rowClass = '';
        if ($expense['expense_type'] === 'تعزيز') {
            $rowClass = 'table-primary'; // أزرق فاتح
        } elseif ($expense['expense_type'] === 'سلفة') {
            $rowClass = 'table-warning'; // أصفر فاتح
        } else {
            $rowClass = ''; // النوع الآخر يبقى عادي
        }
    ?>
    <tr class="<?php echo $rowClass; ?>">
        <td><?php echo $counter++; ?></td>
        <td><?php echo htmlspecialchars($expense['title']); ?></td>
        <td><?php echo number_format($expense['amount'], 2); ?></td>
        <td><?php echo htmlspecialchars($expense['expense_date']); ?></td>
        <td>
            <?php if (!empty($expense['employee_name'])): ?>
                <span class="badge bg-info text-dark"><?php echo htmlspecialchars($expense['employee_name']); ?></span>
            <?php else: ?>
                <span class="text-muted">غير محدد</span>
            <?php endif; ?>
        </td>
        <td><?php echo htmlspecialchars($expense['creator_name']); ?></td>
        <td>
            <a href="view.php?id=<?php echo $expense['id']; ?>" class="btn btn-sm btn-info" title="عرض التفاصيل"><i class="fas fa-eye"></i></a>
        </td>
    </tr>
<?php endforeach; ?>
</tbody>
                        <tfoot>
                            <tr class="table-primary fw-bold">
                                <td colspan="2" class="text-end">إجمالي <?php echo htmlspecialchars($typeTitles[$expenseType]); ?> المعروض:</td>
                                <td><?php echo number_format($filteredTotal, 2); ?></td>
                                <td colspan="4"></td>
                            </tr>
                        </tfoot>
                    </table>
                <?php else: ?>
                    <div class="alert alert-warning text-center" role="alert">
                        <i class="fas fa-exclamation-circle me-2"></i>لم يتم العثور على أي <?php echo htmlspecialchars($typeTitles[$expenseType]); ?> تطابق معايير البحث.
                    </div>
                <?php endif; ?>
            </div>

            <?php if ($totalPages > 1): ?>
                <nav aria-label="Page navigation">
                    <ul class="pagination justify-content-center mt-3">
                        <li class="page-item <?php echo ($page <= 1) ? 'disabled' : ''; ?>">
                            <a class="page-link" href="view_enhancements.php?page=<?php echo $page - 1; ?><?php echo !empty($filterQueryString) ? '&' . $filterQueryString : ''; ?>" aria-label="السابق">
                                <span aria-hidden="true">&laquo;</span>
                            </a>
                        </li>
                        
                        <?php for ($i = 1; $i <= $totalPages; $i++): ?>
                            <li class="page-item <?php echo ($i == $page) ? 'active' : ''; ?>">
                                <a class="page-link" href="view_enhancements.php?page=<?php echo $i; ?><?php echo !empty($filterQueryString) ? '&' . $filterQueryString : ''; ?>"><?php echo $i; ?></a>
                            </li>
                        <?php endfor; ?>

                        <li class="page-item <?php echo ($page >= $totalPages) ? 'disabled' : ''; ?>">
                            <a class="page-link" href="view_enhancements.php?page=<?php echo $page + 1; ?><?php echo !empty($filterQueryString) ? '&' . $filterQueryString : ''; ?>" aria-label="التالي">
                                <span aria-hidden="true">&raquo;</span>
                            </a>
                        </li>
                    </ul>
                </nav>
            <?php endif; ?>

        </div>
    </div>
</div>

<div class="modal fade" id="totalsModal" tabindex="-1" aria-labelledby="totalsModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content">
      <div class="modal-header bg-primary text-white">
        <h5 class="modal-title" id="totalsModalLabel"><i class="fas fa-dollar-sign me-2"></i>إجمالي المصروفات الكلية حسب النوع</h5>
        <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <div class="list-group">
          <div class="list-group-item d-flex justify-content-between align-items-center list-group-item-info">
            <strong>إجمالي التعزيزات:</strong>
            <span class="badge bg-primary fs-6"><?php echo number_format($totals['تعزيز'], 2); ?></span>
          </div>
          <div class="list-group-item d-flex justify-content-between align-items-center list-group-item-warning">
            <strong>إجمالي السلف:</strong>
            <span class="badge bg-warning text-dark fs-6"><?php echo number_format($totals['سلفة'], 2); ?></span>
          </div>
          <div class="list-group-item d-flex justify-content-between align-items-center list-group-item-secondary">
            <strong>إجمالي المصروفات الأخرى:</strong>
            <span class="badge bg-secondary fs-6"><?php echo number_format($totals['أخرى'], 2); ?></span>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إغلاق</button>
      </div>
    </div>
  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.rtl.min.css" />

<script>
$(document).ready(function() {
    // تهيئة Select2 لحقل الموظف
    $('#employee_id_filter').select2({
        theme: "bootstrap-5",
        placeholder: "ابحث أو اختر موظف...",
        allowClear: true
    });

    // ✅ زر الطباعة
    $('#printTable').on('click', function() {
        const printContents = document.querySelector('.table-responsive').innerHTML;
        const win = window.open('', '_blank');
        win.document.write(`
            <html dir="rtl" lang="ar">
                <head>
                    <title>طباعة جدول المصروفات</title>
                    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css" rel="stylesheet">
                    <style>
                        body { font-family: 'Tahoma', sans-serif; padding: 20px; }
                        table { width: 100%; border-collapse: collapse; }
                        th, td { border: 1px solid #ddd; padding: 8px; text-align: center; }
                        th { background-color: #f8f9fa; }
                        h3 { text-align: center; margin-bottom: 20px; }
                    </style>
                </head>
                <body>
                    <h3>قائمة <?php echo htmlspecialchars($typeTitles[$expenseType]); ?></h3>
                    ${printContents}
                </body>
            </html>
        `);
        win.document.close();
        win.print();
    });

    // ✅ زر تصدير إلى Excel
    $('#exportExcel').on('click', function() {
        const table = document.querySelector('.table');
        if (!table) {
            alert('لا يوجد جدول لتصديره!');
            return;
        }

        const tableHTML = table.outerHTML.replace(/ /g, '%20');
        const fileName = 'قائمة_<?php echo htmlspecialchars($typeTitles[$expenseType]); ?>.xls';
        const a = document.createElement('a');
        a.href = 'data:application/vnd.ms-excel,' + tableHTML;
        a.download = fileName;
        a.click();
    });
});

</script>

<?php
include '../../includes/footer.php';
?>