src/Controller/HomeController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Twig\Environment;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use App\Service\utils;
  12. #[Route('/')]
  13. class HomeController extends AbstractController
  14. {
  15.     protected $doctrine;
  16.     public function __construct(Environment $twig)
  17.     {
  18.         $this->loader $twig->getLoader();
  19.     }
  20.     /**
  21.      * @IsGranted("ROLE_USER")
  22.      */
  23.     #[Route('/'name'app_home')]
  24.     public function index(Request $requestutils $utils): Response
  25.     {
  26.         return $this->redirectToRoute('courses_list', [], Response::HTTP_SEE_OTHER);   
  27.     }    
  28.     
  29.     /**
  30.      * @IsGranted("ROLE_USER")
  31.      */
  32.     #[Route('/courses/list'name'courses_list')]
  33.     public function coursesList(Request $requestutils $utils): Response
  34.     {        
  35.         $defaultDbCourses 'imt_intermeeting';
  36.         $defaultDomain 'www.imfad.it';
  37.         $filtered $request->get('filtered') ? true false;
  38.         $cur_domain $request->get('domain') ? $request->get('domain') : $defaultDomain;
  39.         
  40.         //Mi collego al db default per prendere alcuni dati
  41.         $sqlD '';
  42.         if ($filtered) {
  43.             $em $utils->changeToDb($defaultDbCourses);
  44.             $conn $em->getConnection();
  45.             $sqlD 'SELECT db_name FROM domains WHERE domain = "'.$cur_domain.'"';        
  46.             $stmt $conn->prepare($sqlD);        
  47.             $domain_data $stmt->execute()->fetchAll()[0];
  48.         
  49.             $dbCourses $domain_data['db_name'];
  50.         } else {
  51.             $dbCourses $defaultDbCourses;
  52.         }
  53.         
  54.         $em $utils->changeToDb($dbCourses);            
  55.         
  56.         $defaultYear date("Y",strtotime("-1 year"));
  57.         $yearCourse $request->get('year') ? $request->get('year') : $defaultYear;
  58.         
  59.         $defaultEcm 1;
  60.         $defaultNotEcm 0;
  61.         $optEcm $request->get('withEcm') ? $request->get('withEcm') : ($filtered $defaultEcm);        
  62.         $optNotEcm $request->get('withNotEcm') ? $request->get('withNotEcm') : ($filtered $defaultNotEcm);        
  63.         
  64.         $conn $em->getConnection();
  65.         /**** QUERY COURSES ****/
  66.         $sql 'SELECT c.*, YEAR(c.min_start) as year FROM course c'
  67.                 ' WHERE deleted_at IS NULL'
  68.                 . ($yearCourse==-''' AND YEAR(min_start) = '.($yearCourse!='' $yearCourse $defaultYear) );
  69.         if ($optEcm) {
  70.             if (!$optNotEcm) {
  71.                 $sql.=''
  72.                 ' AND ecm = 1';
  73.             }
  74.         } else {
  75.             if ($optNotEcm) {
  76.                 $sql.=''
  77.                 ' AND ecm = 0';
  78.             }            
  79.         }
  80.         $sql.=''
  81.             ' ORDER BY c.title';
  82.         $stmt $conn->prepare($sql);        
  83.         $courses $stmt->execute()->fetchAll();
  84.         /**** fine QUERY COURSES */
  85.         
  86.         $coursesByYear = [];
  87.         foreach($courses as $course) {
  88.             if (!array_key_exists($course['year'], $coursesByYear)) {
  89.                 $coursesByYear[$course['year']] = [];
  90.             }            
  91.             $coursesByYear[$course['year']][] = $course;
  92.         }
  93.         krsort($coursesByYear);
  94.                 
  95.         return $this->render('course/courses_list.html.twig', [
  96.             'coursesByYear' => $coursesByYear,
  97.             'year' => $yearCourse,
  98.             'domains' => $utils->getAllDomains(),
  99.             'dbCourses' => $dbCourses,
  100.             'curDomain' => $cur_domain,
  101.             'withEcm' => $optEcm,
  102.             'withNotEcm' => $optNotEcm,
  103.             'dbCourses' => $dbCourses,
  104.             'debugSQL' => $sqlD
  105.         ]);
  106.     }
  107. }