get('user'); if ($user['group_name'] !== 'SuperAdmin') { return redirect()->to('/'); } $storesModel = new Stores(); $data['page_title'] = $this->pageTitle; $data['stores'] = $storesModel->getActiveStore(); return $this->render_template('action_log/index', $data); } public function fetchData() { $session = session(); $user = $session->get('user'); if ($user['group_name'] !== 'SuperAdmin') { return $this->response->setJSON(['data' => []]); } $historiqueModel = new Historique(); $filters = [ 'action' => $this->request->getGet('action'), 'store_name' => $this->request->getGet('store_name'), 'product_name' => $this->request->getGet('product'), 'sku' => $this->request->getGet('sku'), 'date_from' => $this->request->getGet('date_from'), 'date_to' => $this->request->getGet('date_to'), ]; $allData = $historiqueModel->getHistoriqueWithFilters($filters); $result = ['data' => []]; foreach ($allData as $row) { $result['data'][] = [ date('d/m/Y H:i', strtotime($row['created_at'])), $row['user_name'] ?? 'Système', $this->getActionBadge($row['action']), $this->getTableLabel($row['table_name']), $row['description'] ?? '', ]; } return $this->response->setJSON($result); } private function getActionBadge($action) { $badges = [ 'CREATE' => 'Création', 'UPDATE' => 'Modification', 'DELETE' => 'Suppression', 'PAYMENT' => 'Paiement', 'VALIDATE' => 'Validation', 'REFUSE' => 'Refus', 'DELIVERY' => 'Livraison', 'ASSIGN_STORE' => 'Assignation', 'ENTRER' => 'Entrée', 'SORTIE' => 'Sortie', 'IMPORT' => 'Import', 'LOGIN' => 'Connexion', ]; return $badges[$action] ?? '' . $action . ''; } private function getTableLabel($tableName) { $labels = [ 'orders' => 'Commande', 'products' => 'Produit', 'users' => 'Utilisateur', 'groups' => 'Rôle', 'avances' => 'Avance', 'securite' => 'Sécurité', 'remise' => 'Remise', 'sortie_caisse' => 'Décaissement', 'autres_encaissements' => 'Encaissement', 'recouvrement' => 'Recouvrement', 'stores' => 'Point de vente', 'brands' => 'Marque', 'categories' => 'Catégorie', ]; return $labels[$tableName] ?? $tableName; } public function export() { $session = session(); $user = $session->get('user'); if ($user['group_name'] !== 'SuperAdmin') { return redirect()->to('/'); } $historiqueModel = new Historique(); $filters = [ 'action' => $this->request->getGet('action'), 'store_name' => $this->request->getGet('store_name'), 'date_from' => $this->request->getGet('date_from'), 'date_to' => $this->request->getGet('date_to'), ]; $data = $historiqueModel->getHistoriqueWithFilters($filters); $csv = "\xEF\xBB\xBF"; // BOM UTF-8 pour Excel $csv .= "Date;Heure;Utilisateur;Action;Module;Description\n"; foreach ($data as $row) { $date = date('d-m-Y', strtotime($row['created_at'])); $heure = date('H:i', strtotime($row['created_at'])); $userName = $row['user_name'] ?? 'Système'; $action = $row['action']; $module = $this->getTableLabel($row['table_name']); $description = str_replace('"', '""', $row['description'] ?? ''); $csv .= "{$date};{$heure};{$userName};{$action};{$module};\"{$description}\"\n"; } $filename = 'historique_actions_' . date('Y-m-d_H-i') . '.csv'; return $this->response ->setHeader('Content-Type', 'text/csv; charset=utf-8') ->setHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') ->setBody($csv); } }