requestStack->getCurrentRequest(); $tax = $request?->query->get('tax', 'tfpb'); $year = $request?->query->getInt('year', 2022); $volumeColumn = $this->resolveVolumeColumn($tax); $sql = <<connection->fetchAllAssociative($sql, ['year' => $year]); foreach ($rows as $row) { $item = new RegionalDistribution(); $item->regionCode = (string) $row['region_code']; $item->regionName = (string) $row['region_name']; $item->collectedVolume = (float) $row['collected_volume']; yield $item; } } private function resolveVolumeColumn(?string $tax): string { return match (strtolower((string) $tax)) { 'tfpnb' => 'volume_tfpnb', 'tfpb' => 'volume_tfpb', 'th' => 'volume_th', 'cfe' => 'volume_cfe', default => 'volume_tfpb', }; } }