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

$pageTitle = 'إدارة سياسة أسعار الإجازات والدوام';

// مسار ملف التكوين
$configFilePath = '../../includes/vacation_config.php'; 

// تضمين الملفات الأساسية
include '../../includes/header.php'; 

checkLogin();

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

$successMessage = $_SESSION['success_message'] ?? '';
unset($_SESSION['success_message']);

$errorMessage = $_SESSION['error_message'] ?? '';
unset($_SESSION['error_message']);

// =========================================================================
// وظائف المساعدة
// =========================================================================

// تعريف أيام الأسبوع بترتيب ISO 8601 (1=الاثنين, 7=الأحد)
$ISO_DAYS = [
    1 => 'الاثنين', 2 => 'الثلاثاء', 3 => 'الأربعاء', 
    4 => 'الخميس', 5 => 'الجمعة', 6 => 'السبت', 7 => 'الأحد'
];

/**
 * جلب الأسعار الحالية من ملف التكوين.
 * @param string $path مسار ملف التكوين.
 * @return array الأسعار المحفوظة.
 */
function loadVacationRates($path) {
    // 💡 التعديل: تحديث القيم الافتراضية لتشمل WEEKEND_DAYS_ISO
    $DEFAULT_RATES = [
        'سنوية' => 1.00, 'Annual' => 1.00, 
        'مرضية' => 0.75, 'Sick' => 0.75,
        'طارئة' => 1.00, 'إجازة_زواج' => 1.00, 
        'إجازة_وفاة' => 1.00, 'مكلف_بمهمة' => 1.00,
        'واجب' => 1.00, 'واجب_وقتي' => 1.00,
        'زمنية' => 0.50, 'ايفاد' => 1.00,
        'تفرغ' => 1.00, 'استراحة' => 1.00,
        'دوام_في_عطلة' => 1.00,
        'بدون_راتب' => 0.00, 'غياب' => 0.00, 'أخرى' => 0.00,
        'WEEKEND_DAYS_ISO' => [5, 6] // الجمعة (5) والسبت (6) كافتراضي
    ];
    
    if (file_exists($path)) {
        $loadedRates = require $path;
        // الدمج مع الافتراضيات لضمان وجود WEEKEND_DAYS_ISO
        return array_merge($DEFAULT_RATES, $loadedRates);
    }
    return $DEFAULT_RATES;
}

/**
 * حفظ الأسعار الجديدة في ملف التكوين.
 * @param string $path مسار ملف التكوين.
 * @param array $rates المصفوفة المراد حفظها.
 * @return bool نجاح عملية الحفظ.
 */
function saveVacationRates($path, $rates) {
    // تنسيق المصفوفة لتكون ملف PHP
    $content = "<?php\n// تم توليد هذا الملف آلياً من صفحة الإعدادات\n\nreturn [\n";
    foreach ($rates as $type => $rate) {
        // 💡 التعديل: التعامل مع WEEKEND_DAYS_ISO كمصفوفة أرقام
        if ($type === 'WEEKEND_DAYS_ISO') {
            $weekend_array_content = implode(', ', $rate);
            $content .= "    " . var_export($type, true) . " => [" . $weekend_array_content . "],\n";
        } else {
            // حفظ الأسعار كأرقام بفاصلتين عشريتين
            $content .= "    " . var_export($type, true) . " => " . number_format((float)$rate, 2) . ",\n";
        }
    }
    $content .= "];\n";

    // كتابة المحتوى في الملف
    if (file_put_contents($path, $content) !== false) {
        return true;
    }
    return false;
}

// =========================================================================
// معالجة النموذج المُرسل
// =========================================================================

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_rates'])) {
    $newRates = [];
    $is_valid = true;

    // 1. معالجة أسعار الإجازات
    foreach ($_POST['vacation_type'] as $index => $type) {
        $rate = $_POST['pay_rate'][$index] ?? 0.0;
        
        // التحقق من صحة القيمة (يجب أن تكون بين 0 و 1)
        $rate = filter_var($rate, FILTER_VALIDATE_FLOAT, ['options' => ['min_range' => 0, 'max_range' => 1]]);
        
        if ($rate === false) {
            $_SESSION['error_message'] = "❌ قيمة نسبة الدفع لـ **" . htmlspecialchars($type) . "** غير صحيحة. يجب أن تكون بين 0.00 و 1.00.";
            $is_valid = false;
            break;
        }
        $newRates[trim($type)] = $rate;
    }

    // 2. معالجة أيام العطلة الأسبوعية
    // 💡 التعديل: جلب أيام العطلة الأسبوعية من النموذج
    $weekendDays = $_POST['weekend_days_iso'] ?? [];
    if (!is_array($weekendDays)) $weekendDays = [];
    $weekendDays = array_map('intval', $weekendDays);
    $newRates['WEEKEND_DAYS_ISO'] = $weekendDays;


    if ($is_valid) {
        // جلب الأسعار الموجودة حالياً لضمان عدم فقدان أي نوع إجازة قديمة
        $existingRates = loadVacationRates($configFilePath);
        
        $finalRates = [];
        // دمج الأسعار القديمة مع التعديلات الجديدة (الجديد يلغي القديم في حال التكرار)
        foreach ($existingRates as $key => $value) {
            // إذا كان المفتاح هو WEEKEND_DAYS_ISO، نستخدم القيمة الجديدة فقط
            if ($key === 'WEEKEND_DAYS_ISO') {
                 $finalRates[$key] = $newRates[$key];
            } else {
                 // استخدام القيمة الجديدة إذا تم إرسالها، وإلا استخدام القيمة الحالية
                 $finalRates[$key] = $newRates[$key] ?? $value;
            }
        }
        // التأكد من أن جميع الإعدادات الجديدة قد حفظت
        $finalRates = array_merge($finalRates, $newRates);


        if (saveVacationRates($configFilePath, $finalRates)) {
            $_SESSION['success_message'] = '✅ تم تحديث أسعار الإجازات وسياسة الدوام بنجاح.';
        } else {
            $_SESSION['error_message'] = '❌ فشل حفظ ملف التكوين. تحقق من صلاحيات الكتابة للمسار: **' . $configFilePath . '**';
        }
        header('Location: manage_vacation_rates.php');
        exit();
    }
}

// جلب الأسعار الحالية للعرض في النموذج
$vacationRates = loadVacationRates($configFilePath);
$currentWeekendDays = $vacationRates['WEEKEND_DAYS_ISO'] ?? [5, 6];
unset($vacationRates['WEEKEND_DAYS_ISO']); // إزالة مفتاح الإجازة الأسبوعية من جدول أسعار الإجازات

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

<div class="content-area">
    <div class="page-header">
        <h2 class="page-title"><i class="fas fa-file-invoice-dollar me-2"></i> <?= $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; ?>

    <form method="POST">
        <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-calendar-alt me-2"></i> تحديد العطلة الأسبوعية للمؤسسة</h5>
            </div>
            <div class="card-body">
                <p class="lead">يرجى تحديد الأيام التي تعتبر **عطلة أسبوعية مدفوعة** للموظفين (ISO: 1=الاثنين, 7=الأحد):</p>
                <div class="row">
                    <?php foreach ($ISO_DAYS as $isoDay => $dayName): ?>
                        <div class="col-md-2 col-sm-4 col-6">
                            <div class="form-check form-switch fs-5">
                                <input class="form-check-input" type="checkbox" role="switch" 
                                       name="weekend_days_iso[]" value="<?= $isoDay ?>" id="day_<?= $isoDay ?>"
                                       <?= in_array($isoDay, $currentWeekendDays) ? 'checked' : '' ?>>
                                <label class="form-check-label" for="day_<?= $isoDay ?>"><?= $dayName ?></label>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>
                <hr>
                <p class="text-muted small">هذه الإعدادات ستؤثر على عدد **أيام العمل الواجبة** في صفحة حساب الرواتب.</p>
            </div>
        </div>

        <div class="card shadow-sm mb-4">
            <div class="card-header bg-primary text-white">
                <h5 class="mb-0"><i class="fas fa-percent me-2"></i> تعديل نسب الدفع لأنواع الإجازات</h5>
            </div>
            <div class="card-body">
                <blockquote class="blockquote alert alert-info small">
                    <p class="mb-0">
                        **نسبة الدفع 1.00** تعني دفع الراتب اليومي بالكامل (**خصم 0%**).<br> 
                        **نسبة الدفع 0.75** تعني دفع 75% من الراتب اليومي (**خصم 25%**).
                    </p>
                </blockquote>
                <div class="table-responsive">
                    <table class="table table-bordered table-striped align-middle">
                        <thead>
                            <tr>
                                <th style="width: 40%;">نوع الإجازة</th>
                                <th style="width: 30%;">نسبة الدفع (0.00 - 1.00)</th>
                                <th style="width: 30%;">نسبة الخصم المئوية</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($vacationRates as $type => $rate): ?>
                                <?php 
                                    // منع تعديل الأنواع غير المدفوعة التي لا يجب تغييرها
                                    $isUnpaid = ($rate == 0.00 && in_array($type, ['بدون_راتب', 'غياب', 'غياب_دون_اذن'])); 
                                    $rate_display = number_format($rate, 2);
                                ?>
                                <tr>
                                    <td>
                                        <input type="hidden" name="vacation_type[]" value="<?= htmlspecialchars($type) ?>">
                                        <strong><?= htmlspecialchars($type) ?></strong>
                                    </td>
                                    <td>
                                        <input type="number" step="0.01" min="0.00" max="1.00" 
                                                     name="pay_rate[]" class="form-control text-center"
                                                     value="<?= $rate_display ?>"
                                                     <?= $isUnpaid ? 'readonly title="لا يمكن تعديل نسبة الدفع للأنواع غير المدفوعة مسبقاً"' : '' ?>>
                                    </td>
                                    <td>
                                        <?php $discount = (1 - $rate) * 100; ?>
                                        <span class="badge bg-<?= $discount > 0 ? 'danger' : 'success' ?> fs-6">
                                            <?= number_format($discount, 0) ?>%
                                        </span>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        
        <div class="text-end mt-4">
            <button type="submit" name="save_rates" class="btn btn-success btn-lg">
                <i class="fas fa-save me-2"></i> حفظ الإعدادات الجديدة
            </button>
        </div>
    </form>
</div>

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