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

$pageTitle = 'تقارير الموظفين المالية';
include '../../includes/header.php';

checkLogin();
// صلاحية الوصول للصفحة بأكملها
if (!hasPermission('view_employees')) {
  $_SESSION['error_message'] = 'ليس لديك صلاحية لعرض هذه الصفحة.';
  header('Location: index.php');
  exit();
}

$db = getDB();
$employees = [];
$employeeDetails = null;
$errors = [];

$searchQuery = trim($_GET['search'] ?? '');
$filterLocation = trim($_GET['location'] ?? '');
$filterPosition = trim($_GET['position'] ?? '');
// *** إضافة فلتر الحالة (status) ***
$filterStatus = trim($_GET['status'] ?? '1'); // القيمة الافتراضية: 1 (فعال)
// *** نهاية إضافة فلتر الحالة ***
$employeeId = intval($_GET['employee_id'] ?? 0);

// =========================================================================
// ** منطق ترقيم الصفحات (Pagination) **
// =========================================================================
$recordsPerPage = 20;
$currentPage = intval($_GET['page'] ?? 1);
if ($currentPage < 1) $currentPage = 1;
$offset = ($currentPage - 1) * $recordsPerPage;

$totalEmployees = 0; // لعد إجمالي الموظفين قبل تطبيق LIMIT
$totalPages = 1; // القيمة الافتراضية لصفحة واحدة

// =========================================================================
// ** نهاية منطق ترقيم الصفحات **
// =========================================================================

// جلب الإحصائيات والكروت
try {
  // يجب أن تكون صلاحية عرض الرواتب موجودة لعرض هذه الأرقام
  $canViewSalaries = hasPermission('view_employee_salaries');

  if ($canViewSalaries) {
    $highestSalary = $db->selectOne("SELECT MAX(salary) AS max_salary FROM employees")['max_salary'] ?? 0;
  } else {
    $highestSalary = 'مخفي'; // أو قيمة فارغة إذا لم تكن لديه صلاحية
  }

  $mostEmployeesLocation = $db->selectOne("
    SELECT location_of_work, COUNT(*) AS employee_count
    FROM employees
    GROUP BY location_of_work
    ORDER BY employee_count DESC
    LIMIT 1
  ")['location_of_work'] ?? 'غير محدد';

  $mostCommonPosition = $db->selectOne("
    SELECT position, COUNT(*) AS position_count
    FROM employees
    GROUP BY position
    ORDER BY position_count DESC
    LIMIT 1
  ")['position'] ?? 'غير محدد';
    
    // *** جلب إحصائيات حالة الموظفين (الكروت الجديدة) ***
    $activeEmployeesCount = $db->selectOne("SELECT COUNT(*) AS total FROM employees WHERE status = 1")['total'] ?? 0;
    $inactiveEmployeesCount = $db->selectOne("SELECT COUNT(*) AS total FROM employees WHERE status = 0")['total'] ?? 0;
    // *** نهاية جلب إحصائيات حالة الموظفين ***

} catch (Exception $e) {
  error_log("Database error in statistics: " . $e->getMessage());
  $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب الإحصائيات.';
}

// جلب قائمة بمواقع العمل والمناصب لتعبئة قوائم الفلتر
try {
  $locations = $db->select("SELECT DISTINCT location_of_work FROM employees WHERE location_of_work IS NOT NULL AND location_of_work != '' ORDER BY location_of_work ASC");
  $positions = $db->select("SELECT DISTINCT position FROM employees WHERE position IS NOT NULL AND position != '' ORDER BY position ASC");
} catch (Exception $e) {
  error_log("Database error in filters: " . $e->getMessage());
  $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب خيارات التصفية.';
}

// جلب تفاصيل موظف واحد إذا تم تحديد ID وكانت هناك صلاحية لعرض التفاصيل
if ($employeeId > 0 && hasPermission('view_employee_salaries')) {
  try {
    $employeeDetails = $db->selectOne("SELECT * FROM employees WHERE id = ?", [$employeeId]);
    if (!$employeeDetails) {
      $errors[] = 'الموظف المطلوب غير موجود.';
    }
  } catch (Exception $e) {
    error_log("Database error in employee details: " . $e->getMessage());
    $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب تفاصيل الموظف.';
  }
} else if ($employeeId > 0 && !hasPermission('view_employee_salaries')) {
  $_SESSION['error_message'] = 'ليس لديك صلاحية لعرض تفاصيل الموظف.';
  // Redirect back to the list view if they tried to view details without permission
  header('Location: salaries_report.php?location=' . urlencode($filterLocation) . '&position=' . urlencode($filterPosition) . '&search=' . urlencode($searchQuery) . '&status=' . urlencode($filterStatus));
  exit();
}
else {
  // بناء استعلام قاعدة البيانات لعدد الموظفين الإجمالي (لأغراض الترقيم)
  $countQuery = "SELECT COUNT(*) AS total FROM employees WHERE 1=1";
  $listQuery = "SELECT id, full_name, position, salary, location_of_work FROM employees WHERE 1=1";
  $params = [];

  if (!empty($searchQuery)) {
    $countQuery .= " AND full_name LIKE ?";
    $listQuery .= " AND full_name LIKE ?";
    $params[] = '%' . $searchQuery . '%';
  }

  if (!empty($filterLocation)) {
    $countQuery .= " AND location_of_work = ?";
    $listQuery .= " AND location_of_work = ?";
    $params[] = $filterLocation;
  }

  if (!empty($filterPosition)) {
    $countQuery .= " AND position = ?";
    $listQuery .= " AND position = ?";
    $params[] = $filterPosition;
  }

    // *** تطبيق فلتر الحالة على الاستعلامات ***
    if ($filterStatus !== 'all') {
        $statusValue = ($filterStatus == '1') ? 1 : 0;
        $countQuery .= " AND status = ?";
        $listQuery .= " AND status = ?";
        $params[] = $statusValue;
    }
    // *** نهاية تطبيق فلتر الحالة ***
 
  // جلب إجمالي عدد الموظفين المطابقين للفلاتر
  try {
    $totalResult = $db->selectOne($countQuery, $params);
    $totalEmployees = $totalResult['total'] ?? 0;
    $totalPages = ceil($totalEmployees / $recordsPerPage);
  } catch (Exception $e) {
    error_log("Database error in employee count: " . $e->getMessage());
    $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب عدد الموظفين.';
  }

  // جلب قائمة الموظفين مع الفلترة والترقيم
  $listQuery .= " ORDER BY full_name ASC LIMIT ? OFFSET ?";
  $params[] = $recordsPerPage;
  $params[] = $offset;
 
  try {
    $employees = $db->select($listQuery, $params);
  } catch (Exception $e) {
    error_log("Database error in employee list: " . $e->getMessage());
    $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب قائمة الموظفين.';
  }
}
?>

<div class="content-area">
  <div class="page-header">
    <div class="d-flex justify-content-between align-items-center">
      <div>
        <h2 class="page-title">تقارير الموظفين المالية</h2>
        <p class="page-subtitle">نظرة عامة على الرواتب والإحصائيات الرئيسية.</p>
      </div>
    </div>
  </div>
 
  <?php if (!empty($errors)): ?>
    <div class="alert alert-danger mt-3">
      <ul class="mb-0">
        <?php foreach ($errors as $error): ?>
          <li><?php echo htmlspecialchars($error); ?></li>
        <?php endforeach; ?>
      </ul>
    </div>
  <?php endif; ?>

  <?php if (!$employeeDetails): // إخفاء الإحصائيات عند عرض تفاصيل موظف واحد ?>
      <div class="row mb-4">
        <div class="col-md-3 mb-3">
      <div class="card shadow-sm h-100">
        <div class="card-body text-center">
          <h5 class="card-title">الموظفون الفعّالون</h5>
          <h3 class="text-success"><?php echo number_format($activeEmployeesCount); ?></h3>
        </div>
      </div>
    </div>
        <div class="col-md-3 mb-3">
      <div class="card shadow-sm h-100">
        <div class="card-body text-center">
          <h5 class="card-title">الموظفون المتوقفون</h5>
          <h3 class="text-danger"><?php echo number_format($inactiveEmployeesCount); ?></h3>
        </div>
      </div>
    </div>
        <div class="col-md-3 mb-3">
      <div class="card shadow-sm h-100">
        <div class="card-body text-center">
          <h5 class="card-title">أعلى راتب</h5>
          <h3 class="text-success"><?php echo ($canViewSalaries ? number_format($highestSalary, 2) : 'مخفي'); ?></h3>
        </div>
      </div>
    </div>
    <div class="col-md-3 mb-3">
      <div class="card shadow-sm h-100">
        <div class="card-body text-center">
          <h5 class="card-title">أكثر موقع عمل</h5>
          <h3 class="text-info"><?php echo htmlspecialchars($mostEmployeesLocation); ?></h3>
        </div>
      </div>
    </div>
          </div>

  <div class="card shadow-sm mb-4">
    <div class="card-body">
      <form method="GET" class="row g-3">
        <div class="col-md-3">
          <label for="search" class="form-label">البحث بالاسم</label>
          <input type="text" class="form-control" id="search" name="search"
             placeholder="ادخل اسم الموظف..." value="<?php echo htmlspecialchars($searchQuery); ?>">
        </div>
        <div class="col-md-3">
          <label for="location" class="form-label">موقع العمل</label>
          <select class="form-control" id="location" name="location">
            <option value="">جميع المواقع</option>
            <?php foreach ($locations as $loc): ?>
              <option value="<?php echo htmlspecialchars($loc['location_of_work']); ?>" <?php echo ($filterLocation == $loc['location_of_work']) ? 'selected' : ''; ?>>
                <?php echo htmlspecialchars($loc['location_of_work']); ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>
        <div class="col-md-3">
          <label for="position" class="form-label">المنصب الوظيفي</label>
          <select class="form-control" id="position" name="position">
            <option value="">جميع المناصب</option>
            <?php foreach ($positions as $pos): ?>
              <option value="<?php echo htmlspecialchars($pos['position']); ?>" <?php echo ($filterPosition == $pos['position']) ? 'selected' : ''; ?>>
                <?php echo htmlspecialchars($pos['position']); ?>
              </option>
            <?php endforeach; ?>
          </select>
        </div>
                <div class="col-md-3">
          <label for="status" class="form-label">حالة الموظف</label>
          <select class="form-control" id="status" name="status">
            <option value="all" <?php echo ($filterStatus == 'all') ? 'selected' : ''; ?>>الكل</option>
            <option value="1" <?php echo ($filterStatus == '1') ? 'selected' : ''; ?>>فعال فقط</option>
            <option value="0" <?php echo ($filterStatus == '0') ? 'selected' : ''; ?>>متوقف فقط</option>
          </select>
        </div>
                        <div class="col-12 d-grid">
          <button class="btn btn-primary" type="submit">
            <i class="fas fa-filter me-1"></i>فلترة وبحث
          </button>
        </div>
      </form>
    </div>
  </div>
  <?php endif; ?>
 
  <?php if ($employeeDetails): // عرض تفاصيل موظف واحد (لم يتم تعديل هذا الجزء) ?>
    <div class="card shadow-sm mt-4">
      <div class="card-header bg-primary text-white d-flex justify-content-between align-items-center">
        <h5 class="card-title mb-0">تفاصيل الموظف: <?php echo htmlspecialchars($employeeDetails['full_name']); ?></h5>
        <a href="salaries_report.php?location=<?php echo htmlspecialchars($filterLocation); ?>&position=<?php echo htmlspecialchars($filterPosition); ?>&search=<?php echo htmlspecialchars($searchQuery); ?>&status=<?php echo htmlspecialchars($filterStatus); ?>" class="btn btn-light btn-sm">
          <i class="fas fa-arrow-left me-2"></i>العودة إلى القائمة
        </a>
      </div>
      <div class="card-body">
        <div class="row">
          <div class="col-md-4 text-center">
            <?php if (!empty($employeeDetails['profile_picture'])): // عرض صورة الملف الشخصي إذا كانت موجودة ?>
              <img src="<?php echo htmlspecialchars($employeeDetails['profile_picture']); ?>" class="img-fluid rounded-circle shadow-sm" alt="صورة الموظف" style="width: 150px; height: 150px; object-fit: cover;">
            <?php else: // عرض أيقونة افتراضية إذا لم تكن هناك صورة ?>
              <i class="fas fa-user-circle fa-10x text-muted"></i>
            <?php endif; ?>
            <h4 class="mt-3"><?php echo htmlspecialchars($employeeDetails['full_name']); ?></h4>
            <p class="text-muted"><?php echo htmlspecialchars($employeeDetails['position']); ?></p>
          </div>
          <div class="col-md-8">
            <ul class="list-group list-group-flush">
              <?php if ($canViewSalaries): ?>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>الراتب:</strong> <span><?php echo number_format(htmlspecialchars($employeeDetails['salary'] ?? 0), 2); ?></span>
              </li>
              <?php else: ?>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>الراتب:</strong> <span class="text-danger">مخفي</span>
              </li>
              <?php endif; ?>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>تاريخ التعيين:</strong> <span><?php echo htmlspecialchars($employeeDetails['date_hired'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>موقع العمل:</strong> <span><?php echo htmlspecialchars($employeeDetails['location_of_work'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>الهوية الوطنية:</strong> <span><?php echo htmlspecialchars($employeeDetails['national_id_number'] ?? 'غير متوفر'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>عنوان السكن:</strong> <span><?php echo htmlspecialchars($employeeDetails['home_address'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>تاريخ الميلاد:</strong> <span><?php echo htmlspecialchars($employeeDetails['date_of_birth'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>الحالة الزوجية:</strong> <span><?php echo htmlspecialchars($employeeDetails['marital_status'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <strong>نوع الجنس:</strong> <span><?php echo htmlspecialchars($employeeDetails['gender'] ?? 'غير محدد'); ?></span>
              </li>
              <li class="list-group-item">
                <strong>ملاحظات:</strong> <span><?php echo nl2br(htmlspecialchars($employeeDetails['notes'] ?? 'لا توجد ملاحظات')); ?></span>
              </li>
              <li class="list-group-item">
                <strong>المرفقات:</strong>
                <ul class="list-unstyled mt-2">
                  <?php
                  $hasAttachments = false;
                  for ($i = 1; $i <= 3; $i++):
                    if (!empty($employeeDetails['attachment' . $i])):
                      $hasAttachments = true;
                      $fileName = basename($employeeDetails['attachment' . $i]);
                  ?>
                      <li>
                        <a href="<?php echo htmlspecialchars($employeeDetails['attachment' . $i]); ?>" target="_blank" class="text-decoration-none">
                          <i class="fas fa-file-alt me-2"></i> <?php echo htmlspecialchars($fileName); ?>
                        </a>
                      </li>
                  <?php
                    endif;
                  endfor;
                  if (!$hasAttachments):
                  ?>
                    <li>لا توجد مرفقات.</li>
                  <?php endif; ?>
                </ul>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  <?php else: // عرض قائمة الموظفين عند الفلترة أو بشكل افتراضي ?>
  <div class="card shadow-sm mt-4">
    <div class="card-header">
      <h5 class="card-title mb-0">قائمة رواتب الموظفين</h5>
    </div>
    <div class="card-body p-0">
      <?php if (empty($employees) && $totalEmployees > 0): ?>
        <div class="text-center py-5">
          <h5 class="text-muted">لا توجد بيانات موظفين في هذه الصفحة.</h5>
        </div>
      <?php elseif (empty($employees) && $totalEmployees === 0): ?>
        <div class="text-center py-5">
          <h5 class="text-muted">لا توجد بيانات موظفين لعرضها بناءً على الفلاتر المحددة.</h5>
        </div>
      <?php else: ?>
        <div class="table-responsive">
          <table class="table table-hover mb-0">
            <thead>
              <tr>
                <th>#</th>                 <th>الاسم الكامل</th>
                <th>المنصب الوظيفي</th>
                <th>الراتب</th>
                <?php if ($canViewSalaries): // ظهور عمود الإجراءات فقط لمن لديهم صلاحية عرض التفاصيل ?>
                <th>الإجراءات</th>
                <?php endif; ?>
              </tr>
            </thead>
            <tbody>
              <?php $counter = $offset + 1; // تهيئة عداد التسلسل للصفحة الحالية ?>
              <?php foreach ($employees as $emp): ?>
                <tr>
                  <td><?php echo $counter++; ?></td>                   <td><?php echo htmlspecialchars($emp['full_name']); ?></td>
                  <td><?php echo htmlspecialchars($emp['position']); ?></td>
                  <td>
                    <?php if ($canViewSalaries): ?>
                      <?php echo number_format(htmlspecialchars($emp['salary'] ?? 0), 2); ?>
                    <?php else: ?>
                      <span class="text-muted">مخفي</span>
                    <?php endif; ?>
                  </td>
                  <?php if ($canViewSalaries): ?>
                  <td>
                    <a href="salaries_report.php?employee_id=<?php echo $emp['id']; ?>&location=<?php echo htmlspecialchars($filterLocation); ?>&position=<?php echo htmlspecialchars($filterPosition); ?>&search=<?php echo htmlspecialchars($searchQuery); ?>&status=<?php echo htmlspecialchars($filterStatus); ?>" class="btn btn-info btn-sm">
                      <i class="fas fa-eye me-1"></i>عرض التفاصيل
                    </a>
                  </td>
                  <?php endif; ?>
                </tr>
              <?php endforeach; ?>
            </tbody>
          </table>
        </div>

                <nav aria-label="Employee List Pagination" class="mt-3">
          <ul class="pagination justify-content-center">
            <?php 
                            // دالة مساعدة لإنشاء رابط التصفح مع جميع الفلاتر
                            function getPaginationLink($page, $search, $location, $position, $status) {
                                return "salaries_report.php?page={$page}&search=" . urlencode($search) . "&location=" . urlencode($location) . "&position=" . urlencode($position) . "&status=" . urlencode($status);
                            }
                        ?>
            <?php if ($currentPage > 1): ?>
              <li class="page-item">
                <a class="page-link" href="<?php echo getPaginationLink($currentPage - 1, $searchQuery, $filterLocation, $filterPosition, $filterStatus); ?>" aria-label="Previous">
                  <span aria-hidden="true">&laquo;</span>
                </a>
              </li>
            <?php endif; ?>

            <?php for ($i = 1; $i <= $totalPages; $i++): ?>
              <li class="page-item <?php echo ($i == $currentPage) ? 'active' : ''; ?>">
                <a class="page-link" href="<?php echo getPaginationLink($i, $searchQuery, $filterLocation, $filterPosition, $filterStatus); ?>">
                  <?php echo $i; ?>
                </a>
              </li>
            <?php endfor; ?>

            <?php if ($currentPage < $totalPages): ?>
              <li class="page-item">
                <a class="page-link" href="<?php echo getPaginationLink($currentPage + 1, $searchQuery, $filterLocation, $filterPosition, $filterStatus); ?>" aria-label="Next">
                  <span aria-hidden="true">&raquo;</span>
                </a>
              </li>
            <?php endif; ?>
          </ul>
        </nav>
      <?php endif; ?>
    </div>
  </div>
  <?php endif; ?>
</div>

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