Spaces:
No application file
No application file
| namespace Mautic\ReportBundle\Scheduler\Command; | |
| use Mautic\ReportBundle\Exception\FileIOException; | |
| use Mautic\ReportBundle\Model\ReportCleanup; | |
| use Mautic\ReportBundle\Model\ReportExporter; | |
| use Mautic\ReportBundle\Scheduler\Option\ExportOption; | |
| use Symfony\Component\Console\Command\Command; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Input\InputOption; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class ExportSchedulerCommand extends Command | |
| { | |
| public function __construct( | |
| private ReportExporter $reportExporter, | |
| private ReportCleanup $reportCleanup, | |
| private TranslatorInterface $translator | |
| ) { | |
| parent::__construct(); | |
| } | |
| protected function configure() | |
| { | |
| $this | |
| ->setName('mautic:reports:scheduler') | |
| ->addOption('--report', 'report', InputOption::VALUE_OPTIONAL, 'ID of report. Process all reports if not set.'); | |
| } | |
| protected function execute(InputInterface $input, OutputInterface $output): int | |
| { | |
| $report = $input->getOption('report'); | |
| try { | |
| $exportOption = new ExportOption($report); | |
| } catch (\InvalidArgumentException $e) { | |
| $output->writeln('<error>'.$this->translator->trans('mautic.report.schedule.command.invalid_parameter').'</error>'); | |
| return Command::SUCCESS; | |
| } | |
| try { | |
| if ($exportOption->getReportId()) { | |
| $this->reportCleanup->cleanup($exportOption->getReportId()); | |
| } else { | |
| $this->reportCleanup->cleanupAll(); | |
| } | |
| $this->reportExporter->processExport($exportOption); | |
| $output->writeln('<info>'.$this->translator->trans('mautic.report.schedule.command.finished').'</info>'); | |
| } catch (FileIOException $e) { | |
| $output->writeln('<error>'.$e->getMessage().'</error>'); | |
| } | |
| return Command::SUCCESS; | |
| } | |
| protected static $defaultDescription = 'Processes scheduler for report\'s export'; | |
| } | |