<?php
namespace App\Controller;
use App\Entity\SiteMailLogs;
use App\Form\LogMailSentsType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Form\Filters\LogMailSentFilter;
use App\Repository\LogMailSentsRepository;
#[Route('/log/mail/sent')]
class LogMailHistoryController extends AbstractController
{
#[Route('/', defaults: ['page' => '1'], methods: ['GET'], name: 'log_mail_sent_index')]
#[Route('/page/{page<[1-9]\d*>}', methods: ['GET'], name: 'log_mail_sent_index_paginated')]
#[Cache(smaxage: 10)]
public function index(Request $request,int $page,EntityManagerInterface $entityManager,LogMailSentsRepository $logMailSentsRepository): Response
{
$params = $request->query->all();
$filter = [];
$filterForm = $this->createForm(LogMailSentFilter::class, $params);
$logHistory = $logMailSentsRepository->adminPaginatorFetchAll($page, $params);
return $this->render('log-mail-sent/index.html.twig', [
'paginator' => $logHistory,
'filter' => $params,
'form' => $filterForm->createView(),
]);
}
#[Route('/new', name: 'log_mail_sent_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$logMailSent = new SiteMailLogs();
$form = $this->createForm(LogMailSentsType::class, $logMailSent);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($logMailSent);
$entityManager->flush();
return $this->redirectToRoute('log_mail_sent_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('log-mail-sent/new.html.twig', [
'log_mail_sent' => $logMailSent,
'form' => $form,
]);
}
#[Route('/{id}', name: 'log_mail_sent_show', methods: ['GET'])]
public function show(SiteMailLogs $logMailSent): Response
{
return $this->render('log-mail-sent/show.html.twig', [
'log_mail_sent' => $logMailSent,
]);
}
#[Route('/{id}/edit', name: 'log_mail_sent_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, SiteMailLogs $logMailSent, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(LogMailSentsType::class, $logMailSent);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
$this->addFlash('success', 'Update successfully.');
return $this->redirectToRoute('log_mail_sent_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('log-mail-sent/edit.html.twig', [
'log_mail_sent' => $logMailSent,
'form' => $form,
]);
}
#[Route('/{id}', name: 'log_mail_sent_delete', methods: ['POST'])]
public function delete(Request $request, SiteMailLogs $logMailSent, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete'.$logMailSent->getId(), $request->request->get('_token'))) {
$entityManager->remove($logMailSent);
$entityManager->flush();
}
$this->addFlash('error', 'Delete successfully.');
return $this->redirectToRoute('log_mail_sent_index', [], Response::HTTP_SEE_OTHER);
}
}