<?php

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

// =========================================================================
// التضمينات والمتغيرات
// =========================================================================

$pageTitle = 'حساب وتسجيل الرواتب الشهرية';
// تأكد من صحة مسار ملف header.php
include '../../includes/header.php';

checkLogin();

// الصلاحية المطلوبة لحساب وتسجيل الرواتب
if (!hasPermission('add_employee_salary')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لحساب وتسجيل الرواتب.';
    header('Location: salaries_report.php');
    exit();
}

$db = getDB();
$employeesToPay = [];
$errors = [];

// تعريف ثابت لساعات الدوام اليومية (غير مستخدمة حاليًا في الحساب المالي لكن للحماية)
$HOURS_PER_DAY = 8;
// استدعاء أسعار الإجازات وسياسة العطلة الأسبوعية من ملف التكوين الخارجي المُعدَّل
$configFilePath = '../../includes/vacation_config.php';

// **التعديل رقم 1: قراءة سياسة العطلة الأسبوعية**
$DEFAULT_VACATION_PAY_RATES = [
    'سنوية' => 1.00, 'مرضية' => 0.75, 'بدون_راتب' => 0.00, 'غياب' => 0.00,
    'Annual' => 1.00, 'Sick' => 0.75, 'Unpaid' => 0.00, 'Absent' => 0.00,
    'WEEKEND_DAYS_ISO' => [5, 6] // الجمعة والسبت كقيم افتراضية
];

if (!file_exists($configFilePath)) {
    $VACATION_PAY_RATES = $DEFAULT_VACATION_PAY_RATES;
    $errors[] = "⚠️ ملف سياسة الإجازات `../../includes/vacation_config.php` غير موجود. تم استخدام قيم افتراضية جزئية.";
} else {
    $LOADED_RATES = require $configFilePath;
    // الدمج لضمان وجود WEEKEND_DAYS_ISO
    $VACATION_PAY_RATES = array_merge($DEFAULT_VACATION_PAY_RATES, $LOADED_RATES);
}

// تحديد أيام العطلة الأسبوعية من السياسة
$WEEKEND_DAYS_ISO = $VACATION_PAY_RATES['WEEKEND_DAYS_ISO'] ?? [5, 6];
// تحويل الأرقام إلى نص للعرض في الواجهة (للتوضيح)
$weekend_days_display = implode(' و ', array_map(function($day) {
    $days = [1 => 'الاثنين', 2 => 'الثلاثاء', 3 => 'الأربعاء', 4 => 'الخميس', 5 => 'الجمعة', 6 => 'السبت', 7 => 'الأحد'];
    return $days[$day] ?? $day;
}, $WEEKEND_DAYS_ISO));


// جلب وحذف رسالة النجاح والخطأ من الجلسة
$successMessage = $_SESSION['success_message'] ?? '';
unset($_SESSION['success_message']);
$errorMessage = $_SESSION['error_message'] ?? '';
unset($_SESSION['error_message']);

// =========================================================================
// تحديد الشهر المستهدف
// =========================================================================
$currentYearMonth = date('Y-m');
$targetMonth = $currentYearMonth;
if (isset($_GET['month'])) {
    $targetMonth = trim($_GET['month']);
} elseif (isset($_POST['month'])) {
    $targetMonth = trim($_POST['month']);
}
if (!preg_match('/^\d{4}-\d{2}$/', $targetMonth)) {
    $targetMonth = $currentYearMonth;
}

$targetMonthDate = $targetMonth . '-01';
$created_by_user_id = $_SESSION['user_id'] ?? NULL;

// =========================================================================
// حساب تاريخ البداية والنهاية والأيام الفعلية
// =========================================================================
$start_date_filter = date('Y-m-01', strtotime($targetMonthDate));
$end_date_filter_day_only = date('Y-m-t', strtotime($targetMonthDate));
$end_date_next_month = date('Y-m-01', strtotime($targetMonthDate . ' +1 month'));

// تقسيم الراتب: استخدام عدد أيام الشهر الفعلي
$days_in_month = date('t', strtotime($targetMonthDate));
$DAYS_FOR_SALARY_DIVISION = $days_in_month;

// حساب أيام العمل الواجبة (باستثناء أيام العطلة المحددة في السياسة)
$working_days_required = 0;
$start_of_month = new DateTime($start_date_filter);
$end_of_month = new DateTime($end_date_filter_day_only);
$temp_date_obj = clone $start_of_month;
while ($temp_date_obj <= $end_of_month) {
    $dayOfWeek = (int)$temp_date_obj->format('N');
    // **التعديل رقم 2.1: استخدام $WEEKEND_DAYS_ISO لحساب أيام العمل الواجبة**
    if (!in_array($dayOfWeek, $WEEKEND_DAYS_ISO)) {
        $working_days_required++;
    }
    $temp_date_obj->modify('+1 day');
}


// =========================================================================
// جلب بيانات الحضور والإجازات
// =========================================================================
// 1. جلب الحضور (التواريخ التي تم فيها تسجيل حضور لمرة واحدة على الأقل)
$attendance_dates = [];
$sql_attendance = "
    SELECT ea.employee_id, DATE(ea.timestamp) AS present_date
    FROM employee_attendance ea
    WHERE ea.timestamp >= ? AND ea.timestamp < ?
    GROUP BY ea.employee_id, present_date
";
$attendance_results = $db->select($sql_attendance, [$start_date_filter, $end_date_next_month]);
foreach ($attendance_results as $row) {
    $emp_id = $row['employee_id'];
    $attendance_dates[$emp_id][] = $row['present_date'];
}

// 2. جلب الإجازات (المدفوعة وغير المدفوعة)
$vacation_details = [];
$sql_vacations = "
    SELECT ev.employee_id, ev.start_date, ev.end_date, ev.vacation_type
    FROM employee_vacations ev
    WHERE (ev.start_date BETWEEN ? AND ?) OR (ev.end_date BETWEEN ? AND ?) OR (? BETWEEN ev.start_date AND ev.end_date)
";
$vacation_results = $db->select($sql_vacations, [
    $start_date_filter, $end_date_filter_day_only,
    $start_date_filter, $end_date_filter_day_only,
    $start_date_filter
]);

foreach ($vacation_results as $vacation) {
    $vacation_start = new DateTime($vacation['start_date']);
    $vacation_end = (new DateTime($vacation['end_date']))->modify('+1 day');
    $period = new DatePeriod($vacation_start, new DateInterval('P1D'), $vacation_end);

    $vacation_type = $vacation['vacation_type'];

    foreach ($period as $date) {
        $vacation_date_str = $date->format('Y-m-d');
        if ($vacation_date_str >= $start_date_filter && $vacation_date_str <= $end_date_filter_day_only) {
            $emp_id = $vacation['employee_id'];
            $vacation_details[$emp_id][$vacation_date_str] = $vacation_type;
        }
    }
}
// =========================================================================
// نهاية جلب بيانات الحضور والإجازات
// =========================================================================


// =========================================================================
// جلب الموظفين الذين لم يستلموا راتبهم بعد
// =========================================================================
try {
    $query = "
        SELECT e.id, e.full_name, e.position, e.salary AS monthly_base_salary
        FROM employees e
        LEFT JOIN monthly_salaries ms ON e.id = ms.employee_id AND ms.payment_month = ?
        WHERE ms.id IS NULL AND e.status = '1' AND e.salary IS NOT NULL ORDER BY e.full_name ASC
    ";
    $employeesList = $db->select($query, [$targetMonthDate]);
} catch (Exception $e) {
    error_log("Database error fetching employees: " . $e->getMessage());
    $errors[] = 'حدث خطأ أثناء جلب قائمة الموظفين.';
    $employeesList = [];
}

// =========================================================================
// حساب الرواتب (تطبيق التقسيم بناءً على أيام الشهر الفعلية)
// =========================================================================
foreach ($employeesList as $employee) {
    $emp_id = $employee['id'];
    $monthly_base_salary = floatval($employee['monthly_base_salary']);

    // سعر اليومية الأساسي = الراتب / عدد أيام الشهر الفعلي
    $daily_salary_base = $monthly_base_salary / $DAYS_FOR_SALARY_DIVISION;

    // متغيرات التجميع
    $paid_dates_set = [];
    $total_paid_amount = 0;
    $total_deductions_amount = 0;

    $actual_present_count = 0;
    $vacation_paid_breakdown = []; // لعد الأيام الكاملة للإجازات (للعرض)
    $total_vacation_days_paid_equivalent = 0.00; // الإجازات المدفوعة بالكسور (للحساب المالي)
    $working_days_paid_equivalent = 0.00; // مجموع أيام العمل المدفوعة (حضور + إجازة)

    // المرور على جميع أيام الشهر
    $temp_date_obj = clone $start_of_month;
    while ($temp_date_obj <= $end_of_month) {
        $date_str = $temp_date_obj->format('Y-m-d');
        $dayOfWeek = (int)$temp_date_obj->format('N');

        // **التعديل رقم 2.2: استخدام $WEEKEND_DAYS_ISO لتحديد العطلة الأسبوعية**
        $is_weekend = in_array($dayOfWeek, $WEEKEND_DAYS_ISO);
        $is_working_day = !$is_weekend; // يوم عمل واجب (ما عدا العطلة المحددة)

        $is_present = isset($attendance_dates[$emp_id]) && in_array($date_str, $attendance_dates[$emp_id]);
        $is_on_vacation = isset($vacation_details[$emp_id][$date_str]);
        $vacation_type = $is_on_vacation ? $vacation_details[$emp_id][$date_str] : null;

        $pay_rate = 0.00; // نسبة الدفع لليوم الحالي

        // ------------------------------------------------------------------
        // أ. تحديد نسبة الدفع لليوم
        // ------------------------------------------------------------------

        if ($is_present) {
            $pay_rate = 1.00;
            if ($is_working_day) $actual_present_count++;
            $paid_dates_set[$date_str] = 'حضور فعلي';

        } elseif ($is_on_vacation) {
            $rate_from_config = $VACATION_PAY_RATES[$vacation_type] ?? 0.00;
            $pay_rate = $rate_from_config;

            // التعديل المُطبق هنا: تسجيل الإجازة للعرض بغض النظر عن كونها يوم عمل واجب
            $vacation_paid_breakdown[$vacation_type] = ($vacation_paid_breakdown[$vacation_type] ?? 0) + 1; // عد الأيام الكاملة للإجازة (للعرض)
            $paid_dates_set[$date_str] = 'إجازة: ' . $vacation_type;

            // لكن الإضافة إلى الأيام المدفوعة بالكسور تتم فقط إذا كان يوم عمل واجب
            if ($is_working_day) {
                $total_vacation_days_paid_equivalent += $pay_rate; // جمع الأيام بقيمة الدفع (0.75, 1.00) للحساب
            }

        // أيام العطلة الأسبوعية تُعتبر مدفوعة بالكامل
        } elseif ($is_weekend) {
            $pay_rate = 1.00; // يُعتبر يوم عطلة مدفوع بالكامل كجزء من الراتب الشهري
            $paid_dates_set[$date_str] = 'عطلة أسبوعية (مدفوعة)';

        } else {
            // يوم عمل واجب لم يسجل فيه حضور ولم يكن إجازة
            $pay_rate = 0.00; // غياب غير مبرر
            $paid_dates_set[$date_str] = 'غياب غير مبرر (مخصوم)';
        }

        // ------------------------------------------------------------------
        // ب. حساب مبلغ الدفع والخصم لليوم
        // ------------------------------------------------------------------

        // نحسب الخصومات والدفع لأيام العمل الواجبة فقط.
        // **التعديل رقم 2.3: عدم خصم أو دفع أي شيء إضافي لأيام العطلة الأسبوعية (is_weekend)**
        // أيام العطلة الأسبوعية يتم دفعها تلقائياً بالراتب الشهري ولا تعتبر 'يوم عمل واجب' للحساب اليومي.
        if ($is_working_day) {

            // المبلغ المدفوع لليوم (يومية الأساس * نسبة الدفع)
            $payment_for_day = $daily_salary_base * $pay_rate;
            $total_paid_amount += $payment_for_day;

            // الخصم لليوم (يومية الأساس * نسبة الخصم)
            $deduction_for_day = $daily_salary_base * (1.00 - $pay_rate);
            $total_deductions_amount += $deduction_for_day;

            // تجميع أيام العمل المدفوعة (للعرض فقط)
            $working_days_paid_equivalent += $pay_rate;
        }


        $temp_date_obj->modify('+1 day');
    } // نهاية حلقة أيام الشهر

    // ------------------------------------------------------------------
    // 2. حساب النتائج النهائية
    // ------------------------------------------------------------------

    $final_deductions = round($total_deductions_amount, 2);
    // صافي الراتب = الراتب الأساسي - إجمالي الخصومات المحسوبة من أيام العمل الواجبة
    $net_salary_calculated = round($monthly_base_salary - $final_deductions, 2);

    // أيام الغياب الفعلي = أيام العمل الواجبة - الأيام التي دُفعت بالكامل
    $days_absent_to_display = $working_days_required - round($working_days_paid_equivalent, 0);
    if ($days_absent_to_display < 0) $days_absent_to_display = 0; // لضمان عدم ظهور قيمة سالبة

    $vacation_display = [];
    foreach ($vacation_paid_breakdown as $type => $count) {
        $rate = $VACATION_PAY_RATES[$type] ?? 0.00;
        $discount_rate = (1 - $rate) * 100;
        // هنا يتم عرض العدد الإجمالي لأيام الإجازة التي تم أخذها (بما فيها عطلة نهاية الأسبوع)
        $vacation_display[] = htmlspecialchars($type) . " ({$count} يوم، خصم " . number_format($discount_rate, 0) . "%)";
    }

    $employeesToPay[] = [
        'id' => $emp_id,
        'full_name' => $employee['full_name'],
        'monthly_base_salary' => $monthly_base_salary,
        'daily_salary_base' => round($daily_salary_base, 2),
        'working_days_required' => $working_days_required,
        'actual_present_count' => $actual_present_count,
        // لعرض أيام الإجازات التي تم الدفع عليها (قد تكون كسور)
        'total_vacation_days_paid' => round($total_vacation_days_paid_equivalent, 2),
        // الإجمالي المدفوع: الحضور + الإجازات المدفوعة (بالكسور)
        'days_paid_working_days' => round($working_days_paid_equivalent, 2),
        'days_absent' => $days_absent_to_display,
        'net_salary_calculated' => $net_salary_calculated,
        'final_deductions' => $final_deductions,
        'vacation_display' => implode(' | ', $vacation_display),
    ];
}


// =========================================================================
// معالجة زر "حساب جميع الرواتب" (POST)
// =========================================================================

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'calculate_all') {

    $successfulPayments = 0;
    $postTargetMonth = trim($_POST['month'] ?? $currentYearMonth);
    $postTargetMonthDate = $postTargetMonth . '-01';

    if (empty($employeesToPay)) {
        $_SESSION['error_message'] = '⚠️ لا يوجد موظفين لم تُسجل رواتبهم بعد لهذا الشهر.';
    } else {
        try {
            $db->beginTransaction();
            foreach ($employeesToPay as $employee) {
                $net_salary = $employee['net_salary_calculated'];
                $base_salary_paid = $employee['monthly_base_salary'];

                if ($net_salary > 0) { // لا نسجل رواتب صفرية
                    $notes = "دفعة آلية. الحضور: {$employee['actual_present_count']} يوم. إجازات مدفوعة: {$employee['total_vacation_days_paid']} يوم. الإجمالي المدفوع: {$employee['days_paid_working_days']} يوم. إجمالي الخصومات: " . formatCurrency($employee['final_deductions']) . ".";

                    $sql = "INSERT INTO monthly_salaries
                             (employee_id, payment_month, base_salary, allowances, deductions, net_salary, payment_method, notes, created_by_user_id)
                             VALUES (?, ?, ?, 0.00, ?, ?, 'تحويل بنكي (آلي)', ?, ?)";

                    $db->insert($sql, [
                        $employee['id'],
                        $postTargetMonthDate,
                        $base_salary_paid,
                        $employee['final_deductions'],
                        $net_salary,
                        $notes,
                        $created_by_user_id
                    ]);
                    $successfulPayments++;
                }
            }
            $db->commit();
            $_SESSION['success_message'] = "✅ تم تسجيل راتب {$successfulPayments} موظف بنجاح لشهر **{$postTargetMonth}**.";
        } catch (Exception $e) {
            $db->rollBack();
            $failedToProcess = count($employeesToPay) - $successfulPayments;
            $_SESSION['error_message'] = "❌ فشلت عملية تسجيل الدفعات. نجح تسجيل **{$successfulPayments}** موظف. فشل تسجيل **{$failedToProcess}** موظف. السبب: " . $e->getMessage();
        }
    }
    header('Location: calculate_salaries.php?month=' . urlencode($postTargetMonth));
    exit();
}


function formatCurrency($amount) {
    return number_format($amount, 2);
}
?>

<div class="content-area">
    <div class="page-header">
        <h2 class="page-title"><?= $pageTitle ?></h2>
        <p class="page-subtitle">حساب صافي رواتب الموظفين بناءً على أيام الحضور والإجازات المدفوعة.</p>
    </div>

    <?php if ($successMessage): ?>
        <div class="alert alert-success mt-3"><?= $successMessage ?></div>
    <?php endif; ?>

    <?php if ($errorMessage): ?>
        <div class="alert alert-danger mt-3"><?= $errorMessage ?></div>
    <?php endif; ?>

    <?php if (!empty($errors)): ?>
        <div class="alert alert-danger mt-3">
            <ul class="mb-0">
                <?php foreach ($errors as $error): ?>
                    <li><?= htmlspecialchars($error) ?></li>
                <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>

    <div class="card shadow-sm mb-4 border-info">
        <div class="card-header bg-info text-white">
            <h5 class="mb-0"><i class="fas fa-info-circle me-2"></i> آلية احتساب الرواتب لهذا الشهر (<?= $targetMonth ?>)</h5>
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-md-6">
                    <h6><i class="fas fa-money-check-alt me-1"></i> أسعار اليومية المطبقة:</h6>
                    <p class="mb-1">**أيام العمل الواجبة:** <strong class="text-primary"><?= $working_days_required ?> يوم</strong> (ما عدا: **<?= htmlspecialchars($weekend_days_display) ?>**)</p>
                    <p class="mb-3">**عدد أيام الشهر الفعلي لتقسيم الراتب:** <strong class="text-primary"><?= $DAYS_FOR_SALARY_DIVISION ?> يوم</strong></p>
                    <p>
                        **الراتب اليومي (للحساب/الخصم):** الراتب الشهري / **<?= $DAYS_FOR_SALARY_DIVISION ?>** (<?= formatCurrency($employeesToPay[0]['daily_salary_base'] ?? 0) ?>)
                    </p>
                </div>
                <div class="col-md-6 border-start">
                    <h6><i class="fas fa-calendar-check me-1"></i> سياسة دفع الإجازات (من ملف التكوين):</h6>
                    <ul>
                    <?php
                    // عرض مختصر لسياسة الدفع
                    foreach ($VACATION_PAY_RATES as $type => $rate) {
                        // استثناء عرض WEEKEND_DAYS_ISO هنا لأنه إعداد وليس نوع إجازة
                        if ($type === 'WEEKEND_DAYS_ISO') continue;
                        $discount_percentage = (1 - $rate) * 100;
                        $color = ($rate == 1.00) ? 'success' : (($rate > 0) ? 'warning' : 'danger');
                        echo "<li><strong class=\"text-{$color}\">" . htmlspecialchars($type) . ":</strong> دفع **" . number_format($rate * 100, 0) . "%** (خصم " . number_format($discount_percentage, 0) . "%)</li>";
                    }
                    ?>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <div class="card shadow-sm mb-4">
        <div class="card-body">
            <form method="GET" class="row g-3 align-items-end mb-3">
                <div class="col-md-4">
                    <label for="month" class="form-label">الشهر المستهدف للحساب</label>
                    <input type="month" class="form-control" id="month" name="month"
                                 required value="<?= htmlspecialchars($targetMonth) ?>">
                </div>
                <div class="col-md-2 d-grid">
                    <button class="btn btn-primary" type="submit">
                        <i class="fas fa-calculator me-1"></i> عرض الحساب
                    </button>
                </div>
                <div class="col-md-6 text-end d-grid">
                    <input type="text" class="form-control" id="searchInput" onkeyup="filterTable()" placeholder="ابحث باسم موظف...">
                </div>
            </form>
        </div>
    </div>

    <div class="card shadow-sm mt-4">
        <div class="card-header bg-white">
            <h5 class="card-title mb-0">الموظفين الذين لم يستلموا راتب شهر: <span class="text-primary"><?= $targetMonth ?></span></h5>
        </div>
        <div class="card-body p-0">
            <?php if (empty($employeesToPay)): ?>
                <div class="alert alert-info m-3 text-center">
                    ✅ تم تسجيل رواتب جميع الموظفين أو لا يوجد موظفين نشطين لهذا الشهر.
                </div>
            <?php else: ?>
                    <?php if (hasPermission('add_employee_salary')): ?>
                    <div class="card-footer text-end">
                        <form method="POST" class="d-inline-block">
                            <input type="hidden" name="action" value="calculate_all">
                            <input type="hidden" name="month" value="<?= htmlspecialchars($targetMonth) ?>">
                            <button type="submit" class="btn btn-success btn-lg"
                                        onclick="return confirm('⚠️ هل أنت متأكد من تسجيل رواتب جميع الموظفين الظاهرين في الجدول (<?= count($employeesToPay) ?> موظف) لـ <?= $targetMonth ?>؟');">
                                <i class="fas fa-file-invoice-dollar me-1"></i> حساب وتسجيل جميع الرواتب
                            </button>
                        </form>
                    </div>
                <?php endif; ?>
                <div class="table-responsive">
                    <table class="table table-hover table-striped mb-0 text-center" id="salaryTable">
                        <thead>
                            <tr>
                                <th>#</th>
                                <th>الموظف</th>
                                <th>الراتب الأساسي</th>
                                <th>اليومية (÷<?= $DAYS_FOR_SALARY_DIVISION ?>)</th>
                                <th>أيام العمل الواجبة</th>
                                <th>أيام الحضور/مدفوعة</th>
                                <th>تفصيل الإجازات (النوع والعدد)</th>
                                <th>أيام الغياب الفعلي (المخصومة)</th>
                                <th>إجمالي الخصومات</th>
                                <th>صافي الراتب</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php $counter = 1; ?>
                            <?php foreach ($employeesToPay as $emp): ?>
                                <tr>
                                    <td><?= $counter++ ?></td>
                                    <td class="text-start">
                                        <strong><?= htmlspecialchars($emp['full_name']) ?></strong>
                                    </td>
                                    <td><?= formatCurrency($emp['monthly_base_salary']) ?></td>
                                    <td><span class="badge bg-info"><?= formatCurrency($emp['daily_salary_base']) ?></span></td>
                                    <td><strong><?= $emp['working_days_required'] ?></strong></td>

                                    <td>
                                        <span class="badge bg-secondary"><?= $emp['days_paid_working_days'] ?></span>
                                        <small>(منها حضور: <?= $emp['actual_present_count'] ?>, إجازة: <?= $emp['total_vacation_days_paid'] ?>)</small>
                                    </td>

                                    <td class="text-wrap" style="max-width: 300px; font-size: 0.85em;">
                                        <?= $emp['vacation_display'] ?: 'لا يوجد إجازات' ?>
                                    </td>

                                    <td><span class="badge bg-danger"><?= $emp['days_absent'] ?></span></td>

                                    <td><span class="badge bg-danger fs-6"><?= formatCurrency($emp['final_deductions']) ?></span></td>

                                    <td>
                                        <span class="badge bg-primary fs-6"><?= formatCurrency($emp['net_salary_calculated']) ?></span>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<script>
    // =========================================================================
    // دالة فلترة الجدول بناءً على حقل البحث
    // =========================================================================
    function filterTable() {
        const input = document.getElementById("searchInput");
        const filter = input.value.toUpperCase();
        const table = document.getElementById("salaryTable");
        const tr = table.getElementsByTagName("tr");

        for (let i = 1; i < tr.length; i++) { // نبدأ من 1 لتجاهل رأس الجدول (thead)
            const td = tr[i].getElementsByTagName("td")[1]; // العمود الثاني هو عمود اسم الموظف
            if (td) {
                const textValue = td.textContent || td.innerText;
                if (textValue.toUpperCase().indexOf(filter) > -1) {
                    tr[i].style.display = "";
                } else {
                    tr[i].style.display = "none";
                }
            }
        }
    }
</script>

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