<?php
session_start();
$page_title = "Journal Global des Opérations";
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <?php include('includes/head.php'); ?>
</head>

<body id="page-top">
    <div id="wrapper">
        <!-- Sidebar -->
        <?php include('includes/sidebar.php'); ?>
        <!-- Sidebar -->
        <div id="content-wrapper" class="d-flex flex-column">
            <div id="content">
                <!-- TopBar -->
                <?php include('includes/topbar.php'); ?>
                <!-- Topbar -->

                <!-- Container Fluid-->
                <div class="container-fluid" id="container-wrapper">                    <div class="d-sm-flex align-items-center justify-content-between mb-4">
                        <?php if (!empty($policyFilter)): ?>
                            <h1 class="h3 mb-0 text-gray-800">Journal des Opérations - Police <?php echo htmlspecialchars($policyFilter); ?></h1>
                        <?php elseif (!empty($clientFilter)): ?>
                            <h1 class="h3 mb-0 text-gray-800">Journal des Opérations - Client CIN <?php echo htmlspecialchars($clientFilter); ?></h1>
                        <?php else: ?>
                            <h1 class="h3 mb-0 text-gray-800">Journal Global des Opérations</h1>
                        <?php endif; ?>
                        <ol class="breadcrumb">
                            <li class="breadcrumb-item"><a href="./">Accueil</a></li>
                            <?php if (!empty($policyFilter)): ?>
                                <li class="breadcrumb-item"><a href="view_logs.php">Journal des Opérations</a></li>
                                <li class="breadcrumb-item active" aria-current="page">Police <?php echo htmlspecialchars($policyFilter); ?></li>
                            <?php elseif (!empty($clientFilter)): ?>
                                <li class="breadcrumb-item"><a href="view_logs.php">Journal des Opérations</a></li>
                                <li class="breadcrumb-item active" aria-current="page">Client CIN <?php echo htmlspecialchars($clientFilter); ?></li>
                            <?php else: ?>
                                <li class="breadcrumb-item active" aria-current="page">Journal des Opérations</li>
                            <?php endif; ?>
                        </ol>
                    </div>

                    <div class="row">
                        <div class="col-lg-12">
                            <div class="card mb-4">                                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                                    <h6 class="m-0 font-weight-bold text-primary">
                                        <i class="fas fa-history"></i> Historique Global des Opérations
                                    </h6>
                                    <div class="text-muted small">
                                        <i class="fas fa-info-circle"></i> Toutes les opérations du système sont enregistrées ici
                                    </div>
                                </div>
                                <div class="card-body">                                    <?php                                    // Récupérer la référence de compagnie depuis la session, ou utiliser une valeur par défaut
                                    $compagnieRef = isset($_SESSION['compagnie_ref']) ? $_SESSION['compagnie_ref'] : '123456';
                                    
                                    // Récupérer les paramètres de filtrage
                                    $policyFilter = isset($_GET['policy_num']) ? trim($_GET['policy_num']) : '';
                                    $clientFilter = isset($_GET['client_cin']) ? trim($_GET['client_cin']) : '';
                                    
                                    // Chemin du fichier de log
                                    $logFile = 'data/' . $compagnieRef . '/journal.log';
                                    
                                    if (file_exists($logFile)) {
                                        // Lire le fichier de log
                                        $logLines = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                                        if (!empty($logLines)) {
                                            // Trier les logs par date/heure réelle (pas juste array_reverse)
                                            $logLines = array_filter($logLines, function($line) {
                                                return trim($line) !== '' && substr(trim($line), 0, 1) !== '#';
                                            });
                                            usort($logLines, function($a, $b) {
                                                // Extraire la date au début de chaque ligne
                                                preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/', $a, $ma);
                                                preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/', $b, $mb);
                                                $da = isset($ma[1]) ? strtotime($ma[1]) : 0;
                                                $db = isset($mb[1]) ? strtotime($mb[1]) : 0;
                                                return $db <=> $da; // décroissant
                                            });
                                            // Filtrer par numéro de police ou CIN client si spécifié
                                            if (!empty($policyFilter) || !empty($clientFilter)) {
                                                $filteredLines = [];
                                                foreach ($logLines as $line) {
                                                    $matchFound = false;
                                                    
                                                    // Filtrage par numéro de police
                                                    if (!empty($policyFilter) && strpos($line, 'police (' . $policyFilter . ')') !== false) {
                                                        $matchFound = true;
                                                    }
                                                    
                                                    // Filtrage par CIN client
                                                    if (!empty($clientFilter)) {
                                                        if (strpos($line, 'CIN ' . $clientFilter) !== false || 
                                                            strpos($line, 'CIN: ' . $clientFilter) !== false ||
                                                            strpos($line, "CIN numéro : '" . $clientFilter . "'") !== false) {
                                                            $matchFound = true;
                                                        }
                                                    }
                                                    
                                                    if ($matchFound) {
                                                        $filteredLines[] = $line;
                                                    }
                                                }
                                                $logLines = $filteredLines;
                                                // Réappliquer le tri par date décroissante après filtrage
                                                usort($logLines, function($a, $b) {
                                                    preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/', $a, $ma);
                                                    preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/', $b, $mb);
                                                    $da = isset($ma[1]) ? strtotime($ma[1]) : 0;
                                                    $db = isset($mb[1]) ? strtotime($mb[1]) : 0;
                                                    return $db <=> $da;
                                                });
                                            }
                                              if (empty($logLines)) {
                                                if (!empty($policyFilter)) {
                                                    echo '<div class="alert alert-warning text-center">';
                                                    echo '<i class="fas fa-exclamation-triangle fa-2x mb-2"></i><br>';
                                                    echo '<strong>Aucune opération trouvée</strong><br>';
                                                    echo 'Aucune opération trouvée pour la police <strong>' . htmlspecialchars($policyFilter) . '</strong>.';
                                                    echo '<br><a href="view_logs.php" class="btn btn-sm btn-primary mt-2"><i class="fas fa-list"></i> Voir toutes les opérations</a>';
                                                    echo '</div>';
                                                } elseif (!empty($clientFilter)) {
                                                    echo '<div class="alert alert-warning text-center">';
                                                    echo '<i class="fas fa-exclamation-triangle fa-2x mb-2"></i><br>';
                                                    echo '<strong>Aucune opération trouvée</strong><br>';
                                                    echo 'Aucune opération trouvée pour le client CIN <strong>' . htmlspecialchars($clientFilter) . '</strong>.';
                                                    echo '<br><a href="view_logs.php" class="btn btn-sm btn-primary mt-2"><i class="fas fa-list"></i> Voir toutes les opérations</a>';
                                                    echo '</div>';
                                                } else {
                                                    echo '<div class="alert alert-warning text-center">';
                                                    echo '<i class="fas fa-exclamation-triangle fa-2x mb-2"></i><br>';
                                                    echo '<strong>Aucune opération enregistrée</strong><br>';
                                                    echo 'Le fichier de log existe mais ne contient aucune entrée.';
                                                    echo '</div>';
                                                }
                                                return;
                                            }
                                              // Afficher l'info de filtrage si applicable
                                            if (!empty($policyFilter)) {
                                                echo '<div class="alert alert-info">';
                                                echo '<i class="fas fa-filter"></i> ';
                                                echo 'Affichage des opérations pour la police <strong>' . htmlspecialchars($policyFilter) . '</strong> ';
                                                echo '(' . count($logLines) . ' opération(s) trouvée(s))';
                                                echo ' <a href="view_logs.php" class="btn btn-sm btn-outline-primary ml-2"><i class="fas fa-times"></i> Supprimer le filtre</a>';
                                                echo '</div>';
                                            } elseif (!empty($clientFilter)) {
                                                echo '<div class="alert alert-info">';
                                                echo '<i class="fas fa-filter"></i> ';
                                                echo 'Affichage des opérations pour le client CIN <strong>' . htmlspecialchars($clientFilter) . '</strong> ';
                                                echo '(' . count($logLines) . ' opération(s) trouvée(s))';
                                                echo ' <a href="view_logs.php" class="btn btn-sm btn-outline-primary ml-2"><i class="fas fa-times"></i> Supprimer le filtre</a>';
                                                echo '</div>';
                                            }
                                            
                                            echo '<div class="table-responsive">';
                                            echo '<table class="table table-bordered table-hover" id="dataTable" width="100%" cellspacing="0">';
                                            echo '<thead class="thead-light">';echo '<tr>';
                                            echo '<th><i class="fas fa-clock"></i> Date/Heure</th>';
                                            echo '<th><i class="fas fa-user"></i> Utilisateur</th>';
                                            echo '<th><i class="fas fa-cogs"></i> Opérations</th>';
                                            echo '</tr>';
                                            echo '</thead>';
                                            echo '<tbody>';
                                              foreach ($logLines as $index => $line) {
                                                if (trim($line) === '' || substr(trim($line), 0, 1) === '#') continue;
                                                
                                                // Parser la ligne de log
                                                // Format: DATETIME, nom de user à changé [détails] pour le client [nom] (ID: [id])
                                                if (preg_match('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}), (.+?) à (.+)$/', $line, $matches)) {
                                                    $datetime = $matches[1];
                                                    $username = $matches[2];
                                                    $action = $matches[3];
                                                    
                                                    // Formater la date pour l'affichage
                                                    $date = date('d/m/Y', strtotime($datetime));
                                                    $time = date('H:i:s', strtotime($datetime));                                                    // Déterminer la classe CSS selon le type d'action
                                                    $rowClass = '';
                                                    $actionIcon = 'fas fa-edit';
                                                      if (strpos($action, 'ajouté le client') !== false) {
                                                        $rowClass = 'table-success';
                                                        $actionIcon = 'fas fa-user-plus';
                                                    } elseif (strpos($action, 'créé la police') !== false) {
                                                        $rowClass = 'table-primary';
                                                        $actionIcon = 'fas fa-file-contract';
                                                    } elseif (strpos($action, 'modifié') !== false && strpos($action, 'police') !== false) {
                                                        $rowClass = 'table-info';
                                                        $actionIcon = 'fas fa-file-signature';
                                                    } elseif (strpos($action, 'supprimé le client') !== false) {
                                                        $rowClass = 'table-danger';
                                                        $actionIcon = 'fas fa-user-times';
                                                    } elseif (strpos($action, 'changé') !== false) {
                                                        $rowClass = 'table-warning';
                                                        $actionIcon = 'fas fa-edit';
                                                    } elseif (strpos($action, 'modification') !== false) {
                                                        $rowClass = 'table-info';
                                                        $actionIcon = 'fas fa-edit';
                                                    }
                                                    
                                                    echo '<tr class="' . $rowClass . '">';
                                                    // Ajout d'un data-order pour un tri correct DataTables
                                                    echo '<td data-order="' . htmlspecialchars($datetime) . '">';
                                                    echo '<strong>' . htmlspecialchars($date) . '</strong><br>';
                                                    echo '<small class="text-muted">' . htmlspecialchars($time) . '</small>';
                                                    echo '</td>';
                                                    echo '<td>';
                                                    echo '<span class="badge badge-primary badge-pill">';
                                                    echo '<i class="fas fa-user-circle"></i> ' . htmlspecialchars($username);
                                                    echo '</span>';
                                                    echo '</td>';
                                                    echo '<td>';
                                                    echo '<i class="' . $actionIcon . ' text-muted mr-2"></i>';
                                                    echo '<div class="text-wrap d-inline">' . htmlspecialchars($action) . '</div>';
                                                    echo '</td>';
                                                    echo '</tr>';
                                                } else {
                                                    // Ligne de log dans un format différent (anciennes entrées)
                                                    echo '<tr class="table-secondary">';
                                                    echo '<td colspan="3">';
                                                    echo '<small class="text-muted"><i class="fas fa-file-alt"></i> ' . htmlspecialchars($line) . '</small>';
                                                    echo '</td>';
                                                    echo '</tr>';
                                                }
                                            }
                                              echo '</tbody>';
                                            echo '</table>';
                                            echo '</div>';
                                              } else {
                                            echo '<div class="alert alert-warning text-center">';
                                            echo '<i class="fas fa-exclamation-triangle fa-2x mb-2"></i><br>';
                                            echo '<strong>Aucune opération enregistrée</strong><br>';
                                            echo 'Le fichier de log existe mais ne contient aucune entrée.';
                                            echo '</div>';
                                        }                                    } else {
                                        echo '<div class="alert alert-info text-center">';
                                        echo '<i class="fas fa-info-circle fa-2x mb-2"></i><br>';
                                        echo '<strong>Fichier de log non trouvé</strong><br>';
                                        echo 'Aucune opération n\'a encore été effectuée.';
                                        echo '</div>';
                                    }
                                    ?>                                </div>
                            </div>
                        </div>
                    </div>
                    
                </div>
                <!---Container Fluid-->
            </div>
            <!-- Footer -->
            <?php include('includes/footer.php'); ?>
            <!-- Footer -->
        </div>
    </div>

    <!-- Scroll to top -->
    <a class="scroll-to-top rounded" href="#page-top">
        <i class="fas fa-angle-up"></i>
    </a>

    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
    <script src="vendor/jquery-easing/jquery.easing.min.js"></script>
    <script src="js/ruang-admin.min.js"></script>
    <script src="vendor/datatables/jquery.dataTables.min.js"></script>
    <script src="vendor/datatables/dataTables.bootstrap4.min.js"></script>    <script>
        $(document).ready(function() {
            $('#dataTable').DataTable({
                "order": [[ 0, "desc" ]],
                "pageLength": 25,
                "lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]],
                "language": {
                    "lengthMenu": "Afficher _MENU_ entrées par page",
                    "zeroRecords": "Aucune entrée trouvée",
                    "info": "Affichage de _START_ à _END_ sur _TOTAL_ entrées",
                    "infoEmpty": "Affichage de 0 à 0 sur 0 entrée",
                    "infoFiltered": "(filtré à partir de _MAX_ entrées totales)",
                    "search": "Rechercher:",
                    "paginate": {
                        "first": "Premier",
                        "last": "Dernier",
                        "next": "Suivant",
                        "previous": "Précédent"
                    }
                },
                "columnDefs": [
                    { "width": "20%", "targets": 0 },
                    { "width": "25%", "targets": 1 },
                    { "width": "55%", "targets": 2 }
                ],
                "responsive": true,
                "searching": true,
                "paging": true,
                "info": true
            });
        });
    </script>

</body>

</html>