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

$pageTitle='ملف الموظف';include'../../includes/header.php';

checkLogin();

$db=getDB();
$userId=$_SESSION['user_id']??null;

if(!$userId){
    $_SESSION['error_message']='لم يتم تحديد المستخدم.';header('Location:../../index.php');exit();
}

try{
    // جلب بيانات الموظف الأساسية
    $employee=$db->select("SELECT * FROM employees WHERE user_id = ?",[(int)$userId]);
    if(empty($employee)){
        $_SESSION['error_message']='لم يتم العثور على بيانات الموظف.';header('Location:../../index.php');exit();
    }
    $employee=$employee[0];

    // ***************************************************
    // 1. تحديد نطاق البحث والحسابات
    // ***************************************************
    
    // أ. تحديد نطاق التاريخ (الشهر الحالي كافتراضي)
    $defaultStart = date('Y-m-01');
    $defaultEnd = date('Y-m-d');

    // ب. استلام مُدخلات البحث وتصفيتها
    $searchStart = $_GET['start_date'] ?? $defaultStart;
    $searchEnd = $_GET['end_date'] ?? $defaultEnd;

    // التأكد من أن التواريخ صالحة
    if (!strtotime($searchStart) || !strtotime($searchEnd) || strtotime($searchStart) > strtotime($searchEnd)) {
        $searchStart = $defaultStart;
        $searchEnd = $defaultEnd;
        $_SESSION['info_message'] = 'تم إعادة تعيين تواريخ البحث إلى الشهر الحالي.';
    }

    $startDateTime = new DateTime($searchStart);
    $endDateTime = new DateTime($searchEnd);
    
    // ج. حساب إجمالي الأيام في نطاق البحث
    $interval = $startDateTime->diff($endDateTime);
    $totalDaysInPeriod = $interval->days + 1; 

    // د. تقسيم الراتب
    $monthlySalary = (float)($employee['salary'] ?? 0);
    $dailySalary = ($monthlySalary > 0) ? ($monthlySalary / 30) : 0;
    
    // هـ. جلب وحساب أيام الإجازات (employee_vacations)
    $vacationRecords = $db->select(
        "SELECT * FROM employee_vacations 
        WHERE employee_id = ? AND 
        (
            (start_date BETWEEN ? AND ?) OR
            (end_date BETWEEN ? AND ?) OR
            (start_date <= ? AND end_date >= ?)
        )
        ORDER BY start_date DESC", 
        [$employee['id'], $searchStart, $searchEnd, $searchStart, $searchEnd, $searchStart, $searchEnd]
    );
    $totalVacationRecords = count($vacationRecords);

    $actualVacationDays = 0;
    foreach ($vacationRecords as $record) {
        $recStart = new DateTime($record['start_date']);
        $recEnd = new DateTime($record['end_date']);
        
        $calcStart = max($startDateTime, $recStart);
        $calcEnd = min($endDateTime, $recEnd);
        
        if ($calcStart <= $calcEnd) {
            $calcInterval = $calcStart->diff($calcEnd);
            $actualVacationDays += $calcInterval->days + 1;
        }
    }
    
    // و. جلب عدد أيام الحضور (employee_attendance)
    $attendanceDaysCount = $db->select(
        "SELECT COUNT(DISTINCT DATE(timestamp)) as count FROM employee_attendance 
        WHERE employee_id = ? AND DATE(timestamp) BETWEEN ? AND ?", 
        [$employee['id'], $searchStart, $searchEnd]
    );
    $totalAttendanceDays = $attendanceDaysCount[0]['count'] ?? 0;

    // ز. حساب أيام الغياب
    $totalAbsenceDays = $totalDaysInPeriod - $totalAttendanceDays - $actualVacationDays;
    $totalAbsenceDays = max(0, $totalAbsenceDays);


}catch(Exception $e){
    $_SESSION['error_message']='حدث خطأ في جلب البيانات: '.$e->getMessage();
    header('Location:../../index.php');
    exit();
}

function safeOutput($value){
    return htmlspecialchars($value??'');
}
?>

<div class="content-area">
<div class="page-header mb-3">
<h2 class="page-title">👤 <?=safeOutput($pageTitle)?></h2>
</div>

<?php if(isset($_SESSION['error_message'])):?>
<div class="alert alert-danger"><?=safeOutput($_SESSION['error_message']);unset($_SESSION['error_message']);?></div>
<?php endif;?>

<?php if(isset($_SESSION['info_message'])):?>
<div class="alert alert-info"><?=safeOutput($_SESSION['info_message']);unset($_SESSION['info_message']);?></div>
<?php endif;?>

<div class="card mb-4 shadow-lg border-0">
    <div class="card-header bg-primary text-white">
        <h5 class="card-title mb-0">معلومات الموظف الأساسية</h5>
    </div>
    <div class="card-body row">
        <div class="col-12 col-md-4 text-center mb-4 border-end">
            <h6 class="text-muted mb-3">الصورة الشخصية</h6>
            <?php $path=$employee['profile_picture'];?>
            <?php if(!empty($path)):?>
            <a href="<?=safeOutput($path)?>"target="_blank"class="d-block mb-2">
            <img src="<?=safeOutput($path)?>"alt="<?=safeOutput($employee['full_name'])?>"class="img-fluid img-thumbnail"style="width:180px;height:180px;object-fit:cover;border-radius:50%;margin:auto; border: 4px solid #007bff;">
            <small class="d-block mt-2 text-truncate"><?=safeOutput(basename($path))?></small>
            </a>
            <?php else:?>
            <div class="d-flex align-items-center justify-content-center p-4 bg-light" style="width:180px;height:180px;border-radius:50%;margin:auto;">
                <span class="text-muted">لا توجد صورة</span>
            </div>
            <?php endif;?>
        </div>
        
        <div class="col-12 col-md-8">
            <h6 class="text-primary mb-3">بيانات العمل والاتصال</h6>
            <table class="table table-striped table-hover">
            <tbody>
            <tr><th>الاسم الكامل</th><td><?=safeOutput($employee['full_name'])?></td></tr>
            <tr><th>البريد الإلكتروني</th><td><?=safeOutput($employee['email'])?></td></tr>
            <tr><th>الوظيفة</th><td><?=safeOutput($employee['position'])?></td></tr>
            <tr><th>تاريخ التعيين</th><td><?=safeOutput($employee['date_hired'])?></td></tr>
            <tr><th>الرقم الوطني</th><td><?=safeOutput($employee['national_id_number'])?></td></tr>
            <tr>
            <th>المرفقات</th>
            <td>
            <?php
            for($i=1;$i<=3;$i++){
            $attachment=$employee["attachment$i"];
            if($attachment){
            echo"<a href='".safeOutput($attachment)."'target='_blank' class='badge bg-info text-decoration-none me-2'>المرفق $i</a>";
            }else{
            echo"<span class='badge bg-light text-muted me-2'>المرفق $i: لا يوجد</span>";
            }
            }
            ?>
            </td>
            </tr>
            </tbody>
            </table>
        </div>
    </div>
</div>

<hr class="my-4">

<div class="card mb-4 shadow-lg border-0">
    <div class="card-header bg-success text-white">
        <h5 class="card-title mb-0">تحليل الراتب والدخل 💵</h5>
    </div>
    <div class="card-body">
        <div class="row text-center">
            <div class="col-md-6 mb-3">
                <div class="p-3 border rounded bg-light">
                    <h6 class="text-muted">الراتب الشهري</h6>
                    <p class="h3 text-success">
                        <?= safeOutput(number_format($monthlySalary, 2)) ?>
                    </p>
                </div>
            </div>
            <div class="col-md-6 mb-3">
                <div class="p-3 border rounded bg-light">
                    <h6 class="text-muted">الراتب اليومي (على أساس 30 يوم)</h6>
                    <p class="h3 text-primary">
                        <?= safeOutput(number_format($dailySalary, 2)) ?>
                    </p>
                </div>
            </div>
        </div>
    </div>
</div>

<hr class="my-4">

<h4 class="mb-3 text-secondary">📊 سجلات الأداء والإجازات</h4>

<div class="card mb-4 shadow-sm border-info">
    <div class="card-body">
        <form method="GET" action="" class="row g-3 align-items-end">
            <div class="col-md-5">
                <label for="start_date" class="form-label text-primary">تاريخ البداية</label>
                <input type="date" class="form-control" id="start_date" name="start_date" value="<?= safeOutput($searchStart) ?>" required>
            </div>
            <div class="col-md-5">
                <label for="end_date" class="form-label text-primary">تاريخ النهاية</label>
                <input type="date" class="form-control" id="end_date" name="end_date" value="<?= safeOutput($searchEnd) ?>" required>
            </div>
            <div class="col-md-2">
                <button type="submit" class="btn btn-primary w-100" style="height: 38px;">بحث</button>
            </div>
        </form>
    </div>
</div>

<div class="card mb-4 shadow-lg border-0">
    <div class="card-header bg-secondary text-white">
        <h5 class="card-title mb-0">خلاصة الأيام للفترة: <strong><?= safeOutput($searchStart) ?></strong> إلى <strong><?= safeOutput($searchEnd) ?></strong></h5>
    </div>
    <div class="card-body">
        <div class="row text-center">
            <div class="col-6 col-md-3 mb-3">
                <div class="card p-2 bg-light border-dark">
                    <h6 class="text-muted">إجمالي الأيام</h6>
                    <p class="h4 text-dark mb-0"><?= safeOutput($totalDaysInPeriod) ?> يوماً</p>
                </div>
            </div>
            <div class="col-6 col-md-3 mb-3">
                <div class="card p-2 bg-light border-success">
                    <h6 class="text-muted">أيام الحضور</h6>
                    <p class="h4 text-success mb-0"><?= safeOutput($totalAttendanceDays) ?> أيام</p>
                </div>
            </div>
            <div class="col-6 col-md-3 mb-3">
                <div class="card p-2 bg-light border-primary">
                    <h6 class="text-muted">أيام الإجازات</h6>
                    <p class="h4 text-primary mb-0"><?= safeOutput($actualVacationDays) ?> أيام</p>
                </div>
            </div>
            <div class="col-6 col-md-3 mb-3">
                <div class="card p-2 bg-light border-danger">
                    <h6 class="text-muted">أيام الغياب</h6>
                    <p class="h4 text-danger mb-0"><?= safeOutput($totalAbsenceDays) ?> أيام</p>
                </div>
            </div>
        </div>
    </div>
</div>

<div class="card mb-4 shadow-lg border-0">
    <div class="card-header bg-info text-white">
        <h5 class="card-title mb-0">سجلات الإجازات المفصلة (<?= safeOutput($totalVacationRecords) ?> سجل) 📋</h5>
    </div>
    <div class="card-body">
        <?php if (!empty($vacationRecords)): ?>
        <div class="table-responsive">
            <table class="table table-striped table-hover table-sm">
                <thead>
                    <tr class="table-primary">
                        <th>النوع</th>
                        <th>تاريخ البداية</th>
                        <th>تاريخ النهاية</th>
                        <th>الأيام في الفترة</th>
                        <th>ملاحظات</th>
                        <th>تاريخ الإضافة</th>
                    </tr>
                </thead>
                <tbody>
                    <?php 
                    // لإعادة حساب وعرض الأيام لكل سجل في الجدول
                    foreach ($vacationRecords as $record): 
                        $recStart = new DateTime($record['start_date']);
                        $recEnd = new DateTime($record['end_date']);
                        $calcStart = max($startDateTime, $recStart);
                        $calcEnd = min($endDateTime, $recEnd);
                        $detailVacationDays = 0;
                        if ($calcStart <= $calcEnd) {
                            $calcInterval = $calcStart->diff($calcEnd);
                            $detailVacationDays = $calcInterval->days + 1;
                        }
                    ?>
                    <tr>
                        <td><?= safeOutput($record['vacation_type']) ?></td>
                        <td><?= safeOutput($record['start_date']) ?></td>
                        <td><?= safeOutput($record['end_date']) ?></td>
                        <td><span class="badge bg-primary"><?= safeOutput($detailVacationDays) ?></span></td>
                        <td><?= safeOutput($record['notes']) ?></td>
                        <td><?= safeOutput($record['created_at']) ?></td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
        <?php else: ?>
        <div class="alert alert-info mb-0">
            لا توجد سجلات إجازات في النطاق الزمني المحدد.
        </div>
        <?php endif; ?>
    </div>
</div>


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