src/Controller/MenuController.php line 223

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Menu;
  4. use App\Form\MenuType;
  5. use App\Entity\Contact;
  6. use App\Form\ContactType;
  7. use App\Service\FileUploader;
  8. use App\Entity\PropertySearch;
  9. use App\Form\AgendaSearchType;
  10. use App\Form\PropertySearchType;
  11. use App\Repository\MenuRepository;
  12. use App\Repository\AgendaRepository;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Knp\Component\Pager\PaginatorInterface;
  15. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\Mailer\MailerInterface;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Validator\Validator\ValidatorInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. class MenuController extends AbstractController
  23. {
  24.     //private $em;
  25.     public function __construct(private EntityManagerInterface $em)
  26.     {
  27.        // $this->em = $em;
  28.     }
  29.     #[Route('/menu'name'app_menu_index'methods: ['GET''POST'])]
  30.     public function index(ValidatorInterface $validatorRequest $requestMenuRepository $menuRepository): Response
  31.     {
  32.         $submit $request->request->get('submit');
  33.         $errors null;
  34.         if ($submit) {
  35.             $menu = new Menu();
  36.             $menu->setTitle($request->request->get('libelle'));
  37.             $menu->setPath($request->request->get('path'));
  38.             $menu->setPosition($request->request->get('position'));
  39.             $errors $validator->validate($menu);
  40.             //dd($errors);
  41.             if (count($errors) > 0) {
  42.                 $errorsString = (string) $errors;
  43.             } else {
  44.                 $this->em->persist($menu);
  45.                 $this->em->flush();
  46.                 return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  47.             }
  48.         }
  49.         return $this->render('menu/index.html.twig', [
  50.             'menus' => $menuRepository->findBy(array(),
  51.             array('position'=>'ASC')),
  52.             'errors' => $errors,
  53.         ]);
  54.     }
  55.     #[Route('/{id}/desactive-status'name'app_menu_desactive_status'methods: ['GET','POST'])]
  56.     public function desactiveStatus(Menu $menuRequest $request)
  57.     {
  58.         
  59.         $menu->setStatut(false);
  60.         $this->em->persist($menu);
  61.         $this->em->flush();
  62.         return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  63.     }
  64.     #[Route('/{id}/active-status'name'app_menu_active_status'methods: ['GET','POST'])]
  65.     public function activeStatus(Menu $menuRequest $request)
  66.     {
  67.        
  68.        
  69.         $menu->setStatut(true);
  70.         $this->em->persist($menu);
  71.         $this->em->flush();
  72.         return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  73.     }
  74.     #[Route('/menu/new'name'app_menu_new'methods: ['GET''POST'])]
  75.     public function new(FileUploader $fileUploaderValidatorInterface $validatorRequest $requestMenuRepository $menuRepository): Response
  76.     {
  77.         $submit $request->request->get('submit');
  78.         $errors null;
  79.         if ($submit) {
  80.             //dd($request);
  81.             $menu = new Menu();
  82.             $menu->setTitle($request->request->get('title'));
  83.             $menu->setPath($request->request->get('path'));
  84.             $menu->setContent($request->request->get('observation'));
  85.             $menu->setPosition($request->request->get('position'));
  86.             $menu->setStatut($request->request->get('statut'));
  87.             $tab  null;
  88.             $tabvid  null;
  89.             if ($request->files->get('file')) {
  90.                 foreach ($request->files->get('file') as  $value) {
  91.                     $FileName $fileUploader->upload($value);
  92.                     $tab[] = $FileName;
  93.                 }
  94.                 $menu->setImage($tab);
  95.             }
  96.             if ($request->files->get('video')) {
  97.                 foreach ($request->files->get('video') as  $value) {
  98.                     $FileName $fileUploader->upload($value);
  99.                     $tabvid[] = $FileName;
  100.                 }
  101.                 $menu->setVideo($tabvid);
  102.             }
  103.             $errors $validator->validate($menu);
  104.             if (count($errors) > 0) {  
  105.                 $errorsString = (string) $errors;
  106.             }else {
  107.                 $this->em->persist($menu);
  108.                 $this->em->flush();
  109.                 return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  110.             }
  111.         }
  112.         return $this->renderForm('menu/new.html.twig', [
  113.             'menus' => $menuRepository->findAll(),
  114.             'errors' => $errors,
  115.         ]);
  116.     }
  117.     /* #[Route('menu/agenda', name: 'app_menu_agenda', methods: ['GET'])]
  118.     public function agenda(MenuRepository $menuRepository): Response
  119.     {
  120.         return $this->render('menu/agenda.html.twig', [
  121.             'menus' => $menuRepository->findAll(),
  122.             
  123.         ]);
  124.     } */
  125.     #[Route('/agenda'name'app_menu_agenda')]
  126.     public function agenda(MenuRepository $menuRepositoryAgendaRepository $agendaRepository,Request $requestPaginatorInterface $paginator): Response
  127.     {
  128.         $imagelink=null;
  129.         $page $request->query->get('page'1);
  130.         $limit 4// number of items per page
  131.         $offset = ($page 1) * $limit;
  132.         $agendas=$agendaRepository->findBy(['statut'=>1], [], $limit$offset);
  133.         
  134.          $totalItems $agendaRepository->count([]);
  135.          $totalPages ceil($totalItems $limit);
  136.         return $this->render('menu/agenda.html.twig', [
  137.             'menus' => $menuRepository->findBy(array(),
  138.             array('position'=>'ASC')),
  139.            'agenda'=>$agendas,
  140.            'totalItems' => $totalItems,
  141.             'totalPages' => $totalPages,
  142.             'currentPage' => $page,
  143.            'imagelink' => $imagelink
  144.         /* $propertySearch=new PropertySearch();
  145.         $agendas=$agendaRepository->findBy(['statut'=>1]);
  146.         $agenda=[];
  147.         $pagination=$paginator->paginate($agendas, $request->query->getInt('page',1),4);
  148.         
  149.         $form=$this->createForm(PropertySearchType::class, $propertySearch);
  150.         $form->handleRequest($request);
  151.         
  152.         if ($form->isSubmitted() && $form->isValid()){
  153.             $title=$propertySearch->getTitle();
  154.             if ($title!="")
  155.                 $agenda=$agendaRepository->findBy(['title'=>$title]);
  156.             else
  157.                 $pagination=$paginator->paginate($agendas, $request->query->getInt('page',1),4);
  158.         }
  159.         
  160.         return $this->render('menu/agenda.html.twig', [
  161.             'menus' => $menuRepository->findAll(),
  162.             'pagination'=>$pagination,
  163.             'form'=>$form->createView(),
  164.             'agenda'=>$agendas,
  165.             'imagelink'=>$imagelink */
  166.             
  167.         ]);
  168.     }
  169.     
  170.     
  171.     /* #[Route('/histoire', name: 'app_sousmenu2_histoire', methods: ['GET'])]
  172.     public function histoire(MenuRepository $menuRepository, SousmenuRepository $sousmenuRepository, Sousmenu2Repository $sousmenu2Repository): Response
  173.     {   
  174.         $sousmenu2=$sousmenu2Repository->findOneBy(['path' => 'app_sousmenu2_histoire']);
  175.         return $this->render('sousmenu2/histoire.html.twig', [
  176.             'menus'=>$menuRepository->findAll(),
  177.             'sousmenu'=>$sousmenuRepository->findAll(),
  178.             'sousmenu2'=>$sousmenu2,
  179.         ]);
  180.     } */
  181.     #[Route('/decouverte'name'app_menu_decouverte'methods: ['GET'])]
  182.     public function decouverte(MenuRepository $menuRepository): Response
  183.     {$imagelink=null;
  184.         return $this->render('menu/decouverte.html.twig', [
  185.             'menus' => $menuRepository->findBy(array(),
  186.             array('position'=>'ASC')),
  187.             'imagelink'=>$imagelink
  188.         ]);
  189.     }
  190.     #[Route('/boutique'name'app_menu_boutique'methods: ['GET'])]
  191.     public function boutique(MenuRepository $menuRepository): Response
  192.     {$imagelink=null;
  193.         return $this->render('menu/boutique.html.twig', [
  194.             'menus' => $menuRepository->findBy(array(),
  195.             array('position'=>'ASC')),
  196.             'imagelink'=>$imagelink
  197.         ]);
  198.     }
  199.     #[Route('/contact'name'app_menu_contact'methods: ['GET'])]
  200.     public function contact(MenuRepository $menuRepository): Response
  201.     {$imagelink=null;
  202.         return $this->render('menu/contact.html.twig', [
  203.             'menus' => $menuRepository->findBy(array(),
  204.             array('position'=>'ASC')),
  205.             'imagelink'=>$imagelink
  206.         ]);
  207.     } 
  208.    /*  #[Route('/contact', name: 'app_menu_contact')]
  209.     public function contact(MenuRepository $menuRepository, Request $request, MailerInterface $mailer, EntityManagerInterface $entityManagerInterface): Response
  210.     {
  211.         $contact=new Contact();
  212.         $form=$this->createForm(ContactType::class, $contact);
  213.         if($request->isMethod('POST')){
  214.             $form->handleRequest($request);
  215.             if($form->isSubmitted()&&$form->isValid()){
  216.                 $email=(new TemplatedEmail())
  217.                 ->from($contact->getEmail())
  218.                 ->to('christpardonne01@gmail.com')
  219.                 ->subject($contact->getObject())
  220.                 ->htmlTemplate('emails/email.html.twig')
  221.                 ->context([
  222.                     'name'=>$contact->getName(),
  223.                     'object'=>$contact->getObject(),
  224.                     'message'=>$contact->getMessage()
  225.                 ]);
  226.                 
  227.                 $entityManagerInterface->persist($contact);
  228.                 $entityManagerInterface->flush();
  229.                 $mailer->send($email);
  230.                 $this->addFlash('notice','Message envoyé');
  231.                 return $this->redirectToRoute('contact');
  232.             }
  233.         }
  234.         return $this->render('menu/contact.html.twig', [
  235.             'menus' => $menuRepository->findAll(),
  236.             'form'=>$form->createView()
  237.         ]);
  238.     } */
  239.     #[Route('/{id}/edit'name'app_menu_edit'methods: ['GET''POST'])]
  240.     public function edit(FileUploader $fileUploader,ValidatorInterface $validatorRequest $requestMenuRepository $menuRepositoryMenu $menu): Response
  241.     {
  242.         $submit $request->request->get('submit');
  243.         //dd($menu);
  244.     
  245.         //$oldphoto = $menu->getImage();
  246.         //$oldvideo = $menu->getVideo();
  247.         $errors null;
  248.         if ($submit) {
  249.             /* if($menu->getImage()!=null){
  250.                 $oldphoto = $menu->getImage();
  251.             }
  252.             if($menu->getVideo()!=null){
  253.                 $oldvideo = $menu->getVideo();
  254.             } */
  255.             $menu->setTitle($request->request->get('title'));
  256.             $menu->setPath($request->request->get('path'));
  257.             $menu->setContent($request->request->get('observation'));
  258.             $menu->setStatut($request->request->get('statut'));
  259.             $menu->setPosition($request->request->get('position'));
  260.             $tab  null;
  261.             $tabvid  null;
  262.             if ($request->files->get('file')) {
  263.                 // $FileName = $fileUploader->upload($request->files->get('file'));
  264.                 foreach ($request->files->get('file') as  $value) {
  265.                     $FileName $fileUploader->upload($value);
  266.                     $tab[] = $FileName;
  267.                 }
  268.                 $menu->setImage($tab);
  269.             } 
  270.             /* else {
  271.                 if ($menu->getImage()) {
  272.                     foreach ($oldphoto as  $value) {
  273.                     $tab[] = $value;
  274.                 }
  275.                  $menu->setImage($tab);
  276.                 }
  277.             } */
  278.             if ($request->files->get('video')) {
  279.                 foreach ($request->files->get('video') as  $value) {
  280.                     $FileName $fileUploader->upload($value);
  281.                     $tabvid[] = $FileName;
  282.                 }
  283.                 $menu->setVideo($tabvid);
  284.             }
  285.             /* else {
  286.                 if ($menu->getVideo()) {
  287.                     foreach ($oldvideo as  $value) {
  288.                     $tabvid[] = $value;
  289.                 }
  290.                  $menu->setVideo($tabvid);
  291.                 }
  292.             } */
  293.             $errors $validator->validate($menu);
  294.             if (count($errors) > 0) {
  295.                 $errorsString = (string) $errors;
  296.             } else {
  297.                 $this->em->persist($menu);
  298.                 $this->em->flush();
  299.                 return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  300.             }
  301.         }
  302.             return $this->renderForm('menu/edit.html.twig', [
  303.                 'idMenu'=>$menu->getId(),
  304.                 'menus' => $menuRepository->findAll(),
  305.                 'errors' => $errors,
  306.                 'menu'=>$menu,
  307.             ]);
  308.     }
  309.     #[Route('menu/supprimer/{id}'name'app_menu_delete'methods: ['POST'])]
  310.     public function delete(Request $requestMenu $menuMenuRepository $menuRepository): Response
  311.     {   
  312.         //dd( $menu);
  313.         if ($this->isCsrfTokenValid('delete'.$menu->getId(), $request->request->get('_token'))) {
  314.             $this->em->remove($menu);
  315.             $this->em->flush();
  316.         }
  317.         return $this->redirectToRoute('app_menu_index', [], Response::HTTP_SEE_OTHER);
  318.     }
  319. }