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

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

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

$db = getDB();
$pageTitle = 'مهام الموظف';
$employeeId = isset($_GET['employee_id']) ? (int)$_GET['employee_id'] : 0;
$employee = [];
$updates = [];
$total_updates = 0;

// الحصول على قيم البحث من الرابط (URL)
$searchStatus = isset($_GET['search_status']) ? trim($_GET['search_status']) : '';
$searchDescription = isset($_GET['search_description']) ? trim($_GET['search_description']) : '';

// التحقق من أن معرف الموظف صحيح
if ($employeeId <= 0) {
    $_SESSION['error_message'] = "معرف موظف غير صالح.";
    header('Location: index.php');
    exit();
}

try {
    // جلب بيانات الموظف الأساسية
    $employee_data = $db->select("SELECT id, full_name, position, date_hired, location_of_work, gender, profile_picture, user_id FROM employees WHERE id = ?", [$employeeId]);

    if (!empty($employee_data)) {
        $employee = $employee_data[0];
        $employeeName = htmlspecialchars($employee['full_name']);
        $pageTitle = 'ملف الموظف: ' . $employeeName;
    } else {
        $_SESSION['error_message'] = "الموظف غير موجود.";
        header('Location: index.php');
        exit();
    }
    
    $userId = $employee['user_id'] ?? 0;

    if ($userId > 0) {
        // بناء استعلام SQL بشكل ديناميكي مع شروط البحث
        $updatesQuery = "
            SELECT 
                dtu.id, 
                dtu.notes AS task_description, 
                dtu.location,
                dtu.latitude,
                dtu.longitude,
                dtu.status AS task_status, 
                dtu.attachment,
                dtu.created_at,        
                dt.description AS document_description, 
                dt.status AS document_status,      
                dt.tags                       
            FROM document_tracking_updates dtu
            LEFT JOIN document_tracking dt ON dtu.tracking_id = dt.id
            LEFT JOIN documents d ON dt.document_id = d.id
            WHERE dtu.created_by = ?
        ";
        
        $params = [$userId];

        if (!empty($searchStatus)) {
            $updatesQuery .= " AND dt.status = ?";
            $params[] = $searchStatus;
        }

        if (!empty($searchDescription)) {
            $updatesQuery .= " AND dt.description LIKE ?";
            $params[] = '%' . $searchDescription . '%';
        }

        $updatesQuery .= " ORDER BY dtu.created_at DESC";

        $updates = $db->select($updatesQuery, $params);
        
        // تحديث العدد الإجمالي للمهام بناءً على شروط البحث
        $totalQuery = "SELECT COUNT(dtu.id) AS total FROM document_tracking_updates dtu
                        LEFT JOIN document_tracking dt ON dtu.tracking_id = dt.id
                        WHERE dtu.created_by = ?";
        
        // يجب استخدام نفس الـ $params لضمان أن العدد الإجمالي يعكس شروط البحث
        $total_params = [$userId];
         if (!empty($searchStatus)) {
             $totalQuery .= " AND dt.status = ?";
             $total_params[] = $searchStatus;
         }
         if (!empty($searchDescription)) {
             $totalQuery .= " AND dt.description LIKE ?";
             $total_params[] = '%' . $searchDescription . '%';
         }
        
        $total_updates_data = $db->select($totalQuery, $total_params);
        
        if (!empty($total_updates_data)) {
            $total_updates = $total_updates_data[0]['total'];
        }
    } else {
        $_SESSION['error_message'] = "لم يتم العثور على رقم مستخدم لهذا الموظف، لا يمكن عرض المهام.";
    }
    
} catch (Exception $e) {
    error_log("Database error in view_updates.php: " . $e->getMessage());
    $_SESSION['error_message'] = "حدث خطأ في قاعدة البيانات. يرجى المحاولة لاحقًا.";
    header('Location: index.php');
    exit();
}

// 💡 منطق تجميع المهام حسب حالة التحديث (Task Status)
$sorted_updates = [];
foreach ($updates as $update) {
    // تطبيع الحالة لغرض التجميع
    $status = strtolower(trim($update['task_status'] ?? ''));
    
    // تعريف حالة عامة للترتيب باللغة العربية
    $group_key = match ($status) {
        'completed', 'مكتمل' => 'مكتملة',
        'in_progress', 'قيد_التنفيذ', 'جاري_العمل' => 'قيد التنفيذ',
        'pending', 'معلقة', 'لم_تبدأ' => 'معلقة',
        'cancelled', 'ملغاة' => 'ملغاة',
        default => 'أخرى',
    };
    
    $sorted_updates[$group_key][] = $update;
}

// تحديد ترتيب عرض المجموعات
$group_order = ['قيد التنفيذ', 'معلقة', 'مكتملة', 'ملغاة', 'أخرى'];
?>

<div class="content-area">
    <div class="page-header d-flex justify-content-between align-items-center">
        <div>
            <h2 class="page-title"><?php echo $pageTitle; ?></h2>
            <p class="page-subtitle">عرض الملف الشخصي وجميع الأعمال التي قام بها الموظف.</p>
        </div>
        <a href="index.php" class="btn btn-primary">
            <i class="fas fa-arrow-right me-2"></i>العودة إلى قائمة الموظفين
        </a>
    </div>

    <?php
    if (isset($_SESSION['error_message'])) {
        echo '<div class="alert alert-danger mt-3">' . htmlspecialchars($_SESSION['error_message']) . '</div>';
        unset($_SESSION['error_message']);
    }
    ?>

    <div class="row">
        <div class="col-lg-8">
            <div class="card mb-4 shadow-sm">
                <div class="card-body">
                    <div class="d-flex flex-column flex-md-row align-items-center mb-3">
                        <img src="<?php echo htmlspecialchars($employee['profile_picture'] ?? 'https://placehold.co/100x100/E5E7EB/4B5563?text=N/A'); ?>" alt="صورة الموظف" class="rounded-circle me-md-4 mb-3 mb-md-0" style="width: 100px; height: 100px; object-fit: cover;">
                        <div class="text-center text-md-start">
                            <h4 class="mb-1"><?php echo htmlspecialchars($employee['full_name']); ?></h4>
                            <p class="text-muted mb-2"><?php echo htmlspecialchars($employee['position']); ?></p>
                        </div>
                    </div>
                    <div class="row g-3">
                        <div class="col-md-6">
                            <p class="mb-1"><strong>تاريخ التعيين:</strong> <?php echo htmlspecialchars(date('Y-m-d', strtotime($employee['date_hired']))); ?></p>
                        </div>
                        <div class="col-md-6">
                            <p class="mb-1"><strong>موقع العمل:</strong> <?php echo htmlspecialchars($employee['location_of_work'] ?? 'غير محدد'); ?></p>
                        </div>
                        <div class="col-md-6">
                            <p class="mb-1"><strong>نوع الجنس:</strong> <?php echo htmlspecialchars($employee['gender'] === 'male' ? 'ذكر' : 'أنثى'); ?></p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-lg-4">
            <div class="card shadow-sm h-100">
                <div class="card-body d-flex flex-column justify-content-center align-items-center">
                    <i class="fas fa-tasks fa-3x text-info mb-3"></i>
                    <h5 class="text-muted fw-normal mb-2">إجمالي المهام التي تم تتبعها</h5>
                    <h3 class="fw-bold mb-0"><?php echo $total_updates; ?></h3>
                </div>
            </div>
        </div>
    </div>
    
    <hr>

    <div class="card mb-4 shadow-sm">
        <div class="card-header d-flex justify-content-between align-items-center flex-wrap">
            <h5 class="card-title mb-2 mb-md-0">سجل المهام المفصّل</h5>
            <form class="d-flex" method="GET" action="">
                <input type="hidden" name="employee_id" value="<?php echo $employeeId; ?>">
                <input type="text" name="search_status" class="form-control form-control-sm me-2" placeholder="بحث بحالة المستند" value="<?php echo htmlspecialchars($searchStatus); ?>">
                <input type="text" name="search_description" class="form-control form-control-sm me-2" placeholder="بحث بوصف المستند" value="<?php echo htmlspecialchars($searchDescription); ?>">
                <button type="submit" class="btn btn-sm btn-info">
                    <i class="fas fa-search"></i>
                </button>
                <?php if (!empty($searchStatus) || !empty($searchDescription)): ?>
                    <a href="?employee_id=<?php echo $employeeId; ?>" class="btn btn-sm btn-secondary ms-2">
                        <i class="fas fa-times"></i> مسح
                    </a>
                <?php endif; ?>
            </form>
        </div>

        <div class="card-body p-4">
            <?php if (empty($updates)): ?>
                <div class="alert alert-info text-center mb-0">
                    لا توجد مهام أو تحديثات مسجلة لهذا الموظف حاليًا.
                </div>
            <?php else: ?>
                <?php 
                $has_updates_to_display = false;
                foreach ($group_order as $group_key): 
                    if (!isset($sorted_updates[$group_key])) continue;
                    $has_updates_to_display = true;
                    
                    // تحديد الأيقونة واللون لعنوان المجموعة
                    [$icon, $color, $border_color] = match ($group_key) {
                        'قيد التنفيذ' => ['fa-spinner fa-spin', 'text-warning', 'border-warning'],
                        'معلقة' => ['fa-hourglass-half', 'text-danger', 'border-danger'],
                        'مكتملة' => ['fa-check-circle', 'text-success', 'border-success'],
                        'ملغاة' => ['fa-times-circle', 'text-secondary', 'border-secondary'],
                        default => ['fa-question-circle', 'text-info', 'border-info'],
                    };
                ?>
                
                <div class="mb-5">
                    <h4 class="mb-3 border-bottom pb-2 <?php echo $color; ?>">
                        <i class="fas <?php echo $icon; ?> me-2"></i> مهام **<?php echo $group_key; ?>** (<span class="fw-bold"><?php echo count($sorted_updates[$group_key]); ?></span>)
                    </h4>
                    
                    <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
                        <?php foreach ($sorted_updates[$group_key] as $update): 
                            
                            // لتحديد لون شارة حالة المستند
                            $document_status_badge = match (strtolower(trim($update['document_status'] ?? ''))) {
                                'مكتمل' => 'badge bg-success',
                                'قيد_المراجعة' => 'badge bg-warning text-dark',
                                'مرفوض' => 'badge bg-danger',
                                default => 'badge bg-secondary',
                            };
                        ?>
                            <div class="col">
                                <div class="card h-100 shadow-sm <?php echo $border_color; ?>">
                                    <div class="card-header bg-light d-flex justify-content-between align-items-center">
                                        <small class="text-muted">#<?php echo htmlspecialchars($update['id']); ?></small>
                                        <span class="<?php echo $document_status_badge; ?>">حالة المستند: <?php echo htmlspecialchars($update['document_status'] ?? 'غير محدد'); ?></span>
                                    </div>
                                    <div class="card-body">
                                        <h6 class="card-subtitle mb-2 text-primary fw-bold">المستند: <?php echo htmlspecialchars($update['document_description'] ?? 'لا يوجد وصف للمستند'); ?></h6>
                                        <p class="card-text text-dark small mb-3">**التحديث:** <?php echo nl2br(htmlspecialchars($update['task_description'])); ?></p>
                                        
                                        <ul class="list-group list-group-flush border-top pt-2">
                                            <li class="list-group-item d-flex justify-content-between align-items-center px-0 py-1 bg-transparent">
                                                <i class="fas fa-calendar-alt text-secondary me-2"></i> **تاريخ التحديث:**
                                                <small><?php echo htmlspecialchars(date('Y-m-d H:i', strtotime($update['created_at']))); ?></small>
                                            </li>
                                            <li class="list-group-item d-flex justify-content-between align-items-center px-0 py-1 bg-transparent">
                                                <i class="fas fa-map-pin text-primary me-2"></i> **موقع التسجيل:**
                                                <small class="text-truncate" style="max-width: 60%;"><?php echo htmlspecialchars($update['location'] ?? 'غير محدد'); ?></small>
                                            </li>
                                            <li class="list-group-item d-flex justify-content-between align-items-center px-0 py-1 bg-transparent">
                                                <i class="fas fa-tags text-success me-2"></i> **العلامات:**
                                                <small><?php echo htmlspecialchars($update['tags'] ?? 'لا يوجد'); ?></small>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="card-footer d-flex justify-content-around bg-light">
                                        <?php if (!empty($update['latitude']) && !empty($update['longitude'])): ?>
                                            <a href="https://maps.google.com/?q=<?php echo htmlspecialchars($update['latitude']) . ',' . htmlspecialchars($update['longitude']); ?>" target="_blank" class="btn btn-sm btn-outline-primary w-50 me-1">
                                                <i class="fas fa-map-marker-alt"></i> الموقع
                                            </a>
                                        <?php else: ?>
                                            <button class="btn btn-sm btn-light text-muted w-50 me-1" disabled><i class="fas fa-map-marker-alt"></i> لا يوجد موقع</button>
                                        <?php endif; ?>

                                        <?php 
                                        $attachment_path = '../../uploads/tracking_updates/' . $update['attachment'];
                                        // يمكن إضافة تحقق إضافي هنا إذا كان الملف موجودًا بالفعل على السيرفر قبل عرض الرابط 
                                        ?>
                                        <?php if (!empty($update['attachment'])): ?>
                                            <a href="<?php echo htmlspecialchars($attachment_path); ?>" target="_blank" class="btn btn-sm btn-outline-dark w-50 ms-1">
                                                <i class="fas fa-paperclip"></i> المرفق
                                            </a>
                                        <?php else: ?>
                                            <button class="btn btn-sm btn-light text-muted w-50 ms-1" disabled><i class="fas fa-paperclip"></i> لا يوجد مرفق</button>
                                        <?php endif; ?>
                                    </div>
                                </div>
                            </div>
                        <?php endforeach; ?>
                    </div>
                </div>

                <?php endforeach; ?>
                
                <?php if (!$has_updates_to_display && $total_updates > 0): ?>
                    <div class="alert alert-warning">
                        تم العثور على تحديثات، ولكنها لا تتطابق مع أي من تصنيفات الحالة المعروفة (قيد التنفيذ/مكتملة/معلقة).
                    </div>
                <?php endif; ?>
            <?php endif; ?>
        </div>
    </div>
</div>

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