verifyRole('viewSecurite'); // ou autre permission $session = session(); $user = $session->get('user'); $data['page_title'] = 'Validation Sécurité'; $data['user_role'] = $user['group_name']; // ✅ AJOUTER CETTE LIGNE $data['user_permission'] = $this->permission; // ✅ RÉCUPÉRER LES MAGASINS $storeModel = new \App\Models\Stores(); $data['stores'] = $storeModel->getActiveStore(); return $this->render_template('securite/index', $data); } public function fetchSecuriteData() { $securiteModel = new Securite(); $Products = new Products(); $securites = $securiteModel->getAllSecuriteData(); $result = ['data' => []]; foreach ($securites as $securite) { if ($securite['status'] === 'PENDING') { $product = $Products->getProductData($securite['product_id']); if (! $product) continue; // Bouton d’action $buttons = in_array('validateCommande1', $this->permission) ? '' : ''; // Statut $statut = 'EN ATTENTE DE VALIDATION'; // Image $img = ''; $result['data'][] = [ 'image' => $img, 'ugs' => esc($product['sku']), 'designation' => esc($product['name']), 'statut' => $statut, 'action' => $buttons ]; } } return $this->response->setJSON($result); } public function fetchSecuriteDataById($id) { if ($id) { $Securite = new Securite(); $Orders = new Orders(); $Products = new Products(); $data = $Securite->getSecuriteData($id); $order_data = $Orders->getOrdersDataByBillNo($data['bill_no']); $product = $Products->getProductData($data['product_id']); $response = [ 'image' => base_url('assets/images/product_image/' . $product['image']), 'nom' => $product['name'], 'ugs' => $product['sku'], 'bill_no' => $data['bill_no'], 'customer_name' => $order_data['customer_name'], 'customer_address' => $order_data['customer_address'], 'customer_phone' => $order_data['customer_phone'], 'customer_cin' => $order_data['customer_cin'], ]; return $this->response->setJSON($response); } } public function update(int $id) { $this->verifyRole('updateCommande1'); $securiteModel = new Securite(); $post = $this->request->getPost(); $response = []; if ($id && isset($post['status'])) { $data = [ 'status' => $post['status'], 'active' => 0 ]; $session = session(); $users = $session->get('user'); $Notification = new NotificationController(); if ($securiteModel->updateSecurite($data, $id)) { if ($post['status'] === "Validé") { // ✅ Récupérer les infos de la ligne securite $securiteData = $securiteModel->getSecuriteData($id); if ($securiteData) { // ✅ Marquer le produit comme vendu (product_sold = 1) $productModel = new Products(); $productModel->update($securiteData['product_id'], ['product_sold' => 1]); // ✅ Mettre à jour la commande liée (paid_status = 3 = livré) if (!empty($securiteData['bill_no'])) { $orderModel = new Orders(); $order = $orderModel->getOrdersDataByBillNo($securiteData['bill_no']); if ($order) { $orderModel->update($order['id'], [ 'paid_status' => 3, 'delivered_by' => $users['id'], 'delivered_at' => date('Y-m-d H:i:s') ]); } } } $Notification->notifyGroupsByPermission('notifRemise', 'Une commande a été validée et livrée', (int)$users['store_id'], 'orders'); } // Log de l'action livraison $historique = new Historique(); $billNo = $securiteData['bill_no'] ?? 'N/A'; $historique->logAction('securite', 'DELIVERY', $id, "Confirmation de livraison - Facture: {$billNo}"); $response = ['success' => true, 'messages' => 'Livraison confirmée avec succès']; } else { $response = ['success' => false, 'messages' => 'Erreur en base lors de la mise à jour']; } } else { $response = ['success' => false, 'messages' => 'ID ou statut manquant']; } return $this->response->setJSON($response); } public function remove() { $this->verifyRole('deleteCommande1'); $response = []; $storeId = $this->request->getPost('store_id'); if ($storeId) { $storeModel = new Stores(); if ($storeModel->delete($storeId)) { $response['success'] = true; $response['messages'] = "Supprimé avec succès"; } else { $response['success'] = false; $response['messages'] = "Erreur dans la base de données lors de la suppression des informations sur la marque"; } } else { $response['success'] = false; $response['messages'] = "Référez à nouveau la page !!"; } return $this->response->setJSON($response); } }