createQueryBuilder('i') ->select('i.year') ->groupBy('i.year') ->getQuery() ->getResult(); return $AllYears; } public function findAllTypes(){ $AllTypes = $this->createQueryBuilder('i') ->select('i.type') ->groupBy('i.type') ->getQuery() ->getResult(); return $AllTypes; } public function findVolumeByTypeAndYear(string $type, int $year) { // Volume par région $regionsData = $this->createQueryBuilder('i') ->select('i.region, SUM(i.volumeCollected) as volume') ->where('i.type = :type') ->andWhere('i.year = :year') ->setParameter('type', $type) ->setParameter('year', $year) ->groupBy('i.region') ->getQuery() ->getResult(); // Volume total de toutes les régions $totalVolume = $this->createQueryBuilder('i') ->select('SUM(i.volumeCollected) as totalVolume') ->where('i.type = :type') ->andWhere('i.year = :year') ->setParameter('type', $type) ->setParameter('year', $year) ->getQuery() ->getSingleScalarResult(); // Ajoute le pourcentage à la réponse chaque région foreach ($regionsData as $regionData) { $regionData['percentage'] = ($regionData['volume'] / $totalVolume) * 100; $result[] = [ 'region' => $regionData['region'], 'percentage' => $regionData['percentage'] ]; } // 4. Retourner les résultats avec les pourcentages return $result; } }