Spaces:
No application file
No application file
namespace Mautic\ReportBundle\Controller; | |
use Mautic\CoreBundle\Controller\AjaxController as CommonAjaxController; | |
use Mautic\CoreBundle\Service\FlashBag; | |
use Mautic\ReportBundle\Scheduler\Date\DateBuilder; | |
use Symfony\Component\HttpFoundation\JsonResponse; | |
class ScheduleController extends CommonAjaxController | |
{ | |
public function indexAction(DateBuilder $dateBuilder, $isScheduled, $scheduleUnit, $scheduleDay, $scheduleMonthFrequency): JsonResponse | |
{ | |
$dates = $dateBuilder->getPreviewDays($isScheduled, $scheduleUnit, $scheduleDay, $scheduleMonthFrequency); | |
$html = $this->render( | |
'@MauticReport/Schedule/index.html.twig', | |
[ | |
'dates' => $dates, | |
] | |
)->getContent(); | |
return $this->sendJsonResponse( | |
[ | |
'html' => $html, | |
] | |
); | |
} | |
/** | |
* Sets report to schedule NOW if possible. | |
* | |
* @param int $reportId | |
*/ | |
public function nowAction($reportId): JsonResponse | |
{ | |
/** @var \Mautic\ReportBundle\Model\ReportModel $model */ | |
$model = $this->getModel('report'); | |
/** @var \Mautic\ReportBundle\Entity\Report $report */ | |
$report = $model->getEntity($reportId); | |
/** @var \Mautic\CoreBundle\Security\Permissions\CorePermissions $security */ | |
$security = $this->security; | |
if (empty($report)) { | |
$this->addFlashMessage('mautic.report.notfound', ['%id%' => $reportId], FlashBag::LEVEL_ERROR, 'messages'); | |
return $this->flushFlash(); | |
} | |
if (!$security->hasEntityAccess('report:reports:viewown', 'report:reports:viewother', $report->getCreatedBy())) { | |
$this->addFlashMessage('mautic.core.error.accessdenied', [], FlashBag::LEVEL_ERROR); | |
return $this->flushFlash(); | |
} | |
if ($report->isScheduled()) { | |
$this->addFlashMessage('mautic.report.scheduled.already', ['%id%' => $reportId], FlashBag::LEVEL_ERROR); | |
return $this->flushFlash(); | |
} | |
$report->setAsScheduledNow($this->user->getEmail()); | |
$model->saveEntity($report); | |
$this->addFlashMessage( | |
'mautic.report.scheduled.to.now', | |
['%id%' => $reportId, '%email%' => $this->user->getEmail()] | |
); | |
return $this->flushFlash(); | |
} | |
private function flushFlash(): JsonResponse | |
{ | |
return new JsonResponse(['flashes' => $this->getFlashContent()]); | |
} | |
} | |