src/Controller/DefaultController.php line 104

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contact;
  4. use App\Entity\Formation\Timetable;
  5. use App\Entity\User;
  6. use App\Form\ContactType;
  7. use App\Form\Tutoring\CoursesType;
  8. use App\Repository\ContactRepository;
  9. use App\Repository\Formation\ActivityRepository;
  10. use App\Repository\Formation\CategoryRepository;
  11. use App\Repository\NewsRepository;
  12. use App\Repository\Tutoring\StudentRepository;
  13. use App\Repository\Tutoring\SubjectRepository;
  14. use App\Entity\Tutoring\Student;
  15. use App\Form\Tutoring\StudentType;
  16. use App\Entity\Tutoring\Course;
  17. use App\Repository\UserRepository;
  18. use App\Service\PrintLogService;
  19. use App\Service\SchoolyearService;
  20. use DateTime;
  21. use Doctrine\Common\Collections\ArrayCollection;
  22. use Ensepar\Html2pdfBundle\Factory\Html2pdfFactory;
  23. use Exception;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\HttpFoundation\JsonResponse;
  26. use Symfony\Component\HttpFoundation\Request;
  27. use Symfony\Component\HttpFoundation\Response;
  28. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. use Symfony\Component\Yaml\Yaml;
  31. class DefaultController extends AbstractController
  32. {
  33.     Public function __construct(){}
  34.     #[Route(path'/maintenance'name'hs_public_maintenance'options: ['expose' => true])]
  35.     public function maintenanceAction()
  36.     {
  37.         return $this->render('default/maintenance.html.twig');
  38.     }
  39.     #[Route(path'/'name'hs_public_index'options: ['expose' => true])]
  40.     public function indexAction(
  41.         StudentRepository $studentRepository,
  42.         ActivityRepository $activiteRepository,
  43.         NewsRepository $newsRepository,
  44.         CategoryRepository $categoryRepository,
  45.         Request $request)
  46.     {
  47.         $news=$newsRepository->findBy(['published'=>true'featured'=>true], ['createAt' => 'DESC'], 3);
  48.         $categories $categoryRepository->findBy(['published'=>true]);
  49.         $featuredActivities=[];
  50.         foreach ($categories as $category) {
  51.             $activites=$category->getLatestFeaturedActivities(4);
  52.             if (!$activites->isEmpty()) {
  53.                 $featuredActivities[$category->getId()]=[
  54.                     'category'=>$category,
  55.                     'activites' => $activites
  56.                 ];}
  57.         }
  58.         return $this->render('default/index.html.twig', ['categories'=>$categories'news'=>$news'featuredActivities'=>$featuredActivities'current'=>'home']);
  59.     }
  60.     #[Route(path'/about-us'name'hs_public_about'options: ['expose' => true])]
  61.     public function aboutAction()
  62.     {
  63.         return $this->render('default/about.html.twig', ['current'=>'about']);
  64.     }
  65.     #[Route(path'/contact'name'hs_public_contact'options: ['expose' => true])]
  66.     public function contactAction(Request $requestContactRepository $contactRepository)
  67.     {
  68.         $contact = new Contact();
  69.         $form $this->createForm(ContactType::class, $contact);
  70.         $form->handleRequest($request);
  71.         if ($form->isSubmitted() && $form->isValid()) {
  72.             $contactRepository->save($contacttrue);
  73.             $this->addFlash('success''Votre message a bien été envoyé');
  74.             return $this->redirectToRoute('hs_public_index', [], Response::HTTP_SEE_OTHER);
  75.         }
  76.         return $this->renderForm('default/contact.html.twig', [
  77.             'contact' => $contact,
  78.             'form' => $form,
  79.             'current'=>'contact'
  80.         ]);
  81.     }
  82.     #[Route(path'/contact-ajax'name'hs_public_contact_ajax'options: ['expose' => true])]
  83.     public function contactAjaxAction(Request $requestContactRepository $contactRepository)
  84.     {
  85.         $nom=$request->request->get("nom");
  86.         $phone=$request->request->get("phone");
  87.         $contact=new Contact();
  88.         $contact->setType('call_me');
  89.         $contact->setDocs('Appelez moi s\'il vous plaît');
  90.         $contact->setName($nom);
  91.         $contact->setPhone($phone);
  92.         $contactRepository->save($contacttrue);
  93.         $message="<p class=\"introduction\">";
  94.         $message.="Merci ".$contact->getName()."</p>";
  95.         $message.="<p>Votre message a bien été envoyé. Nous prendrons contact avec vous dans les plus brefs délais.</p>";
  96.         return new Response($message);
  97.     }
  98.     public function menuAction($currentCategoryRepository $rep_category)
  99.     {
  100.         $categorys $rep_category->findBy(['published' => true]);
  101.         $cats = [];
  102.         foreach ($categorys as $category) {
  103.             $valide false;
  104.             if (!$category->getActivites()->isEmpty()) {
  105.                 foreach ($category->getActivites() as $activite) {
  106.                     if ($activite->isPublished()) {
  107.                         $valide true;
  108.                     }
  109.                 }
  110.             }
  111.             if ($valide) {
  112.                 $cats[] = $category;
  113.             }
  114.         }
  115.         return $this->render(
  116.             'default/menu.html.twig',
  117.             array(
  118.                 'categorys' => $cats,
  119.                 'current' => $current
  120.             )
  121.         );
  122.     }
  123.     public function footerLinkAction(CategoryRepository $rep_category)
  124.     {
  125.         $categorys $rep_category->findBy(['published' => true]);
  126.         $cats = [];
  127.         foreach ($categorys as $category) {
  128.             $valide false;
  129.             if (!$category->getActivites()->isEmpty()) {
  130.                 /** @var Activite $activite */
  131.                 foreach ($category->getActivites() as $activite) {
  132.                     if ($activite->isPublished()) {
  133.                         $valide true;
  134.                     }
  135.                 }
  136.             }
  137.             if ($valide) {
  138.                 $cats[] = $category;
  139.             }
  140.         }
  141.         return $this->render(
  142.             'default/footer_link.html.twig',
  143.             array(
  144.                 'categorys' => $cats,
  145.             )
  146.         );
  147.     }
  148.     #[Route(path'/emploi-du-temps/{slug}.pdf'name'hs_public_schedule'options: ['expose' => true])]
  149.     public function scheduleAction(Timetable $scheduleHtml2pdfFactory $html2pdfFactory)
  150.     {
  151.         $jours= ["Dimanche""Lundi""Mardi""Mercredi""Jeudi""Vendredi""Samedi"];
  152.         $html $this->renderView('Admin/Training/Schedule/pdf.html.twig', ['groupe'=>$schedule->getGroupe(), 'schedule'=>$schedule'days'=>$jours]);
  153.         $html2pdf $html2pdfFactory->create('L''A4''fr'true'UTF-8');
  154.         $html2pdf->pdf->SetDisplayMode('real');
  155.         $html2pdf->pdf->SetTitle('Emploi du temps de '.$schedule->getGroupe());
  156.         $html2pdf->writeHTML($html);
  157.         return new Response($html2pdf->Output('emploi_du_temps_'.$schedule->getId().'.pdf'), 200, ['Content-Type' => 'application/pdf']);
  158.     }
  159.     #[Route('/install'name'hs_training_center_system_install'options: ['expose' => true], defaults: ['role' => 'all'])]
  160.     public function systemInstall(Request $requestUserRepository $userRepositoryUserPasswordHasherInterface $passwordEncoder): Response
  161.     {
  162.         $user=new User();
  163.         $user->addRole('ROLE_WEBMASTER');
  164.         $user->setUsername('admin@hssolutions.ma');
  165.         $user->setEmail('admin@hssolutions.ma');
  166.         $user->setName('DADA Abdelouahab');
  167.         $user->setFirstName('Abdelouahab');
  168.         $user->setLastName('DADA');
  169.         $user->setPublished(true);
  170.         $user->setPassword(
  171.             $passwordEncoder->hashPassword(
  172.                 $user,
  173.                 'Admin@0824'
  174.             )
  175.         );
  176.         $userRepository->save($usertrue);
  177.         return $this->redirectToRoute('hs_training_center_dashboard');
  178.     }
  179. }