Spaces:
No application file
No application file
File size: 2,505 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<?php
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()]);
}
}
|