- Create DataAggregator service (data aggregation logic) - Create HtmlExporter service (HTML/preview rendering) - Create ExcelExporter service (Excel download) - Refactor ReportGenerator to delegate to services Tests: 101 passing (319 assertions)
20 lines
566 B
PHP
20 lines
566 B
PHP
<?php
|
|
|
|
namespace App\Services\Report;
|
|
|
|
use App\Models\Project;
|
|
use App\DTO\ReportFilters;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\ProjectReportExport;
|
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
|
|
class ExcelExporter
|
|
{
|
|
public function export(Project $project, ReportFilters $filters, array $data): BinaryFileResponse
|
|
{
|
|
$export = new ProjectReportExport($project, $filters, $data);
|
|
$filename = 'informe_'.$project->name.'_'.now()->format('Ymd_His').'.xlsx';
|
|
|
|
return Excel::download($export, $filename);
|
|
}
|
|
} |