|
- <?php
-
- namespace Lc\SovBundle\Controller\Reminder;
-
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\CaracoleBundle\Resolver\MerchantResolver;
- use Lc\CaracoleBundle\Resolver\SectionResolver;
- use Lc\SovBundle\Factory\Reminder\ReminderFactoryInterface;
- use Lc\SovBundle\Form\Reminder\ReminderAdminFormType;
- use Lc\SovBundle\Repository\Reminder\ReminderRepositoryQueryInterface;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
- use Symfony\Component\Form\FormFactoryInterface;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
- use Symfony\Component\Routing\Annotation\Route;
-
- class ReminderAdminController extends AbstractController
- {
-
- protected EntityManagerInterface $entityManager;
- protected ReminderFactoryInterface $reminderFactory;
- protected ReminderRepositoryQueryInterface $reminderRepositoryQuery;
- protected FormFactoryInterface $formFactory;
- protected UrlGeneratorInterface $urlGenerator;
- protected MerchantResolver $merchantResolver;
- protected SectionResolver $sectionResolver;
- protected ParameterBagInterface $parameterBag;
-
- public function __construct(
- EntityManagerInterface $entityManager,
- ReminderFactoryInterface $reminderFactory,
- ReminderRepositoryQueryInterface $reminderRepositoryQuery,
- FormFactoryInterface $formFactory,
- UrlGeneratorInterface $urlGenerator,
- MerchantResolver $merchantResolver,
- SectionResolver $sectionResolver,
- ParameterBagInterface $parameterBag
- ) {
- $this->entityManager = $entityManager;
- $this->reminderFactory = $reminderFactory;
- $this->reminderRepositoryQuery = $reminderRepositoryQuery;
- $this->formFactory = $formFactory;
- $this->urlGenerator = $urlGenerator;
- $this->merchantResolver = $merchantResolver;
- $this->sectionResolver = $sectionResolver;
- $this->parameterBag = $parameterBag;
- }
-
- /**
- * @Route("/admin/reminder/modal", name="sov_admin_reminder_render_modal")
- */
- public function renderModal(Request $request): Response
- {
- $id = $request->get('id');
-
- if($id) {
- $reminder = $this->reminderRepositoryQuery->getRepository()->find($id);
- $action = $this->urlGenerator->generate(
- $this->parameterBag->get('app.reminder.route_edit'),
- ['id' => $id]
- );
- }
- else {
- $crudAction = $request->get('crudAction');
- $crudControllerFqcn = $request->get('crudControllerFqcn');
- $entityId = $request->get('entityId') ? $request->get('entityId') : null ;
- $reminder = $this->createEntity($crudAction, $crudControllerFqcn, $entityId);
- $action = $this->urlGenerator->generate(
- $this->parameterBag->get('app.reminder.route_new')
- );
- }
-
- $form = $this->formFactory->create(
- ReminderAdminFormType::class,
- $reminder,
- [
- 'action' => $action
- ]
- );
-
- return $this->render(
- '@LcSov/admin/reminder/form_modal.html.twig',
- [
- 'form_reminder' => $form->createView()
- ]
- );
- }
-
- /**
- * @Route("/admin/reminder/new", name="sov_admin_reminder_new")
- */
- public function new(Request $request)
- {
- $reminder = $this->createEntity();
-
- $form = $this->formFactory->create(ReminderAdminFormType::class, $reminder);
- $form->handleRequest($request);
-
- if ($form->isSubmitted() && $form->isValid()) {
- $reminder = $form->getData();
- $this->entityManager->persist($reminder);
- $this->entityManager->flush();
-
- $this->addFlash('success', 'Le pense-bête a bien été ajouté');
- }
-
- return $this->redirect($request->headers->get('referer'));
- }
-
- /**
- * @Route("/admin/reminder/edit/{id}", name="sov_admin_reminder_edit")
- */
- public function edit(Request $request)
- {
- $id = $request->get('id');
- $reminder = $this->reminderRepositoryQuery->getRepository()->find($id);
-
- $form = $this->formFactory->create(ReminderAdminFormType::class, $reminder);
- $form->handleRequest($request);
-
- if ($form->isSubmitted() && $form->isValid()) {
- $reminder = $form->getData();
- $this->entityManager->update($reminder);
- $this->entityManager->flush();
-
- $this->addFlash('success', 'Le pense-bête a bien été mis à jour');
- }
-
- return $this->redirect($request->headers->get('referer'));
- }
-
- /**
- * @Route("/admin/reminder/done", name="sov_admin_reminder_done")
- */
- public function done(Request $request): JsonResponse
- {
- $id = $request->get('id');
- $reminder = $this->reminderRepositoryQuery->getRepository()->find($id);
- $done = $request->get('done');
-
- if($done == 'true') {
- $reminder->setDone(true);
- }
- else {
- $reminder->setDone(false);
- }
-
- $this->entityManager->update($reminder);
- $this->entityManager->flush();
- return new JsonResponse(['success' => true]);
- }
-
- public function createEntity(string $crudAction = null, string $crudControllerFqcn = null, int $entityId = null)
- {
- return $this->reminderFactory->create($crudAction, $crudControllerFqcn, $entityId);
- }
- }
|