<?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_employee_salaries')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لعرض هذه الصفحة.';
    header('Location: index.php');
    exit();
}

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

// =========================================================================
// ** 1. معالجة عوامل البحث والتصفية **
// =========================================================================
// تحديد الشهر المستهدف (الشهر الحالي افتراضياً)
$targetMonth = trim($_GET['month'] ?? date('Y-m'));
// حقل البحث عن اسم الموظف
$searchName = trim($_GET['search_name'] ?? '');

// التحقق من صحة تنسيق الشهر
if (!preg_match('/^\d{4}-\d{2}$/', $targetMonth)) {
    $targetMonth = date('Y-m'); // العودة للافتراضي إذا كان التنسيق خاطئاً
}

// تهيئة الشهر لتنسيق قاعدة البيانات (YYYY-MM-01)
$targetMonthDate = $targetMonth . '-01';


// =========================================================================
// ** 2. منطق معالجة زر "تسليم راتب سريع" **
// =========================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'quick_pay') {
    if (!hasPermission('add_employee_salary')) {
        $_SESSION['error_message'] = 'ليس لديك صلاحية لإجراء عملية الدفع السريعة.';
    } else {
        $employeeId = intval($_POST['employee_id'] ?? 0);
        
        try {
            // جلب بيانات الموظف الأساسية وراتبه
            $employee = $db->selectOne("SELECT full_name, salary FROM employees WHERE id = ?", [$employeeId]);
            
            if ($employee) {
                // التحقق من عدم التكرار
                $checkExists = $db->selectOne(
                    "SELECT id FROM monthly_salaries WHERE employee_id = ? AND payment_month = ?",
                    [$employeeId, $targetMonthDate]
                );

                if ($checkExists) {
                    $_SESSION['error_message'] = 'تم دفع راتب ' . htmlspecialchars($employee['full_name']) . ' بالفعل لشهر ' . $targetMonth . '.';
                } else {
                    // تنفيذ الإدراج السريع
                    $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, 0.00, ?, 'تحويل بنكي (سريع)', 'دفعة سريعة من قائمة الرواتب', ?)";
                    
                    $db->insert($sql, [
                        $employeeId, 
                        $targetMonthDate, 
                        $employee['salary'], 
                        $employee['salary'], 
                        $_SESSION['user_id'] ?? NULL
                    ]);

                    $_SESSION['success_message'] = '✅ تم تسجيل الدفعة السريعة لـ ' . htmlspecialchars($employee['full_name']) . ' بنجاح.';
                }
            } else {
                $_SESSION['error_message'] = 'خطأ: الموظف غير موجود.';
            }

        } catch (Exception $e) {
            error_log("Quick pay error: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في قاعدة البيانات أثناء تسجيل الدفعة.';
        }
    }
    // إعادة التوجيه للحفاظ على حالة الـ POST
    header('Location: monthly_salaries_list.php?month=' . urlencode($targetMonth) . '&search_name=' . urlencode($searchName));
    exit();
}

// =========================================================================
// ** 3. منطق معالجة زر "حذف راتب" (سجل واحد) **
// =========================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'delete_salary') {
    if (!hasPermission('delete_employee_salary')) { 
        $_SESSION['error_message'] = 'ليس لديك صلاحية لحذف سجلات الرواتب.';
    } else {
        $salaryIdToDelete = intval($_POST['salary_record_id'] ?? 0);
        
        try {
            if ($salaryIdToDelete > 0) {
                $salaryRecord = $db->selectOne("
                    SELECT ms.id, e.full_name, ms.payment_month 
                    FROM monthly_salaries ms
                    JOIN employees e ON ms.employee_id = e.id
                    WHERE ms.id = ?
                ", [$salaryIdToDelete]);
                
                if ($salaryRecord) {
                    $db->delete("DELETE FROM monthly_salaries WHERE id = ?", [$salaryIdToDelete]);
                    $_SESSION['success_message'] = '🗑️ تم حذف راتب **' . htmlspecialchars($salaryRecord['full_name']) . '** لشهر **' . date('Y-m', strtotime($salaryRecord['payment_month'])) . '** بنجاح.';
                } else {
                    $_SESSION['error_message'] = 'خطأ: لم يتم العثور على سجل الراتب للحذف.';
                }
            } else {
                $_SESSION['error_message'] = 'خطأ: لم يتم تحديد معرف سجل الراتب.';
            }

        } catch (Exception $e) {
            error_log("Salary delete error: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في قاعدة البيانات أثناء محاولة الحذف.';
        }
    }
    // إعادة التوجيه للحفاظ على حالة الـ POST
    header('Location: monthly_salaries_list.php?month=' . urlencode($targetMonth) . '&search_name=' . urlencode($searchName));
    exit();
}

// =========================================================================
// ** 4. منطق معالجة زر "حذف جميع الرواتب لهذا الشهر" **
// =========================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'delete_all_salaries_for_month') {
    if (!hasPermission('delete_employee_salary')) { 
        $_SESSION['error_message'] = 'ليس لديك صلاحية لحذف جميع سجلات الرواتب.';
    } else {
        try {
            // حذف جميع سجلات الرواتب التي تطابق شهر الدفع
            $deleteCount = $db->delete("DELETE FROM monthly_salaries WHERE payment_month = ?", [$targetMonthDate]);
            
            if ($deleteCount > 0) {
                $_SESSION['success_message'] = '🗑️ تم حذف **' . $deleteCount . '** سجل راتب بنجاح لشهر **' . $targetMonth . '**.';
            } else {
                $_SESSION['error_message'] = 'لم يتم العثور على أي سجلات رواتب للحذف في شهر **' . $targetMonth . '**.';
            }

        } catch (Exception $e) {
            error_log("Mass salary delete error: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في قاعدة البيانات أثناء محاولة الحذف الجماعي.';
        }
    }
    // إعادة التوجيه للحفاظ على حالة الـ POST
    header('Location: monthly_salaries_list.php?month=' . urlencode($targetMonth) . '&search_name=' . urlencode($searchName));
    exit();
}

// =========================================================================
// ** 5. جلب قائمة الموظفين وحالة الدفع (مع تطبيق التصفية) **
// =========================================================================
try {
    // بناء الاستعلام وتجهيز البارامترات
    $query = "
        SELECT 
            e.id, 
            e.full_name, 
            e.position,
            e.salary,
            ms.net_salary,
            ms.id AS salary_record_id
        FROM 
            employees e
        LEFT JOIN 
            monthly_salaries ms 
        ON 
            e.id = ms.employee_id AND ms.payment_month = ?
    ";

    $params = [$targetMonthDate];
    
    // إضافة شرط البحث بالاسم إذا كان موجوداً
    if (!empty($searchName)) {
        $query .= " WHERE e.full_name LIKE ?";
        $params[] = '%' . $searchName . '%';
    }

    $query .= " ORDER BY e.full_name ASC";

    $employeesData = $db->select($query, $params);

} catch (Exception $e) {
    error_log("Database error fetching employee salaries list: " . $e->getMessage());
    $errors[] = 'حدث خطأ في قاعدة البيانات أثناء جلب قائمة الموظفين وحالة الرواتب.';
}

// عرض رسائل الجلسة
$sessionMessage = $_SESSION['success_message'] ?? $_SESSION['error_message'] ?? null;
$messageClass = isset($_SESSION['success_message']) ? 'alert-success' : 'alert-danger';
unset($_SESSION['success_message'], $_SESSION['error_message']);

// =========================================================================
// ** 6. تصميم الواجهة (HTML) **
// =========================================================================
?>

<div class="content-area">
    <div class="page-header">
        <h2 class="page-title"><?php echo $pageTitle; ?></h2>
        <p class="page-subtitle">عرض حالة دفع رواتب الموظفين للشهر المحدد مع خيارات التعديل والحذف.</p>
    </div>
    
    <?php if ($sessionMessage): ?>
        <div class="alert <?php echo $messageClass; ?> mt-3">
            <?php echo htmlspecialchars($sessionMessage); ?>
        </div>
    <?php endif; ?>

    <?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 (hasPermission('add_employee_salary')): ?>
        <div class="mb-4 text-center d-flex justify-content-center gap-3">
            
            <a href="calculate_salaries.php" class="btn btn-primary btn-lg shadow-lg">
                <i class="fas fa-cogs me-2"></i> **معالجة / حساب الرواتب**
            </a>
            
            <a href="add_monthly_salary.php" class="btn btn-success btn-lg shadow-lg">
                <i class="fas fa-calculator me-2"></i> **تسجيل راتب يدوي**
            </a>
            
        </div>
    <?php endif; ?>
    <div class="card shadow-sm mb-4">
        <div class="card-body">
            <form method="GET" class="row g-3 align-items-end">
                <div class="col-md-4">
                    <label for="month" class="form-label">الشهر المستهدف</label>
                    <input type="text" class="form-control" id="month" name="month"
                           placeholder="YYYY-MM (مثال: 2025-10)" required
                           pattern="\d{4}-\d{2}" title="يرجى استخدام التنسيق YYYY-MM"
                           value="<?php echo htmlspecialchars($targetMonth); ?>">
                </div>
                
                <div class="col-md-4">
                    <label for="search_name" class="form-label">البحث عن موظف</label>
                    <input type="text" class="form-control" id="search_name" name="search_name"
                           placeholder="أدخل جزء من اسم الموظف..."
                           value="<?php echo htmlspecialchars($searchName); ?>">
                </div>

                <div class="col-md-4 d-grid">
                    <button class="btn btn-primary" type="submit">
                        <i class="fas fa-search me-1"></i> بحث وتصفية
                    </button>
                </div>
            </form>
            
            <hr>
            
            <?php if (hasPermission('delete_employee_salary')): ?>
                <form method="POST" onsubmit="return confirm('⚠️ تحذير: هل أنت متأكد من حذف جميع الرواتب المسجلة لشهر <?php echo $targetMonth; ?>؟ هذا الإجراء لا رجعة فيه.');">
                    <input type="hidden" name="action" value="delete_all_salaries_for_month">
                    <button type="submit" class="btn btn-danger btn-sm">
                        <i class="fas fa-trash-alt me-1"></i> حذف جميع الرواتب لشهر **<?php echo $targetMonth; ?>**
                    </button>
                    <small class="text-danger ms-3">هذا الإجراء يحذف جميع السجلات المدفوعة لهذا الشهر.</small>
                </form>
            <?php endif; ?>
            </div>
    </div>

    <div class="card shadow-sm mt-4">
        <div class="card-header">
            <h5 class="card-title mb-0">حالة رواتب شهر: <span class="text-primary"><?php echo $targetMonth; ?></span></h5>
        </div>
        <div class="card-body p-0">
            <?php if (empty($employeesData)): ?>
                <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>
                                <th>حالة الدفع</th>
                                <th>الإجراءات</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php $counter = 1; ?>
                            <?php foreach ($employeesData as $emp): ?>
                                <?php $isPaid = !is_null($emp['salary_record_id']); ?>
                                <tr class="<?php echo $isPaid ? 'table-light' : 'table-warning'; ?>">
                                    <td><?php echo $counter++; ?></td>
                                    <td><?php echo htmlspecialchars($emp['full_name']); ?></td>
                                    <td><?php echo htmlspecialchars($emp['position']); ?></td>
                                    <td><?php echo number_format(htmlspecialchars($emp['salary'] ?? 0), 2); ?></td>
                                    <td>
                                        <?php if ($isPaid): ?>
                                            <span class="badge bg-success">✅ تم الدفع</span>
                                            <span class="text-muted small d-block">صافي: <?php echo number_format(htmlspecialchars($emp['net_salary'] ?? 0), 2); ?></span>
                                        <?php else: ?>
                                            <span class="badge bg-danger">❌ لم يتم الدفع</span>
                                        <?php endif; ?>
                                    </td>
                                    <td>
                                        <?php if ($isPaid): ?>
                                            
                                            <a href="salary_details.php?id=<?php echo $emp['salary_record_id']; ?>" class="btn btn-info btn-sm" title="عرض تفاصيل الدفعة">
                                                <i class="fas fa-eye"></i> تفاصيل
                                            </a>
                                            
                                            <?php if (hasPermission('edit_employee_salary')): ?>
                                                <a href="edit_monthly_salary.php?id=<?php echo $emp['salary_record_id']; ?>" class="btn btn-primary btn-sm" title="تعديل البدلات/الخصومات">
                                                    <i class="fas fa-edit"></i> تعديل
                                                </a>
                                            <?php endif; ?>

                                            <?php if (hasPermission('delete_employee_salary')): ?>
                                                <form method="POST" class="d-inline-block" onsubmit="return confirm('⚠️ هل أنت متأكد تماماً من حذف راتب <?php echo htmlspecialchars($emp['full_name']); ?>؟');">
                                                    <input type="hidden" name="salary_record_id" value="<?php echo $emp['salary_record_id']; ?>">
                                                    <input type="hidden" name="action" value="delete_salary">
                                                    <button type="submit" class="btn btn-danger btn-sm" title="حذف سجل الراتب بالكامل">
                                                        <i class="fas fa-trash"></i>
                                                    </button>
                                                </form>
                                            <?php endif; ?>

                                        <?php elseif (hasPermission('add_employee_salary')): ?>
                                            
                                            <form method="POST" class="d-inline-block" onsubmit="return confirm('هل أنت متأكد من تسجيل دفعة سريعة (الراتب الأساسي فقط) لـ <?php echo htmlspecialchars($emp['full_name']); ?> لشهر <?php echo $targetMonth; ?>؟');">
                                                <input type="hidden" name="employee_id" value="<?php echo $emp['id']; ?>">
                                                <input type="hidden" name="action" value="quick_pay">
                                                <button type="submit" class="btn btn-success btn-sm" title="تسجيل راتب أساسي بدون بدلات أو خصومات">
                                                    <i class="fas fa-hand-holding-usd me-1"></i> تسليم راتب
                                                </button>
                                            </form>
                                            
                                            <a href="add_monthly_salary.php?employee_id=<?php echo $emp['id']; ?>&month=<?php echo $targetMonth; ?>" class="btn btn-outline-success btn-sm ms-2" title="تسجيل راتب مع بدلات وخصومات">
                                                <i class="fas fa-calculator"></i> حساب
                                            </a>
                                            
                                        <?php else: ?>
                                            <span class="text-muted">لا يوجد إجراء</span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

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