src/Controller/FrontendController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Document;
  4. use App\Entity\Evenement;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use App\Entity\Groupe;
  10. use App\Entity\sletter;
  11. use App\Entity\Ptf;
  12. use App\Entity\Pays;
  13. use App\Entity\Troika;
  14. use App\Entity\Photo;
  15. use App\Entity\TypeEvenement;
  16. use App\Entity\User;
  17. use App\Service\AdminService;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  20. use App\Service\MailerService;
  21. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  22. class FrontendController extends AbstractController
  23. {
  24.     #[Route('/'name'index')]
  25.     public function index(ManagerRegistry $doctrine): Response
  26.     {
  27.         $groupes $doctrine->getRepository(Groupe::class)->findAll();
  28.         $ptfs $doctrine->getRepository(Ptf::class)->findAll();
  29.         $pays $doctrine->getRepository(Pays::class)->findAll();
  30.         $unes $doctrine->getRepository(Evenement::class)->findBy(['une'=>true], ['date' => 'DESC''created_at' => 'DESC'], 3);
  31.         $photos $doctrine->getRepository(Photo::class)->findAll();
  32.         shuffle($ptfs);
  33.         shuffle($pays);
  34.         shuffle($photos);
  35.         shuffle($unes);
  36.         $evenements $doctrine->getRepository(Evenement::class)->findBy([], ['id' => 'DESC'], 3);
  37.         
  38.         return $this->render('frontend/index.html.twig', [
  39.             'groupes' => $groupes,  'ptfs' => $ptfs'pays' => $pays'evenements' => $evenements'photos' => $photos'unes' => $unes
  40.         ]);
  41.     }
  42.     #[Route('/cooperation/chefs-de-cooperation'name'cooperation.cdc')]
  43.     public function cdc(ManagerRegistry $doctrine): Response
  44.     {
  45.         $groups $doctrine->getRepository(Groupe::class)->findAll();
  46.         $troika $doctrine->getRepository(Troika::class)->findAll();
  47.         shuffle($groups);
  48.         shuffle($troika);
  49.         return $this->render('frontend/cdc.html.twig', [
  50.             'groups' => $groups'troika' => $troika,
  51.         ]);
  52.     }
  53.     #[Route('/cooperation/chefs-de-mission'name'cooperation.cdm')]
  54.     public function cdm(ManagerRegistry $doctrine): Response
  55.     {
  56.         $groups $doctrine->getRepository(Groupe::class)->findAll();
  57.         shuffle($groups);
  58.         return $this->render('frontend/cdm.html.twig', [
  59.             'groups' => $groups,
  60.         ]);
  61.     }
  62.     #[Route('/troika'name'troika')]
  63.     public function troika(ManagerRegistry $doctrine): Response
  64.     {
  65.         $ptfs[] = $doctrine->getRepository(Pays::class)->find(3);
  66.         $ptfs[] = $doctrine->getRepository(Pays::class)->find(5);
  67.         $ptfs[] = $doctrine->getRepository(Ptf::class)->find(6);
  68.         return $this->render('frontend/troika.html.twig', [
  69.             'ptfs' => $ptfs,
  70.         ]);
  71.     }
  72.     #[Route('/matrice-groupes-ptf'name'matrice')]
  73.     public function matrice(ManagerRegistry $doctrine): Response
  74.     {
  75.         return $this->render('frontend/matrice.html.twig', [
  76.         ]);
  77.     }
  78.     #[Route('/groupes-ptf'name'groupes')]
  79.     public function groups(ManagerRegistry $doctrine): Response
  80.     {
  81.         $groups $doctrine->getRepository(Groupe::class)->findBy([], ['nom' => 'ASC']);
  82.         return $this->render('frontend/groupes.html.twig', [
  83.             'groups' => $groups,
  84.         ]);
  85.     }
  86.     #[Route('/groupe-ptf/{id}'name'groupe'requirements: ['id'=>'.+'])]
  87.     public function group(ManagerRegistry $doctrineAdminService $adminService$id): Response
  88.     {
  89.         $id $id $adminService->decryptid($id) : $id;
  90.         if (!$id) return $this->redirectToRoute('index');
  91.         $groupe  $doctrine->getRepository(Groupe::class)->find($id);
  92.         $ptfs $groupe->getPtfs();
  93.         $chef=$groupe->getChef();
  94.         return $this->render('frontend/groupe.html.twig', [
  95.             'groupe' => $groupe,
  96.             'ptfs' => $ptfs,
  97.             'chef' => $chef,
  98.         ]);
  99.     }
  100.     #[Route('/ptfs/bilateraux'name'ptfs.bilateral')]
  101.     public function bilateral(ManagerRegistry $doctrine): Response
  102.     {
  103.         $pays $doctrine->getRepository(Pays::class)->findAll();
  104.         $others $doctrine->getRepository(Ptf::class)->findBy(['type'=>'BILATERAL']);
  105.         shuffle($pays);
  106.         shuffle($others);
  107.         return $this->render('frontend/bilateral.html.twig', [
  108.             'pays' => $pays,
  109.             'others' => $others,
  110.         ]);
  111.     }
  112.     #[Route('/ptfs/multilateraux'name'ptfs.multilateral')]
  113.     public function multilateral(ManagerRegistry $doctrine): Response
  114.     {
  115.         $multilateraux $doctrine->getRepository(Ptf::class)->findBy(['type'=>'MULTILATERAL']);
  116.         shuffle($multilateraux);
  117.         return $this->render('frontend/multilateral.html.twig', [
  118.             'multilateraux' => $multilateraux,
  119.         ]);
  120.     }
  121.     #[Route('/ptfs/ong-fondations'name'ptfs.ong')]
  122.     public function ong(ManagerRegistry $doctrine): Response
  123.     {
  124.         $ongs $doctrine->getRepository(Ptf::class)->findBy(['type'=>'ONG']);
  125.         shuffle($ongs);
  126.         return $this->render('frontend/ong.html.twig', [
  127.             'ongs' => $ongs,
  128.         ]);
  129.     }
  130.     #[Route('/actualites'name'actualites')]
  131.     public function s(ManagerRegistry $doctrine): Response
  132.     {
  133.         $types $doctrine->getRepository(TypeEvenement::class)->findAll();
  134.         $groupes $doctrine->getRepository(Groupe::class)->findAll();
  135.         $events $doctrine->getRepository(Evenement::class)->findAll();
  136.         return $this->render('frontend/news.html.twig', [
  137.             'types' => $types,
  138.             'groupes' => $groupes,
  139.             'events' => $events,
  140.         ]);
  141.     }
  142.     #[Route('/actualites/post/{id}'name'actualite'requirements: ['id' => '.+'])]
  143.     public function post(ManagerRegistry $doctrineRequest $requestAdminService $adminService,$id): Response
  144.     {
  145.         $id $id $adminService->decryptid($id) : $id;
  146.         if (!$id) return $this->redirect($request->headers->get('referer'));
  147.         $item  $doctrine->getRepository(Evenement::class)->find($id);
  148.         return $this->render('frontend/post.html.twig', [
  149.             'item' => $item,
  150.         ]);
  151.     }
  152.     #[Route('/cooperation/projets'name'projets')]
  153.     public function projets(): Response
  154.     {
  155.         return $this->render('frontend/projets.html.twig', [
  156.         ]);
  157.     }
  158.     
  159.     #[Route('/ressources'name'ressources')]
  160.     public function ressources(ManagerRegistry $doctrine): Response
  161.     {
  162.         
  163.         $ressources $doctrine->getRepository(Document::class)->getDocumentPublic();
  164.         return $this->render('frontend/ressources.html.twig', [
  165.             'ressources' => $ressources,
  166.         ]);
  167.     }
  168.     #[Route('/contact'name'contact')]
  169.     public function contact(): Response
  170.     {
  171.         return $this->render('frontend/contact.html.twig', [
  172.         ]);
  173.     }
  174.     #[Route('/cooperation/a-propos'name'about')]
  175.     public function cadre(): Response
  176.     {
  177.         return $this->render('frontend/about.html.twig', [
  178.         ]);
  179.     }
  180.     #[Route('/change-password/{id}'name'changepassword'requirements: ['id'=>'.+'])]
  181.     public function changepassword(ManagerRegistry $doctrineAdminService $adminService$id): Response
  182.     {
  183.         $id $id $adminService->decryptid($id) : $id;
  184.         $item  $doctrine->getRepository(User::class)->find($id);
  185.         return $this->render('admin/utilisateurs/change-password.html.twig', [
  186.             'item' => $item
  187.         ]);
  188.     }
  189.     #[Route('/postchangepwd'name'postchangepwd')]
  190.     public function postchangepwd(ManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherRequest $request): Response
  191.     {
  192.         if(empty($request->request->all())){
  193.             return $this->render('admin/utilisateurs/error-reset-password.html.twig', [
  194.             ]);
  195.         }else{
  196.             $id=$request->request->all()['id'];
  197.             $pwd=$request->request->all()['password'];
  198.             $pwd2=$request->request->all()['password2'];
  199.             $item  $doctrine->getRepository(User::class)->find($id);
  200.             if($item && $pwd==$pwd2){
  201.                 $hashedPassword $passwordHasher->hashPassword($item,$pwd);
  202.                 $item->setPassword($hashedPassword);
  203.                 $item->setPassword($hashedPassword);
  204.                 $item->setEnabled(true); 
  205.                 $item->setChangepwd(true);
  206.                 $item->setResetpwd(true); 
  207.                 $doctrine->getManager()->persist($item);
  208.                 $doctrine->getManager()->flush();
  209.                 return $this->redirectToRoute('app_login');
  210.             }else{
  211.                 return $this->redirectToRoute('postchangepwd');
  212.             }
  213.         }
  214.         
  215.     }
  216.     #[Route('/reset-password'name'resetpassword')]
  217.     public function resetpassword(): Response
  218.     {
  219.         return $this->render('admin/utilisateurs/reset-password.html.twig', [
  220.         ]);
  221.     }
  222.     #[Route('/confirm-reset'name'confirmreset')]
  223.     public function confirmreset(ManagerRegistry $doctrineRequest $requestMailerService $mailerAdminService $adminService): Response
  224.     {
  225.         $email $request->request->all()['email'];
  226.         $item  $doctrine->getRepository(User::class)->findBy(array('email' => $email),array(),,0);
  227.         if($item){
  228.         $item $item[0];
  229.         //Send Mail
  230.         $link $this->generateUrl(
  231.             'changepassword', [
  232.                 'id'=>$adminService->encryptid($item->getId())
  233.             ],
  234.             UrlGeneratorInterface::ABSOLUTE_URL
  235.         );
  236.         $content='
  237.         <h3>Coopération Bénin</h3>
  238.         <p>Votre mot de passe a été réinitialisé avec succès. Utilisez le lien suivant pour créer un nouveau mot de passe.</p>
  239.         <a href=" '.$link.' ">Réinitialiser votre mot de passe.</a>';
  240.         $mailer->sendEmail($email'Réinitialisation de mot de passe'$content);
  241.         $item->setResetpwd(false);
  242.         $doctrine->getManager()->persist($item);
  243.         $doctrine->getManager()->flush();
  244.         }
  245.         
  246.         return $this->render('admin/utilisateurs/confirm-reset.html.twig', [
  247.         ]);
  248.     }
  249.     #[Route('sletter/{id}'name'sletter'requirements: ['id'=>'.+'])]
  250.     public function sletter(ManagerRegistry $doctrineRequest $requestMailerService $mailerAdminService $adminService$id=0): Response
  251.     {
  252.         if($id==0){
  253.             $email=$request->request->all()['email'];
  254.             $item  =  sletter();
  255.             $item->setEmail($email);
  256.             $doctrine->getManager()->persist($item);
  257.             $doctrine->getManager()->flush();
  258.             
  259.             $link $this->generateUrl(
  260.                 'sletter', [
  261.                     'id'=>$adminService->encryptid($item->getId())
  262.                 ],
  263.                 UrlGeneratorInterface::ABSOLUTE_URL
  264.             );
  265.             
  266.             $content='
  267.             <h3>Coopération Bénin</h3>
  268.             <p>Vous avez demandé une une inscription à la sletter de la Coopération internationale au Bénin. Veuillez utiliser le lien suivant pour confirmer votre email.</p>
  269.             <a href=" '.$link.' ">Confirmez votre email.</a>';
  270.             $mailer->sendEmail($email'Confirmez votre email'$content);
  271.             $etat=false;
  272.         }else{
  273.             $id $id $adminService->decryptid($id) : $id;
  274.             $item  $doctrine->getRepository(sletter::class)->find($id);
  275.             $item->setConfirm(true);
  276.             $doctrine->getManager()->persist($item);
  277.             $doctrine->getManager()->flush();
  278.             $etat=false;
  279.         }
  280.         
  281.         return $this->render('frontendsletter.html.twig', [
  282.             'etat' => $etat
  283.         ]);
  284.         
  285.     }
  286. }