src/Controller/FrontController.php line 187

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Projet;
  4. use App\Form\SearchProjetArType;
  5. use App\Form\SearchProjetType;
  6. use App\Repository\CommuneRepository;
  7. use App\Repository\PartenaireRepository;
  8. use App\Repository\ProjetRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use App\Repository\GouvernoratRepository;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. class FrontController extends AbstractController
  16. {
  17.     #[Route(path'/'name'app_front_404', )]
  18.     public function front_404(): Response
  19.     {
  20.         return $this->redirectToRoute('app_front', ['_locale' => 'ar']);
  21.     }
  22.     #[Route(path'/{_locale}/'name'app_front'requirements: ['_locale' => 'fr|ar'])]
  23.     public function front(
  24.         Request                $request,
  25.         EntityManagerInterface $entityManager,
  26.         PartenaireRepository   $partenaireRepository,
  27.         GouvernoratRepository  $gouvernoratRepository,
  28.         ProjetRepository       $projetRepository,
  29.         CommuneRepository      $communeRepository
  30.     ): Response {
  31.         $stats = [];
  32.         $tab_gov = [];
  33.         $locale $request->getLocale();
  34.         $stats['NbrPartenaire']['valeur'][] = 0;
  35.         $stats['NbrPartenaire']['label'][] = '';
  36.         $stats['SumPartenaire']['valeur'][] = 0;
  37.         $stats['SumPartenaire']['label'][] = '';
  38.         $stats['SIntervention']['valeur'][] = 0;
  39.         $stats['SIntervention']['label'][] = '';
  40.         $stats['Status']['valeur'][] = 0;
  41.         $stats['Status']['label'][] = '';
  42.         $indicateurs['reg_local'] = 0;
  43.         $indicateurs['central'] = 0;
  44.         $indicateurs['regional'] = 0;
  45.         $indicateurs['local'] = 0;
  46.         $indicateurs['centrals'] = 0;
  47.         $gouvs $gouvernoratRepository->getGouvernorat();
  48.         $projetAlaUne $projetRepository->findBy(['isAlaUne' => true], ['id' => 'DESC'], 5);
  49.         $partenaires $partenaireRepository->findBy([], ['id' => 'DESC'], 20);
  50.         $resultTunis $communeRepository->findCommuneByGovCode('tn-tu');
  51.         $NbrPartenaire $projetRepository->chartNbrPartenaireProjets();
  52.         $SumPartenaire $projetRepository->chartSumPartenaireProjets();
  53.         $Status $projetRepository->chartStatusProjets();
  54.         $SIntervention $projetRepository->chartSInterventionProjets();
  55.         $indicateurs['reg_local'] = $projetRepository->findNbrProjetRegionalLocal();
  56.         $indicateurs['central'] = $projetRepository->findNbrProjetCentral();
  57.         $indicateurs['regional'] = $projetRepository->findNbrProjetRegional();
  58.         $indicateurs['local'] = $projetRepository->findNbrProjetLocal();
  59.         $indicateurs['centrals'] = $projetRepository->findNbrProjetCentrals();
  60.         foreach ($NbrPartenaire as $NbrPart) {
  61.             $stats['NbrPartenaire']['valeur'][] = $NbrPart['nbr'];
  62.             $stats['NbrPartenaire']['label'][] = $NbrPart['nom_fr'];
  63.         }
  64.         foreach ($SumPartenaire as $SumPart) {
  65.             $stats['SumPartenaire']['valeur'][] = $SumPart['nbr'];
  66.             $stats['SumPartenaire']['label'][] = $SumPart['nom_fr'];
  67.         }
  68.         foreach ($Status as $Stat) {
  69.             $stats['Status']['valeur'][] = $Stat['nbr'];
  70.             $stats['Status']['label'][] = $Stat['nom_fr'];
  71.         }
  72.         foreach ($SIntervention as $SInter) {
  73.             $stats['SIntervention']['valeur'][] = $SInter['nbr'];
  74.             $stats['SIntervention']['label'][] = $SInter['nom_fr'];
  75.         }
  76.         if ($locale == 'ar') {
  77.             $form $this->createForm(SearchProjetArType::class);
  78.         } else {
  79.             $form $this->createForm(SearchProjetType::class);
  80.         }
  81.         $form->handleRequest($request);
  82.         if (!empty($gouvs)) {
  83.             foreach ($gouvs as $gouv) {
  84.                 $array_commmune = [];
  85.                 $comms $communeRepository->findCommuneByGov($gouv $gouv['id'] : null);
  86.                 array_push($array_commmune$comms);
  87.                 $tab_gov[$gouv['nom_fr']]['communes'] = $array_commmune;
  88.                 $tab_gov[$gouv['nom_fr']]['code'] = $gouv['code'];
  89.                 $tab_gov[$gouv['nom_fr']]['ar'] = $gouv['nom_ar'];
  90.             }
  91.         }
  92.         return $this->render('__front__pages/index.html.twig', [
  93.             'projetsAlaUne' => $projetAlaUne,
  94.             'partenaires' => $partenaires,
  95.             'search_form' => $form->createView(),
  96.             'tab_gov' => $tab_gov,
  97.             'tab_tn' => $resultTunis,
  98.             'stats' => $stats,
  99.             'indicateurs' => $indicateurs,
  100.         ]);
  101.     }
  102.     #[Route('/{_locale}/mes-projets'name'mes_projets')]
  103.     public function mesProjet(Request $requestProjetRepository $projetRepository): Response
  104.     {
  105.         $projets = [];
  106.         $value null;
  107.         $locale $request->getLocale();
  108.         if ($locale == 'ar') {
  109.             $form $this->createForm(SearchProjetArType::class);
  110.         } else {
  111.             $form $this->createForm(SearchProjetType::class);
  112.         }
  113.         $form->handleRequest($request);
  114.         $projets $projetRepository->findProjetByCriteria($value$value$value$value$value$value$value);
  115.         if ($form->isSubmitted() && $form->isValid()) {
  116.             $results $request->request->all();
  117.             $date $results['search_projet']['date'] ?? null;
  118.             $budget $results['search_projet']['budget'] ?? null;
  119.             $programme $results['search_projet']['programme'] ?? null;
  120.             $communes $results['search_projet']['communes'] ?? null;
  121.             $envIntervention $results['search_projet']['envIntervention'] ?? null;
  122.             $modExecution $results['search_projet']['modExecution'] ?? null;
  123.             $gouveronarat $results['search_projet']['gouvernorat'] ?? null;
  124.             if (isset($results['submit']) && $results['submit'] == 1) {
  125.                 $projets $projetRepository->findProjetByCriteria($date$budget$programme$communes$envIntervention$modExecution$gouveronarat);
  126.             }
  127.         }
  128.         return $this->render('__front__pages/mes-projets.html.twig', [
  129.             'search_form' => $form->createView(),
  130.             'projets' => $projets,
  131.         ]);
  132.     }
  133.     #[Route('/{_locale}/detail-projet/{id}'name'detail_projet_front')]
  134.     public function detailProjetFront($idProjetRepository $projetRepository): Response
  135.     {
  136.         $projet $projetRepository->find($id $id null);
  137.         return $this->render('__front__pages/detail-projet.html.twig', [
  138.             "projet" => $projet,
  139.         ]);
  140.     }
  141.     #[Route('/{_locale}/mes-partenaires'name'mes_partenaires')]
  142.     public function mesPartenaires(Request $requestPartenaireRepository $partenaireRepository): Response
  143.     {
  144.         $partenaires $partenaireRepository->findAll();
  145.         return $this->render('__front__pages/mes-partenaires.html.twig', [
  146.             'partenaires' => $partenaires,
  147.         ]);
  148.     }
  149.     #[Route('/{_locale}/detail-partenaire/{id}'name'detail_partenaire_front')]
  150.     public function detailPartenaireFront($idPartenaireRepository $partenaireRepository): Response
  151.     {
  152.         $partenaire $partenaireRepository->find($id $id null);
  153.         return $this->render('__front__pages/detail-partenaire.html.twig', [
  154.             "partenaire" => $partenaire $partenaire null,
  155.         ]);
  156.     }
  157.     #[Route('/{_locale}/a-propos'name'a_propos_front')]
  158.     public function aProposFront(): Response
  159.     {
  160.         return $this->render('__front__pages/a-propos.html.twig', []);
  161.     }
  162.     #[Route('/{_locale}/contact'name'contact_front')]
  163.     public function contactFront(): Response
  164.     {
  165.         return $this->render('__front__pages/contact.html.twig', []);
  166.     }
  167.     /*
  168.         #[Route('/redirect_langue', name: 'redirect_front', requirements: ['_locale' => 'fr|ar'])]
  169.         public function redirectLangue(Request $request): Response
  170.         {
  171.             $this->get('session')->set('_locale', $locale);
  172.             $request->setLocale($locale);
  173.             $referer = $request->headers->get('referer');
  174.             return new RedirectResponse($referer);
  175.         }
  176.     */
  177. }