Spaces:
No application file
No application file
| namespace Mautic\ReportBundle\Model; | |
| use Mautic\CoreBundle\Helper\InputHelper; | |
| use Mautic\ReportBundle\Crate\ReportDataResult; | |
| use Mautic\ReportBundle\Entity\Scheduler; | |
| use Mautic\ReportBundle\Exception\FileIOException; | |
| class ReportFileWriter | |
| { | |
| public function __construct( | |
| private CsvExporter $csvExporter, | |
| private ExportHandler $exportHandler | |
| ) { | |
| } | |
| /** | |
| * @throws FileIOException | |
| */ | |
| public function writeReportData(Scheduler $scheduler, ReportDataResult $reportDataResult, ReportExportOptions $reportExportOptions): void | |
| { | |
| $fileName = $this->getFileName($scheduler); | |
| $handler = $this->exportHandler->getHandler($fileName); | |
| $this->csvExporter->export($reportDataResult, $handler, $reportExportOptions->getPage()); | |
| $this->exportHandler->closeHandler($handler); | |
| } | |
| public function clear(Scheduler $scheduler): void | |
| { | |
| $fileName = $this->getFileName($scheduler); | |
| $this->exportHandler->removeFile($fileName); | |
| } | |
| /** | |
| * @throws FileIOException | |
| */ | |
| public function getFilePath(Scheduler $scheduler): string | |
| { | |
| $fileName = $this->getFileName($scheduler); | |
| return $this->exportHandler->getPath($fileName); | |
| } | |
| private function getFileName(Scheduler $scheduler): string | |
| { | |
| $date = $scheduler->getScheduleDate(); | |
| $dateString = $date->format('Y-m-d'); | |
| $reportName = $scheduler->getReport()->getName(); | |
| return $dateString.'_'.InputHelper::alphanum($reportName, false, '-'); | |
| } | |
| } | |