| Current Path : /var/www/v3.cesa.co.za/src/MailQueueBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/MailQueueBundle/Controller/MailQueueController.php |
<?php
namespace App\MailQueueBundle\Controller;
use App\MailQueueBundle\Service\MailQueueService;
use Doctrine\DBAL\Exception as DbalException;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\ExpressionLanguage\Expression;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
class MailQueueController extends AbstractController
{
#[Route('/admin-tools/mail-queue.html', name: 'mail_queue_list')]
#[IsGranted(new Expression('is_granted("ROLE_ADMIN") or is_granted("ROLE_MAIL_QUEUE_ADMIN")'))]
public function list(MailQueueService $mailQueueService): Response
{
try {
$summary = $mailQueueService->getGlobalSummary();
$messages = $mailQueueService->listMessages();
} catch (DbalException $e) {
return $this->render('@MailQueueBundle/queue/error.html.twig', [
'errorMessage' => 'Unable to connect to the mail queue database. Please check MAIL_DATABASE_* configuration.',
]);
}
return $this->render('@MailQueueBundle/queue/list.html.twig', [
'summary' => $summary,
'messages' => $messages,
]);
}
#[Route('/admin-tools/mail-queue/{messageId}.html', name: 'mail_queue_detail', requirements: ['messageId' => '\d+'])]
#[IsGranted(new Expression('is_granted("ROLE_ADMIN") or is_granted("ROLE_MAIL_QUEUE_ADMIN")'))]
public function detail(
int $messageId,
Request $request,
MailQueueService $mailQueueService,
PaginatorInterface $paginator,
): Response {
try {
$message = $mailQueueService->findMessage($messageId);
$messageBody = $mailQueueService->findMessageBody($messageId);
$messageBodySrcdoc = MailQueueService::buildMessageBodySrcdoc($messageBody);
} catch (DbalException $e) {
return $this->render('@MailQueueBundle/queue/error.html.twig', [
'errorMessage' => 'Unable to connect to the mail queue database. Please check MAIL_DATABASE_* configuration.',
]);
}
if ($message === null) {
throw new NotFoundHttpException('Mail campaign not found.');
}
$toSendQuery = $mailQueueService->getToSendQueryForMessage($messageId);
$toSendPage = $paginator->paginate($toSendQuery, $request->query->getInt('page', 1), 50);
return $this->render('@MailQueueBundle/queue/detail.html.twig', [
'message' => $message,
'messageBody' => $messageBody,
'messageBodySrcdoc' => $messageBodySrcdoc,
'toSendPage' => $toSendPage,
]);
}
}