Spaces:
No application file
No application file
File size: 1,578 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php
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, '-');
}
}
|