You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
5.1KB

  1. <?php
  2. namespace Lc\SovBundle\Controller\Reminder;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Lc\CaracoleBundle\Resolver\MerchantResolver;
  5. use Lc\CaracoleBundle\Resolver\SectionResolver;
  6. use Lc\SovBundle\Factory\Reminder\ReminderFactoryInterface;
  7. use Lc\SovBundle\Form\Reminder\ReminderAdminFormType;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  10. use Symfony\Component\Form\FormFactoryInterface;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  14. class ReminderAdminController extends AbstractController
  15. {
  16. protected EntityManagerInterface $entityManager;
  17. protected ReminderFactoryInterface $reminderFactory;
  18. protected FormFactoryInterface $formFactory;
  19. protected UrlGeneratorInterface $urlGenerator;
  20. protected MerchantResolver $merchantResolver;
  21. protected SectionResolver $sectionResolver;
  22. protected ParameterBagInterface $parameterBag;
  23. public function __construct(
  24. EntityManagerInterface $entityManager,
  25. ReminderFactoryInterface $reminderFactory,
  26. FormFactoryInterface $formFactory,
  27. UrlGeneratorInterface $urlGenerator,
  28. MerchantResolver $merchantResolver,
  29. SectionResolver $sectionResolver,
  30. ParameterBagInterface $parameterBag
  31. ) {
  32. $this->entityManager = $entityManager;
  33. $this->reminderFactory = $reminderFactory;
  34. $this->formFactory = $formFactory;
  35. $this->urlGenerator = $urlGenerator;
  36. $this->merchantResolver = $merchantResolver;
  37. $this->sectionResolver = $sectionResolver;
  38. $this->parameterBag = $parameterBag;
  39. }
  40. public function renderModal(Request $request): Response
  41. {
  42. $crudAction = $request->get('crudAction');
  43. $crudControllerFqcn = $request->get('crudControllerFqcn');
  44. $entityId = $request->get('entityId');
  45. $reminder = $this->createEntity($crudAction, $crudControllerFqcn, $entityId);
  46. $form = $this->formFactory->create(
  47. ReminderAdminFormType::class,
  48. $reminder,
  49. [
  50. 'action' => $this->urlGenerator->generate(
  51. $this->parameterBag->get('app.reminder.route_new')
  52. )
  53. ]
  54. );
  55. return $this->render(
  56. '@LcSov/admin/reminder/form_modal.html.twig',
  57. [
  58. 'form_reminder' => $form->createView()
  59. ]
  60. );
  61. }
  62. public function new(Request $request)
  63. {
  64. $reminder = $this->createEntity();
  65. $form = $this->formFactory->create(ReminderAdminFormType::class, $reminder);
  66. $form->handleRequest($request);
  67. if ($form->isSubmitted() && $form->isValid()) {
  68. $reminder = $form->getData();
  69. $this->entityManager->persist($reminder);
  70. $this->entityManager->flush();
  71. $this->addFlash('success', 'Le pense-bête a bien été ajouté');
  72. }
  73. return $this->redirect($request->headers->get('referer'));
  74. }
  75. public function createEntity(string $crudAction = null, string $crudControllerFqcn = null, int $entityId = null)
  76. {
  77. return $this->reminderFactory->create($crudAction, $crudControllerFqcn, $entityId);
  78. }
  79. /*
  80. public function renderTemplate($actionName, $templatePath, array $parameters = [])
  81. {
  82. if ($this->request->isXmlHttpRequest() && ($actionName == 'new' || $actionName == 'edit')) {
  83. $response['flashMessages'] = $this->utils->getFlashMessages();
  84. $response['data'] = $this->render('@LcShop/backend/default/modal/edit_reminder.twig', $parameters)->getContent();
  85. return new Response(json_encode($response));
  86. } else {
  87. return parent::renderTemplate($actionName, $templatePath, $parameters);
  88. }
  89. }
  90. protected function redirectToReferrer()
  91. {
  92. $action = $this->request->query->get('action');
  93. if ($action == 'new') {
  94. $this->utils->addFlash('success', 'success.reminder.add');
  95. } elseif ($action == 'edit') {
  96. $this->utils->addFlash('success', 'success.reminder.edit');
  97. } elseif ($action == ' setReminderDone') {
  98. $this->utils->addFlash('success', 'success.reminder.done');
  99. }
  100. if ($this->request->isXmlHttpRequest()) {
  101. $response['flashMessages'] = $this->utils->getFlashMessages();
  102. return new Response(json_encode($response));
  103. } else {
  104. return parent::redirectToReferrer();
  105. }
  106. }
  107. public function setReminderDoneAction()
  108. {
  109. $id = $this->request->query->get('id');
  110. $done = $this->request->query->get('done');
  111. $easyadmin = $this->request->attributes->get('easyadmin');
  112. $reminder = $easyadmin['item'];
  113. $reminder->setDone($done);
  114. $this->em->persist($reminder);
  115. $this->em->flush();
  116. return $this->redirectToReferrer();
  117. }*/
  118. }