src/Controller/PageController.php line 164

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Letter;
  4. use App\Entity\Page;
  5. use App\Repository\PageRepository;
  6. use App\Services\PageService;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Gedmo\Translatable\TranslatableListener;
  9. use Gedmo\Translatable\Entity\Translation;
  10. use Gedmo\Translatable\Entity\Repository\TranslationRepository;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. #[Route('/page')]
  17. class PageController extends AbstractController
  18. {
  19.     private EntityManagerInterface $entityManager;
  20.     public function __construct(EntityManagerInterface $entityManager)
  21.     {
  22.         $this->entityManager $entityManager;
  23.     }
  24.     #[Route('/new'name'app_page_new'methods: ['GET''POST'])]
  25.     public function new(Request $requestEntityManagerInterface $entityManager): Response
  26.     {
  27.         $page = new Page();
  28.         $entityManager->persist($page);
  29.         $entityManager->flush();
  30.         return new JsonResponse('success');
  31.     }
  32.     #[Route('/about-template/{_locale}'name'page_home1555',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  33.     public function index15(PageRepository  $pageRepository)
  34.     {
  35.         $page $pageRepository->find(2);
  36.         $editable true;
  37.         return $this->render('@web/page/template.html.twig',[
  38.             'page'=>$page,
  39.             'editable' => $editable
  40.         ]);
  41.     }
  42.     #[Route('/about-template/view/{_locale}'name'page_home15555',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  43.     public function index150(PageRepository  $pageRepository)
  44.     {
  45.         $page $pageRepository->find(2);
  46.         $editable false;
  47.         return $this->render('@web/page/template.html.twig',[
  48.             'page'=>$page,
  49.             'editable' => $editable
  50.         ]);
  51.     }
  52.     #[Route('/{slug}/{_locale}'name'page_work',requirements: ['_locale' => 'en|ru|hy|ka|uk'], defaults: ['_locale' => 'ru'])]
  53.     public function pageEdit(string $slug,PageRepository  $pageRepository)
  54.     {
  55.         $page $pageRepository->findOneBy(['slug' => $slug]);
  56.         $editable true;
  57.         $preview false;
  58.         return $this->render('@web/page/template.html.twig',[
  59.             'page'=>$page,
  60.             'editable' => $editable,
  61.             'preview' => $preview
  62.         ]);
  63.     }
  64.     #[Route('/dalma/{slug}/{_locale}'name'page_dalma_edit',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  65.     public function pageDalmaEdit(string $slug,PageRepository  $pageRepository)
  66.     {
  67.         $page $pageRepository->findOneBy(['slug' => $slug]);
  68.         $editable true;
  69.         $preview false;
  70.         $dalma false;
  71.         return $this->render('@web/page/template-dalma.html.twig',[
  72.             'page'=>$page,
  73.             'dalma'=>$dalma,
  74.             'editable' => $editable,
  75.             'preview' => $preview
  76.         ]);
  77.     }
  78.     #[Route('/yeremyan/{slug}/{_locale}'name'page_yeremyan_edit',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  79.     public function pageYeremyanEdit(string $slug,PageRepository  $pageRepository)
  80.     {
  81.         $page $pageRepository->findOneBy(['slug' => $slug]);
  82.         $editable true;
  83.         $preview false;
  84.         $dalma false;
  85.         return $this->render('@web/page/template-sherep.html.twig',[
  86.             'page'=>$page,
  87.             'dalma'=>$dalma,
  88.             'editable' => $editable,
  89.             'preview' => $preview
  90.         ]);
  91.     }
  92.     #[Route('/birthday/{slug}/{_locale}'name'page_birthday_edit',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  93.     public function pageBirthdayEdit(string $slug,PageRepository  $pageRepository)
  94.     {
  95.         $page $pageRepository->findOneBy(['slug' => $slug]);
  96.         $editable true;
  97.         $preview false;
  98.         $dalma false;
  99.         return $this->render('@web/page/template-birthday.html.twig',[
  100.             'page'=>$page,
  101.             'image'=>null,
  102.             'dalma'=>$dalma,
  103.             'editable' => $editable,
  104.             'preview' => $preview
  105.         ]);
  106.     }
  107.     #[Route('/seassons/{slug}/{id}/view/{_locale}'name'page_birthday_edit',requirements: ['_locale' => 'en|ru|hy|es|it|fr|el|ua|ka|de'], defaults: ['_locale' => 'ru'])]
  108.     public function pageSeassons(string $slug,int $id,PageRepository  $pageRepository)
  109.     {
  110.         $page $pageRepository->findOneBy(['slug' => $slug]);
  111.         $editable false;
  112.         $preview false;
  113.         $letter $this->entityManager->getRepository(Letter::class)->findOneBy(['externalId' => (string)$id]);
  114.         $dalma false;
  115.         return $this->render('@web/page/template-christmas.html.twig',[
  116.             'page'=>$page,
  117.             'image'=>null,
  118.             'letter'=>$letter,
  119.             'dalma'=>$dalma,
  120.             'editable' => false,
  121.             'viewImage' => false,
  122.             'preview' => $preview
  123.         ]);
  124.     }
  125.     #[Route('/baptism/{slug}/{_locale}'name'page_baptism_edit',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  126.     public function baptismEdit(string $slug,PageRepository  $pageRepository)
  127.     {
  128.         $page $pageRepository->findOneBy(['slug' => $slug]);
  129.         $editable true;
  130.         $preview false;
  131.         return $this->render('@web/page/template-baptism.html.twig',[
  132.             'page'=>$page,
  133.             'editable' => $editable,
  134.             'preview' => $preview
  135.         ]);
  136.     }
  137.     #[Route('/{slug}/view/{_locale}'name'page_view',requirements: ['_locale' => 'en|ru|hy|ka|uk'], defaults: ['_locale' => 'ru'])]
  138.     public function pageView(string $slug,PageRepository  $pageRepository)
  139.     {
  140.         $page $pageRepository->findOneBy(['slug' => $slug]);
  141.         $editable false;
  142.         $preview false;
  143.         return $this->render('@web/page/template.html.twig',[
  144.             'page'=>$page,
  145.             'editable' => $editable,
  146.             'preview' => $preview
  147.         ]);
  148.     }
  149.     #[Route('/dalma/{slug}/view/{_locale}'name'page_dalma_view',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  150.     public function pageDalmaView(string $slug,PageRepository  $pageRepository)
  151.     {
  152.         $page $pageRepository->findOneBy(['slug' => $slug]);
  153.         $editable false;
  154.         $preview false;
  155.         return $this->render('@web/page/template-dalma.html.twig',[
  156.             'page'=>$page,
  157.             'editable' => $editable,
  158.             'preview' => $preview
  159.         ]);
  160.     }
  161.     #[Route('/yeremyan/{slug}/view/{_locale}'name'page_yeremyan_view',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  162.     public function pageYeremyanView(string $slug,PageRepository  $pageRepository)
  163.     {
  164.         $page $pageRepository->findOneBy(['slug' => $slug]);
  165.         $editable false;
  166.         $preview false;
  167.         return $this->render('@web/page/template-sherep.html.twig',[
  168.             'page'=>$page,
  169.             'editable' => $editable,
  170.             'preview' => $preview
  171.         ]);
  172.     }
  173.     #[Route('/birthday/{slug}/view/{_locale}'name'page_birthday_view',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  174.     public function pageBirthdayView(string $slug,PageRepository  $pageRepository)
  175.     {
  176.         $page $pageRepository->findOneBy(['slug' => $slug]);
  177.         $editable false;
  178.         $preview false;
  179.         return $this->render('@web/page/template-birthday.html.twig',[
  180.             'page'=>$page,
  181.             'editable' => $editable,
  182.             'preview' => $preview
  183.         ]);
  184.     }
  185.     #[Route('/{slug}/preview/{_locale}'name'page_preview',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  186.     public function pagePreview(string $slug,PageRepository  $pageRepository)
  187.     {
  188.         $page $pageRepository->findOneBy(['slug' => $slug]);
  189.         $editable false;
  190.         $preview true;
  191.         return $this->render('@web/page/template.html.twig',[
  192.             'page'=>$page,
  193.             'editable' => $editable,
  194.             'preview' => $preview
  195.         ]);
  196.     }
  197.     #[Route('/baptism/{slug}/view/{_locale}'name'baptism_view',requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'ru'])]
  198.     public function baptismView(string $slug,PageRepository  $pageRepository)
  199.     {
  200.         $page $pageRepository->findOneBy(['slug' => $slug]);
  201.         $editable false;
  202.         return $this->render('@web/page/template-baptism.html.twig',[
  203.             'page'=>$page,
  204.             'editable' => $editable
  205.         ]);
  206.     }
  207.     #[Route('/save/{_locale}/{id}'name'app_page_save'requirements: ['_locale' => 'en|ru|hy|es|it|fr|el|ua|ka|de|uk'], defaults: ['_locale' => 'ru'], methods: ['POST'])]
  208.     public function save(Page $pageRequest $requestPageService $pageService): Response
  209.     {
  210.         $local $request->getLocale();
  211.         $transRepo $this->entityManager->getRepository(Translation::class);
  212.         $data json_decode($request->getContent(), true);
  213.         if (isset($data['removeImage'])){
  214.             $method 'set' ucfirst($data['field']);
  215.             if (method_exists($page$method)) {
  216.                 $page->$method(null);
  217.             }
  218.         }else{
  219.             $page->setTranslatableLocale($local);
  220.             $transRepo->translate($page,$data['field'],$local$data['value']);
  221.         }
  222.         $getter $pageService->generateGetter($data['field']);
  223.         $this->entityManager->flush();
  224.         $returnData =[
  225.             'field'=>$data['field'],
  226.             'value'=>$page->$getter($data['field'])
  227.         ];
  228.         if (isset($data['removeImage'])){
  229.             $returnData['removeImage'] = true;
  230.         };
  231.         return new JsonResponse($returnData);
  232.     }
  233.     #[Route('/list'name'app_page_list'methods: ['GET'])]
  234.     public function delete(Request $requestPageRepository $pageRepositoryEntityManagerInterface $entityManager): Response
  235.     {
  236.         $templates $pageRepository->findAll();
  237.         return $this->render('@web/page/templates-list.html.twig',[
  238.             'templates'=>$templates
  239.         ]);
  240.     }
  241. }