<?php
namespace App\Controller;
use App\Entity\Applicant;
use App\Entity\Course;
use App\Entity\CourseRegistrationRequest;
use App\Entity\CourseReview;
use App\Entity\CourseTopic;
use App\Entity\Organizer;
use App\Form\CourseRegistrationRequestType;
use App\Form\CourseReviewType;
use App\Form\CourseType;
use App\Repository\CourseRepository;
use App\Util\ApplicantUtil;
use App\Util\Course\CourseCompareUtil;
use App\Util\CourseUtil;
use App\Util\OrganizerUtil;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/kurzy/porovnani")
*/
class CourseCompareController extends AbstractController
{
/**
* @var CourseCompareUtil
*/
private $compareUtil;
/**
* @var CourseUtil
*/
private $courseUtil;
public function __construct(CourseCompareUtil $compareUtil, CourseUtil $courseUtil)
{
$this->compareUtil = $compareUtil;
$this->courseUtil = $courseUtil;
}
/**
* @Route("/odebrat/{id}", name="compare_remove", methods={"GET"})
*/
public function remove($id, Request $request): Response
{
$course = $this->courseUtil->getCourseById($id);
if (!$course instanceof Course) {
$this->addFlash('notice', 'Kurz nebyl nalezen');
$this->redirectToRoute('homepage');
}
$this->compareUtil->removeCourseFromCompare($course);
$this->addFlash('success', 'Kurz byl odebrán z porovnání');
// $this->addFlash() is equivalent to $request->getSession()->getFlashBag()->add()
return $this->redirectToRoute('course_show', ['id' =>$course->getId()]);
}
/**
* @Route("/", name="compare_list", methods={"GET"})
*/
public function list(): Response
{
return $this->render('course/compare.html.twig', [
'courses' => $this->compareUtil->getCoursesToCompareList()
]);
}
/**
* @Route("/pridat/{id}", name="compare_add", methods={"GET"})
*/
public function add($id, Request $request): Response
{
$course = $this->courseUtil->getCourseById($id);
if (!$course instanceof Course) {
$this->addFlash('notice', 'Kurz nebyl nalezen');
$this->redirectToRoute('homepage');
}
$this->compareUtil->addCourseToCompare($course);
$this->addFlash('success', 'Kurz byl přidán k porovnání');
// $this->addFlash() is equivalent to $request->getSession()->getFlashBag()->add()
return $this->redirectToRoute('course_show', ['id' =>$course->getId()]);
}
}