insert($data); } public function getReparation(int $id = null) { $session = session(); $user = $session->get('user'); if ($user['group_name'] == "SuperAdmin" || $user['group_name'] == "Direction") { $reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*') ->join('users', 'reparations.user_id = users.id') ->join('products', 'reparations.produit_id = products.id') ->findAll(); } else { if ($id !== null) { $reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*') ->join('users', 'reparations.user_id = users.id') ->join('products', 'reparations.produit_id = products.id') ->where('users.id', $id) ->findAll(); } else { $reparation = []; } } return $reparation; } public function getReparationSingle(int $id) { $reparation = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*') ->join('users', 'reparations.user_id = users.id') ->join('products', 'reparations.produit_id = products.id') ->where('reparations.reparation_id', $id) ->first(); // return $this->where('user_id', $id)->findAll(); return $reparation; } public function updateReparation(array $data, int $id) { return $this->update($id, $data); } public function deleteReparation(int $id) { return $this->delete($id); } public function getTotalReparationPerStatut(){ return $this->db->table('reparation') ->select('COUNT(*) as total') ->where('reparation_statut', 2) ->get() ->getRow(); } public function getReparationWithFilters(int $id = null, $startDate = null, $endDate = null, $pvente = null) { $session = session(); $user = $session->get('user'); $builder = $this->select('reparations.reparation_id as reparationsID, reparations.user_id, reparations.reparation_statut, reparations.produit_id, reparations.reparation_observation, reparations.reparation_debut, reparations.reparation_fin, users.*, products.*, stores.name as store_name') ->join('users', 'reparations.user_id = users.id') ->join('products', 'reparations.produit_id = products.id') ->join('stores', 'products.store_id = stores.id', 'left'); // ✅ JOINTURE AVEC MAGASINS // Filtre par utilisateur si pas admin if ($user['group_name'] != "SuperAdmin" && $user['group_name'] != "Direction" && $user['group_name'] != "DAF") { $builder->where('users.id', $id); } // ✅ APPLIQUER LES FILTRES PAR DATE if (!empty($startDate) && !empty($endDate)) { $builder->where('DATE(reparations.reparation_debut) >=', $startDate); $builder->where('DATE(reparations.reparation_debut) <=', $endDate); } elseif (!empty($startDate)) { $builder->where('DATE(reparations.reparation_debut) >=', $startDate); } elseif (!empty($endDate)) { $builder->where('DATE(reparations.reparation_debut) <=', $endDate); } // ✅ FILTRE PAR POINT DE VENTE if (!empty($pvente) && $pvente !== 'TOUS') { $builder->where('stores.name', $pvente); } $builder->orderBy('reparations.reparation_debut', 'DESC'); return $builder->findAll(); } }