src/Controller/Main.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Course;
  4. use App\Form\AccessCodeActivationFormType;
  5. use App\Service\CourseService;
  6. use App\Service\CrawlModels;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class Main extends AbstractController
  13. {
  14. #[Route(path: '/', name: 'home')]
  15. public function show(CrawlModels $models, Request $request, EntityManagerInterface $em): Response
  16. {
  17. /** @var \App\Entity\AppUser $user */
  18. $user = $this->getUser();
  19. $auto_show_modal = $request->query->getBoolean('access_code_activation', false);
  20. $form = $this->createForm(AccessCodeActivationFormType::class);
  21. $form->handleRequest($request);
  22. if ($form->isSubmitted() && $form->isValid()) {
  23. $data = $form->getData();
  24. $access_code = $data['access_code'];
  25. $course = $em->getRepository(Course::class)->findOneBy(['access_code' => $access_code]);
  26. if ($course == null || $access_code == null) {
  27. $this->addFlash('danger', 'Invalid access code.');
  28. } elseif ($course->getUsers()->contains($user)) {
  29. $this->addFlash('success', 'You already have access to this course, check it out in the navigation.');
  30. } else {
  31. $this->addFlash('success', 'Successful code activation. Check out the unlocked course/ kit in the navigation.');
  32. $course->addUser($user);
  33. $em->flush();
  34. }
  35. return $this->redirectToRoute('home');
  36. }
  37. return $this->render('main.html.twig', [
  38. 'form' => $form->createView(),
  39. 'auto_show_modal' => $auto_show_modal,
  40. ]);
  41. }
  42. #[Route(path: '/navbar', name: 'navbar')]
  43. public function navbar(CourseService $course_service): Response
  44. {
  45. $activeCourses = $this->getUser()->getCourses()->filter(function ($course) {
  46. return $course->isIsActive();
  47. });
  48. $course_array = [];
  49. $kit_array = [];
  50. foreach ($activeCourses as $course) {
  51. $course_service->setContext($this->getUser(), $course);
  52. $course_nav_info = $course_service->getNavInfo();
  53. if ($course->isKitType()) {
  54. $kit_array[$course->getName()] = $course_nav_info;
  55. } else {
  56. $course_array[$course->getName()] = $course_nav_info;
  57. }
  58. }
  59. return $this->render('navbar.html.twig', [
  60. 'course_array' => $course_array ?? null,
  61. 'kit_array' => $kit_array ?? null
  62. ]);
  63. }
  64. }