<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Twig\Environment;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\utils;
#[Route('/')]
class HomeController extends AbstractController
{
protected $doctrine;
public function __construct(Environment $twig)
{
$this->loader = $twig->getLoader();
}
/**
* @IsGranted("ROLE_USER")
*/
#[Route('/', name: 'app_home')]
public function index(Request $request, utils $utils): Response
{
return $this->redirectToRoute('courses_list', [], Response::HTTP_SEE_OTHER);
}
/**
* @IsGranted("ROLE_USER")
*/
#[Route('/courses/list', name: 'courses_list')]
public function coursesList(Request $request, utils $utils): Response
{
$defaultDbCourses = 'imt_intermeeting';
$defaultDomain = 'www.imfad.it';
$filtered = $request->get('filtered') ? true : false;
$cur_domain = $request->get('domain') ? $request->get('domain') : $defaultDomain;
//Mi collego al db default per prendere alcuni dati
$sqlD = '';
if ($filtered) {
$em = $utils->changeToDb($defaultDbCourses);
$conn = $em->getConnection();
$sqlD = 'SELECT db_name FROM domains WHERE domain = "'.$cur_domain.'"';
$stmt = $conn->prepare($sqlD);
$domain_data = $stmt->execute()->fetchAll()[0];
$dbCourses = $domain_data['db_name'];
} else {
$dbCourses = $defaultDbCourses;
}
$em = $utils->changeToDb($dbCourses);
$defaultYear = date("Y",strtotime("-1 year"));
$yearCourse = $request->get('year') ? $request->get('year') : $defaultYear;
$defaultEcm = 1;
$defaultNotEcm = 0;
$optEcm = $request->get('withEcm') ? $request->get('withEcm') : ($filtered ? 0 : $defaultEcm);
$optNotEcm = $request->get('withNotEcm') ? $request->get('withNotEcm') : ($filtered ? 0 : $defaultNotEcm);
$conn = $em->getConnection();
/**** QUERY COURSES ****/
$sql = 'SELECT c.*, YEAR(c.min_start) as year FROM course c'
. ' WHERE deleted_at IS NULL'
. ($yearCourse==-1 ? '': ' AND YEAR(min_start) = '.($yearCourse!='' ? $yearCourse : $defaultYear) );
if ($optEcm) {
if (!$optNotEcm) {
$sql.=''
. ' AND ecm = 1';
}
} else {
if ($optNotEcm) {
$sql.=''
. ' AND ecm = 0';
}
}
$sql.=''
. ' ORDER BY c.title';
$stmt = $conn->prepare($sql);
$courses = $stmt->execute()->fetchAll();
/**** fine QUERY COURSES */
$coursesByYear = [];
foreach($courses as $course) {
if (!array_key_exists($course['year'], $coursesByYear)) {
$coursesByYear[$course['year']] = [];
}
$coursesByYear[$course['year']][] = $course;
}
krsort($coursesByYear);
return $this->render('course/courses_list.html.twig', [
'coursesByYear' => $coursesByYear,
'year' => $yearCourse,
'domains' => $utils->getAllDomains(),
'dbCourses' => $dbCourses,
'curDomain' => $cur_domain,
'withEcm' => $optEcm,
'withNotEcm' => $optNotEcm,
'dbCourses' => $dbCourses,
'debugSQL' => $sqlD
]);
}
}