<?php
// Set the default timezone for all date/time functions to Baghdad
date_default_timezone_set('Asia/Baghdad');

include '../../includes/header.php';
checkLogin();

$db = getDB();
$logs = [];

// --- Pagination & Filtering Setup ---
$limit = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $limit;

$searchTerm = trim($_GET['user_id'] ?? ''); 
$dateFilter = trim($_GET['date'] ?? '');

try {
    // جلب المستخدمين للقائمة مع إضافة حقول الهاتف (إذا وجدت في جدول users) لضمان توافق المكون
    // إذا لم يكن هناك حقل phone في جدول users، سنضع قيمة فارغة
    $users = $db->select("SELECT id, full_name, username FROM users WHERE is_active = 1 ORDER BY full_name ASC");
    
    // بناء استعلام WHERE
    $whereConditions = ["(l.action LIKE 'Login%' OR l.action = 'Logout')"]; 
    $params = [];
    
    if (!empty($searchTerm)) {
        $whereConditions[] = "u.id = ?";
        $params[] = $searchTerm;
    }

    if (!empty($dateFilter)) {
        $whereConditions[] = "DATE(l.log_timestamp) = ?";
        $params[] = $dateFilter;
    }
    
    $whereClause = "WHERE " . implode(" AND ", $whereConditions);

    // حساب العدد الإجمالي للترقيم
    $totalLogsQuery = "SELECT COUNT(l.log_id) as total FROM user_logs l JOIN users u ON l.user_id = u.id $whereClause";
    $totalResult = $db->selectOne($totalLogsQuery, $params);
    $totalLogs = $totalResult['total'] ?? 0;
    $totalPages = ceil($totalLogs / $limit);
    
    // جلب البيانات مع الترقيم
    $query = "SELECT l.log_id, u.full_name, u.username, l.action, l.log_timestamp, l.ip_address, l.user_agent  
              FROM user_logs l 
              JOIN users u ON l.user_id = u.id 
              $whereClause 
              ORDER BY l.log_timestamp DESC 
              LIMIT $limit OFFSET $offset";
    
    $logs = $db->select($query, $params);

} catch (Exception $e) {
    $logs = [];
    $_SESSION['error_message'] = 'عذراً، حدث خطأ أثناء تحميل البيانات.';
}
?>

<div class="content-area">
    <div class="page-header d-flex justify-content-between align-items-center mb-4">
        <h2 class="page-title"><i class="fas fa-history me-2 text-primary"></i> سجل نشاط المستخدمين</h2>
        <span class="badge bg-primary px-3 py-2">إجمالي السجلات: <?= $totalLogs ?></span>
    </div>

    <?php include '../../includes/alerts.php'; ?>
    
    <div class="card shadow-sm border-0 mb-4 bg-light">
        <div class="card-body">
            <form action="" method="GET" class="row g-3 align-items-end">
                <div class="col-md-5">
                    <label class="form-label fw-bold"><i class="fas fa-user me-1"></i> تصفية بالمستخدم</label>
                    <?php 
                        $current_value = $searchTerm; 
                        $input_name = 'user_id';
                        $placeholder = 'بحث باسم المستخدم أو الكود...';
                        
                        // تهيئة البيانات للمكون الذكي لتوافق التحديث الأخير
                        $all_patients_list = array_map(function($user) {
                            return [
                                'id' => $user['id'], 
                                'name' => $user['full_name'], 
                                'code' => $user['username'],
                                'phone' => '', // المستخدمين عادة لا يظهر هاتفهم هنا، أو استبدله بـ $user['phone'] إذا توفر
                                'disease_status' => '' // لا ينطبق على المستخدمين
                            ];
                        }, $users);

                        include '../../includes/patient_selector.php'; 
                    ?>
                </div>
                <div class="col-md-4">
                    <label for="date" class="form-label fw-bold"><i class="fas fa-calendar-day me-1"></i> التاريخ</label>
                    <input type="date" class="form-control" id="date" name="date" value="<?= htmlspecialchars($dateFilter) ?>">
                </div>
                <div class="col-md-3 d-flex gap-2">
                    <button class="btn btn-primary flex-grow-1" type="submit">
                        <i class="fas fa-filter me-1"></i> تصفية النتائج
                    </button>
                    <?php if(!empty($searchTerm) || !empty($dateFilter)): ?>
                        <a href="index.php" class="btn btn-outline-secondary" title="إعادة ضبط"><i class="fas fa-undo"></i></a>
                    <?php endif; ?>
                </div>
            </form>
        </div>
    </div>

    <div class="card shadow-sm border-0" style="overflow: visible !important;">
        <div class="table-responsive" style="overflow: visible !important;">
            <table class="table table-hover align-middle mb-0">
                <thead class="table-dark">
                    <tr>
                        <th class="ps-4">المستخدم</th>
                        <th>اسم الحساب</th>
                        <th>العملية</th>
                        <th>التاريخ والوقت</th>
                        <th>عنوان IP</th>
                        <th class="pe-4">الجهاز / المتصفح</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (!empty($logs)): ?>
                        <?php foreach ($logs as $log): ?>
                            <tr>
                                <td class="ps-4 fw-bold text-dark"><?= htmlspecialchars($log['full_name']) ?></td>
                                <td><span class="badge bg-info-light text-info border-info"><?= htmlspecialchars($log['username']) ?></span></td>
                                <td>
                                    <?php if (stripos($log['action'], 'login') === 0): ?>
                                        <span class="badge bg-success-light text-success fw-bold"><i class="fas fa-sign-in-alt me-1"></i> دخول</span>
                                    <?php elseif (stripos($log['action'], 'logout') === 0): ?>
                                        <span class="badge bg-danger-light text-danger fw-bold"><i class="fas fa-sign-out-alt me-1"></i> خروج</span>
                                    <?php else: ?>
                                        <span class="badge bg-secondary-light text-secondary"><?= htmlspecialchars($log['action']) ?></span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <div class="text-nowrap small">
                                        <i class="far fa-clock me-1 text-muted"></i>
                                        <?= date('Y-m-d', strtotime($log['log_timestamp'])) ?>
                                        <span class="text-primary fw-bold ms-1"><?= date('h:i A', strtotime($log['log_timestamp'])) ?></span>
                                    </div>
                                </td>
                                <td><code class="small fw-bold text-muted"><?= htmlspecialchars($log['ip_address'] ?? '-') ?></code></td>
                                <td class="pe-4">
                                    <span class="d-inline-block text-truncate text-muted small" style="max-width: 200px;" title="<?= htmlspecialchars($log['user_agent']) ?>">
                                        <?= htmlspecialchars($log['user_agent'] ?? '-') ?>
                                    </span>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr><td colspan="6" class="py-5 text-center text-muted"><i class="fas fa-search me-2"></i> لا توجد سجلات تطابق خيارات التصفية الحالية.</td></tr>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>

        <?php if ($totalPages > 1): ?>
        <div class="card-footer bg-white border-top py-3">
            <nav>
                <ul class="pagination pagination-sm justify-content-center mb-0">
                    <?php
                    $paginationParams = $_GET;
                    unset($paginationParams['page']);
                    $queryString = http_build_query($paginationParams);
                    ?>
                    <li class="page-item <?= ($page <= 1) ? 'disabled' : '' ?>">
                        <a class="page-link" href="?page=<?= $page-1 ?>&<?= $queryString ?>"><i class="fas fa-chevron-right"></i></a>
                    </li>
                    <?php for ($i = max(1, $page - 2); $i <= min($totalPages, $page + 2); $i++): ?>
                        <li class="page-item <?= ($i == $page) ? 'active' : '' ?>">
                            <a class="page-link" href="?page=<?= $i ?>&<?= $queryString ?>"><?= $i ?></a>
                        </li>
                    <?php endfor; ?>
                    <li class="page-item <?= ($page >= $totalPages) ? 'disabled' : '' ?>">
                        <a class="page-link" href="?page=<?= $page+1 ?>&<?= $queryString ?>"><i class="fas fa-chevron-left"></i></a>
                    </li>
                </ul>
            </nav>
        </div>
        <?php endif; ?>
    </div>
</div>

<style>
    /* تحسينات بصرية للبادجات */
    .bg-success-light { background-color: #d1e7dd; color: #0f5132; border: 1px solid #badbcc; }
    .bg-danger-light { background-color: #f8d7da; color: #842029; border: 1px solid #f5c2c7; }
    .bg-info-light { background-color: #cff4fc; color: #055160; border: 1px solid #b6effb; }
    .bg-secondary-light { background-color: #f8f9fa; color: #6c757d; border: 1px solid #dee2e6; }
    
    /* لضمان عمل قائمة Select2 بشكل صحيح */
    .table-responsive, .card { overflow: visible !important; }
    .select2-container { z-index: 1050; }
</style>

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