<?php
namespace App\Controller;
use App\Service\CourseService;
use App\Entity\Course;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
class CourseListController extends AbstractController
{
/**
* @Route("/kursy", name="app_course_list")
* @Cache(smaxage=3600)
*/
public function index(ManagerRegistry $doctrine): Response
{
return $this->render('course_list/index.html.twig');
}
/**
* @Route("/lista_kursow", name="course_list")
*/
public function courseList(ManagerRegistry $doctrine): Response
{
$courses = $doctrine->getRepository(Course::class)->findByCourseDetailHidden(0);
foreach ($courses as $course) {
$courseService = new CourseService($course);
$courseDetail = $course->getCourseDetail();
$courseList[] = [
'level' => $courseService->getLevel(),
'category' => $courseService->getCategory(),
'id' => $course->getId(),
'name' => $course->getName(),
'photo' => $courseDetail->getPhoto(),
'duration' => $courseDetail->getDuration(),
'lessons' => $courseDetail->getLessonsInCourse(),
'description' => $courseDetail->getDescription(),
'price' => [
'monthly' => $course->getCoursePrice()->getMonthly(),
'quarterly' => $course->getCoursePrice()->getQuarterly(),
'yearly' => $course->getCoursePrice()->getYearly(),
]
];
}
usort($courseList, function($a, $b) {
return strcmp($a['price']['monthly'], $b['price']['monthly']);
});
return $this->render('course_list/courses.html.twig', [
'courseList' => $courseList
])->setSharedMaxAge(3600);
}
/**
* @Route("/kursy-wakacyjne", name="app_vacation_course_list")
*/
public function vacationCourses(ManagerRegistry $doctrine): Response
{
$courses = $doctrine->getRepository(Course::class)->findByCourseGroupType('vacation');
foreach ($courses as $course) {
$courseService = new CourseService($course);
$courseDetail = $course->getCourseDetail();
$courseList[] = [
'level' => $courseService->getLevel(),
'category' => $courseService->getCategory(),
'id' => $course->getId(),
'name' => $course->getName(),
'photo' => $courseDetail->getPhoto(),
'duration' => $courseDetail->getDuration(),
'lessons' => $courseDetail->getLessonsInCourse(),
'description' => $courseDetail->getDescription(),
'price' => [
'monthly' => $course->getCoursePrice()->getMonthly(),
'quarterly' => $course->getCoursePrice()->getQuarterly(),
'yearly' => $course->getCoursePrice()->getYearly(),
]
];
}
usort($courseList, function($a, $b) {
return strcmp($a['price']['monthly'], $b['price']['monthly']);
});
return $this->render('course_list/index_vacation.html.twig', [
'courseList' => $courseList
]);
}
/**
* @Route("/darmowe-zajecia", name="app_free_class")
*/
public function freeclass(ManagerRegistry $doctrine): Response
{
$courses = $doctrine->getRepository(Course::class)->findAll();
foreach ($courses as $course) {
$courseService = new CourseService($course);
$courseDetail = $course->getCourseDetail();
if ($courseDetail->getFreeLesson())
{
$courseList[] = [
'level' => $courseService->getLevel(),
'category' => $courseService->getCategory(),
'id' => $course->getId(),
'name' => $course->getName(),
'photo' => $courseDetail->getPhoto(),
'duration' => $courseDetail->getDuration(),
'lessons' => $courseDetail->getLessonsInCourse(),
'description' => $courseDetail->getDescription(),
'price' => [
'monthly' => $course->getCoursePrice()->getMonthly(),
'quarterly' => $course->getCoursePrice()->getQuarterly(),
'yearly' => '0',
]
];
}
}
usort($courseList, function($a, $b) {
return strcmp($a['price']['monthly'], $b['price']['monthly']);
});
return $this->render('course_list/index.html.twig', [
'courseList' => $courseList,
'free_class' => true
]);
}
}