← Back
Editing: AgentControlCountExporter.php
<?php namespace App\Export; use App\Entity\Agency; use App\Repository\UserRepository; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class AgentControlCountExporter { public function __construct(private UserRepository $userRepository) { } /** * Return exported file name. * * @param Agency[] $agencies */ public function __invoke(array $agencies): string { $data = $this->userRepository->getByAgenciesByControl( agenciesId: array_map(fn (Agency $agency) => $agency->getId(), $agencies), role: 'ROLE_AGENT', sort: ['COUNT(c.id)', 'DESC'] ); return $this->exportData($data); } /** * @param list<array{name: string, cnt: int}> $data */ private function exportData(array $data): string { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Contrôles par agent'); $sheet->setCellValue('A1', 'Agent'); $sheet->setCellValue('B1', 'Contrôles'); $sheet->getColumnDimension('A')->setAutoSize(true); $sheet->getColumnDimension('B')->setAutoSize(true); $cursor = 2; foreach ($data as $row) { $sheet->setCellValue( 'A'.$cursor, $row['name'] ); $sheet->setCellValue('B'.$cursor, $row['cnt']); ++$cursor; } return $this->writeData($spreadsheet); } private function writeData(Spreadsheet $spreadsheet): string { $writer = new Xlsx($spreadsheet); $tmpFile = tempnam(sys_get_temp_dir(), $spreadsheet->getID()); // Create the excel file in the tmp directory of the system $writer->save($tmpFile); return $tmpFile; } }
Save File
Cancel