src/Controller/DefaultController.php line 62

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Component\Mime\Email;
  11. use Symfony\Component\Mime\Address;
  12. use OlaSoft\Common;
  13. use App\Entity\Subscribers;
  14. use App\Repository\StructuresRepository;
  15. use App\Entity\Services;
  16. use App\Entity\Articles;
  17. use App\Entity\ArticlesCategories;
  18. use App\Entity\Structures;
  19. use App\Entity\StructuresCategories;
  20. use App\Entity\Resources;
  21. use App\Entity\ResourcesCategories;
  22. use App\Entity\Pages;
  23. use App\Entity\Banners;
  24. use App\Entity\Videos;
  25. use App\Entity\Messages;
  26. use App\Form\MessagesType;
  27. use App\Form\SubscribersType;
  28. use App\Entity\ServicesCategories;
  29. use App\Entity\PartnersCategories;
  30. use App\Entity\MembersCategories;
  31. use App\Entity\Partners;
  32. use App\Entity\Professions;
  33. use App\Entity\Events;
  34. use App\Repository\ServicesRepository;
  35. use App\Repository\ProfessionsRepository;
  36. use App\Repository\EventsRepository;
  37. use App\Repository\MembersRepository;
  38. /**
  39.  * @Route("", priority=1)
  40.  */
  41. class DefaultController extends AbstractController
  42. {
  43.     public function landing()
  44.     {
  45.         return $this->render('Default/landing.html.twig',[]);
  46.     }
  47.     /**
  48.      * @Route("/home/")
  49.      */
  50.     public function home()
  51.     {
  52.         return $this->redirectToRoute('home');
  53.     }
  54.     /**
  55.      * @Route("/", name="home")
  56.      */
  57.     public function index()
  58.     {
  59.         $em $this->getDoctrine()->getManager();
  60.         $banner $em->getRepository(Banners::class)->findOneBy(['isEnabled'=>1], ['id'=>'desc']);
  61.         $articles $em->getRepository(Articles::class)->createQueryBuilder('a')
  62.             ->leftjoin('a.banner','b')
  63.             ->leftjoin('a.category','c')
  64.             ->leftjoin('a.type','t')
  65.             ->leftjoin('a.album','aa')
  66.             ->leftjoin('a.biblio','ab')
  67.             ->orderBy('a.date','DESC')
  68.             ->andWhere("a.date <= '".(new \DateTime())->format('Y-m-d H:i:s')."'")
  69.             ->andWhere('a.isEnabled = 1')
  70.             ->setMaxResults(3)
  71.             ->getQuery()
  72.             ->getResult();
  73.         $videos $em->getRepository(Videos::class)->createQueryBuilder('a')
  74.             ->leftjoin('a.banner','b')
  75.             ->orderBy('a.date','DESC')
  76.             ->andWhere("a.date <= '".(new \DateTime())->format('Y-m-d H:i:s')."'")
  77.             ->andWhere('a.isEnabled = 1')
  78.             ->setMaxResults(3)
  79.             ->getQuery()
  80.             ->getResult();
  81.         $partners $em->getRepository(Partners::class)->findBy(['isEnabled' => 1], ['id'=>'asc']);
  82.         $servicesCats $em->getRepository(ServicesCategories::class)->findBy([],['id'=>'asc']);
  83.         return $this->render('Default/index.html.twig',[
  84.             'banner' => $banner,
  85.             'articles' => $articles,
  86.             'videos' => $videos,
  87.             'partners' => $partners,
  88.             'servicesCats'=>$servicesCats,
  89.         ]);
  90.     }
  91.     /**
  92.      * @Route("/sitemap.xml", name="sitemap", defaults={"xml"=true, "_format"="xml"}, priority=1)
  93.      */
  94.     public function menu($activeMenu null$isFooter false$xml false)
  95.     {
  96.         $em $this->getDoctrine()->getManager();
  97.         $partnersCats $em->getRepository(PartnersCategories::class)->findBy(['isEnabled'=>true],['id'=>'asc']);
  98.         $articlesCats $em->getRepository(ArticlesCategories::class)->findBy([],['id'=>'asc']);
  99.         $servicesCats $em->getRepository(ServicesCategories::class)->findBy([],['id'=>'asc']);
  100.         $membersCats $em->getRepository(MembersCategories::class)->findBy([],['id'=>'asc']);
  101.         $services $em->getRepository(Services::class)->findBy(['isEnabled'=>true],['id'=>'asc']);
  102.         return $this->render($xml 'Default/sitemap.xml.twig' : ($isFooter 'Default/footer.html.twig' 'Default/menu.html.twig'),[
  103.             'partnersCats'=>$partnersCats,
  104.             'articlesCats'=>$articlesCats,
  105.             'servicesCats'=>$servicesCats,
  106.             'membersCats'=>$membersCats,
  107.             'activeMenu'=>$activeMenu,
  108.         ]);
  109.     }
  110.     /**
  111.      * @Route("/formations/", name="formations", priority=1)
  112.      * @Route("/formations/{slug}/", name="formations-cat", priority=1)
  113.      */
  114.     public function formations(ServicesRepository $reposServicesCategories $cat null)
  115.     {
  116.         if($cat)
  117.               $list $repos->findBy(['category'=>$cat->getId(), 'isEnabled'=>1]);
  118.         else
  119.               $list $repos->findBy(['isEnabled'=>1]);
  120.         return $this->render('Default/formations.html.twig',[
  121.             'list'=>$list,
  122.             'cat'=>$cat
  123.         ]);
  124.     }
  125.     /**
  126.      * @Route("/formation/{id}/{slug}/", name="service", requirements={"id": "\d+"})
  127.      * @Route("/formation/{id}/", requirements={"id": "\d+"})
  128.      */
  129.     public function formation(Services $item)
  130.     {
  131.         return $this->render('Default/formation.html.twig',[
  132.             'item'=>$item,
  133.         ]);
  134.     }
  135.     /**
  136.      * @Route("/professions/", name="professions", priority=1)
  137.      */
  138.     public function professions(ProfessionsRepository $repos)
  139.     {
  140.         $list $repos->findBy(['isEnabled'=>1],[]);
  141.         return $this->render('Default/professions.html.twig',['list'=>$list]);
  142.     }
  143.     /**
  144.      * @Route("/profession/{id}/{slug}/", name="profession", requirements={"id": "\d+"})
  145.      * @Route("/profession/{id}/", requirements={"id": "\d+"})
  146.      */
  147.     public function profession(Professions $item$slug null)
  148.     {
  149.         $em $this->getDoctrine()->getManager();
  150.         return $this->render('Default/profession.html.twig',[
  151.             'item'=>$item,
  152.         ]);
  153.     }
  154.     /**
  155.      * @Route("/evenements/", name="events", priority=1)
  156.      */
  157.     public function events(Request $request)
  158.     {
  159.         $em $this->getDoctrine()->getManager();
  160.         $offset $request->get('offset') ?? 1;
  161.         $offset--;
  162.         $keyword $request->get('q');
  163.         $limit 30;
  164.         $of $offset*$limit;
  165.         $query =  $em->getRepository(Events::class)->createQueryBuilder('p')->where('p.isEnabled = 1');
  166.         if($keyword)
  167.             $query $query->andWhere('(p.name like :k or p.description like :k or p.details like :k or p.place like :k )')
  168.                 ->setParameter('k','%'.$keyword.'%');
  169.         $list $query->select('p')
  170.             ->orderby('p.startDate','desc')
  171.             ->setMaxResults($limit)
  172.             ->setFirstResult($of)
  173.             ->getQuery()->getResult();
  174.         $count $query->select('count(p.id) as c')->getQuery()->getOneOrNullResult()['c'];
  175.         return $this->render('Default/events.html.twig',[
  176.             'list'=>$list,
  177.             'count'=>$count,
  178.             'table_limit'=>$limit,
  179.             'offset'=>$offset,
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("/evenement/{id}/{slug}/", name="event", requirements={"id": "\d+"})
  184.      * @Route("/evenement/{id}/", requirements={"id": "\d+"})
  185.      */
  186.     public function event(Events $item$slug null)
  187.     {
  188.         $em $this->getDoctrine()->getManager();
  189.         return $this->render('Default/event.html.twig',[
  190.             'item'=>$item,
  191.         ]);
  192.     }
  193.     /**
  194.      * @Route("/articles/", name="articles")
  195.      * @Route("/articles/{offset}/", name="articles-page", requirements={"offset": "\d+"})
  196.      * @Route("/articles/{cat}/", name="articles-cat")
  197.      * @Route("/articles/{cat}/{offset}/", name="articles-cat-page", requirements={"offset": "\d+"})
  198.      */
  199.     public function articles($offset 1$cat null)
  200.     {
  201.         $offset--;
  202.         $limit 30;
  203.         $of $offset*$limit;
  204.         $params = [];
  205.         $em $this->getDoctrine()->getManager();
  206.         $cat $cat $em->getRepository(ArticlesCategories::class)->findOneBySlug($cat) : null;
  207.         $list $em->getRepository(Articles::class)->createQueryBuilder('a')
  208.             ->leftjoin('a.banner','b')
  209.             ->leftjoin('a.category','c')
  210.             ->leftjoin('a.type','t')
  211.             ->leftjoin('a.album','aa')
  212.             ->leftjoin('a.biblio','ab')
  213.             ->orderBy('a.date','DESC')
  214.             ->andWhere("a.date <= '".(new \DateTime())->format('Y-m-d H:i:s')."'")
  215.             ->andWhere('a.isEnabled = 1')
  216.         ;
  217.         if($cat) {
  218.             $list $list->andWhere('c.id = '.$cat->getId());
  219.             $params['cat'] = $cat->getSlug();
  220.         }
  221.         $count $list->select('count(distinct(a.id))')->getQuery()->getResult()[0][1];
  222.         $list $list->select('a')
  223.             ->setMaxResults($limit)
  224.             ->setFirstResult($of)
  225.             ->getQuery()->getResult();
  226.         return $this->render('Default/articles.html.twig',[
  227.             'articles'=>$list,
  228.             'cat'=>$cat,
  229.             'count'=>$count,
  230.             'table_limit'=>$limit,
  231.             'offset'=>$offset,
  232.             'params'=>$params
  233.         ]);
  234.     }
  235.     /**
  236.      * @Route("/article/{id}/{slug}/", name="article", requirements={"id": "\d+"})
  237.      * @Route("/article/{id}/", requirements={"id": "\d+"})
  238.      */
  239.     public function article(Articles $article$slug null)
  240.     {
  241.         if($article->getURL())
  242.             return $this->redirect($article->getURL());
  243.         $em $this->getDoctrine()->getManager();
  244.         $list $em->getRepository(Articles::class)->createQueryBuilder('a')
  245.             ->leftjoin('a.banner','b')
  246.             ->leftjoin('a.category','c')
  247.             ->leftjoin('a.type','t')
  248.             ->leftjoin('a.album','aa')
  249.             ->leftjoin('a.biblio','ab')
  250.             ->orderBy('a.date','DESC')
  251.             ->andWhere('a.id <> '.$article->getId())
  252.             ->andWhere("a.date <= '".(new \DateTime())->format('Y-m-d H:i:s')."'")
  253.             ->andWhere('a.isEnabled = 1')
  254.             ->setMaxResults(6)
  255.             ->getQuery()
  256.             ->getResult();
  257.         return $this->render('Default/article.html.twig',[
  258.             'article'=>$article,
  259.             'list'=>$list,
  260.         ]);
  261.     }
  262.     /**
  263.      * @Route("/videos/", name="videos")
  264.      */
  265.     public function videos()
  266.     {
  267.         $em $this->getDoctrine()->getManager();
  268.         $videos $em->getRepository(Videos::class)->createQueryBuilder('a')
  269.             ->leftjoin('a.banner','b')
  270.             ->orderBy('a.date','DESC')
  271.             ->andWhere("a.date <= '".(new \DateTime())->format('Y-m-d H:i:s')."'")
  272.             ->andWhere('a.isEnabled = 1')
  273.             ->setMaxResults(30)
  274.             ->getQuery()
  275.             ->getResult();
  276.         return $this->render('Default/videos.html.twig',[
  277.             'videos'=>$videos
  278.         ]);
  279.     }
  280.     /**
  281.      * @Route("/video/{id}/", name="video", requirements={"id": "\d+"})
  282.      */
  283.     public function video(Videos $video)
  284.     {
  285.         return $this->render('Default/video.html.twig',[
  286.             'video'=>$video
  287.         ]);
  288.     }
  289.     /**
  290.      * @Route("/documents/", name="resources", priority=1)
  291.      * @Route("/documents/{slug}/", name="resources-cat")
  292.      */
  293.     public function resources(Request $requestResourcesCategories $cat null)
  294.     {
  295.         $keyword $request->get('q');
  296.         $offset $request->get('offset') ?? 1;
  297.         $offset--;
  298.         $limit 50;
  299.         $of $offset*$limit;
  300.         $em $this->getDoctrine()->getManager();
  301.         $query =  $em->getRepository(Resources::class)->createQueryBuilder('r')
  302.             ->leftjoin('r.category','c')
  303.             ->where('r.isEnabled = 1')
  304.             ->orderBy('r.date','desc');
  305.         if($cat$query $query->andWhere('c.id = '.$cat->getId())->addOrderBy('r.date','desc');
  306.         if($keyword)
  307.             $query $query->andWhere('(r.title like :k or r.description like :k or c.label like :k)')
  308.             ->setParameter('k','%'.$keyword.'%');
  309.         $count $query->select('count(r.id)')->getQuery()->getResult()[0][1];
  310.         $list $query->select('r')->setMaxResults($limit)->setFirstResult($of)->getQuery()->getResult();
  311.         return $this->render('Default/resources.html.twig',[
  312.             'cat'=>$cat,
  313.             'list'=>$list,
  314.             'count'=>$count,
  315.             'table_limit'=>$limit,
  316.             'offset'=>$offset,
  317.             'keyword'=>$keyword
  318.         ]);
  319.     }
  320.     /**
  321.      * @Route("/gouvernance/{slug}/", name="members", priority=1)
  322.      */
  323.     public function members(MembersCategories $catMembersRepository $repos)
  324.     {
  325.         $list $repos->findBy(['category'=>$cat->getId(), 'isEnabled'=>1],['position'=>'ASC']);
  326.         return $this->render('Default/members.html.twig',['cat'=>$cat'list'=>$list]);
  327.     }
  328.     /**
  329.      * @Route("/partenaires/", name="partners", defaults={"isEmbed"=false})
  330.      * @Route("/partenaires/{slug}/", name="partners-cat", defaults={"isEmbed"=false})
  331.      */
  332.     public function partners(PartnersCategories $cat null$isEmbed true)
  333.     {
  334.         $em $this->getDoctrine()->getManager();
  335.         $list $em->getRepository(Partners::class)->createQueryBuilder('p')
  336.             ->andWhere('p.isEnabled = 1');
  337.         if($cat$list $list->andWhere('p.category = '.$cat->getId());
  338.         $list $list->getQuery()->getResult();
  339.         return $this->render($isEmbed 'Default/partners-list.html.twig' 'Default/partners.html.twig',[
  340.             'list'=>$list,
  341.             'cat'=>$cat,
  342.         ]);
  343.     }
  344. }