src/Controller/HomeController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Emplacement;
  4. use App\Entity\Foodtruck;
  5. use App\Repository\CategorieRepository;
  6. use App\Repository\EmplacementRepository;
  7. use App\Repository\FoodtruckRepository;
  8. use App\Repository\ServiceRepository;
  9. use App\Service\FoodtruckService;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  15. class HomeController extends AbstractController
  16. {
  17. #[Route('/', name: 'home', methods: ['GET'])]
  18. public function index(): Response
  19. {
  20. return $this->redirectToRoute('services_semaine', [], Response::HTTP_SEE_OTHER);
  21. }
  22. #[Route('/choix', name: 'choisir_foodtruck', methods: ['GET'])]
  23. public function choisir(FoodtruckRepository $foodtruckRepository, EmplacementRepository $emplacementRepository, SessionInterface $session)
  24. {
  25. $foodtruck_selected = $session->get("foodtruck", Foodtruck::class);
  26. if(is_object($foodtruck_selected)){
  27. return $this->redirectToRoute('services_semaine', [], Response::HTTP_SEE_OTHER);
  28. }
  29. $foodtrucks = $foodtruckRepository->findAll();
  30. $emplacements = $emplacementRepository->findAll();
  31. return $this->render('home/choix.html.twig', [
  32. 'foodtrucks' => $foodtrucks,
  33. 'emplacements' => $emplacements,
  34. ]);
  35. }
  36. #[Route('/choix/foodtruck/{id}', name: 'choisir_service_par_foodtruck', methods: ['GET'])]
  37. public function serviceParFoodtruck(Foodtruck $foodtruck, FoodtruckService $foodtruckService)
  38. {
  39. $foodtruckService->addFoodtruckInSession($foodtruck);
  40. return $this->redirectToRoute('services_semaine', [], Response::HTTP_SEE_OTHER);
  41. }
  42. #[Route('/choix/emplacement/{id}', name: 'choisir_service_par_emplacement', methods: ['GET'])]
  43. public function serviceParEmplacement(Emplacement $emplacement, FoodtruckService $foodtruckService)
  44. {
  45. $foodtruckService->addEmplacementInSession($emplacement);
  46. return $this->redirectToRoute('services_semaine', [], Response::HTTP_SEE_OTHER);
  47. }
  48. #[Route('/semaine', name: 'services_semaine', methods: ['GET'])]
  49. public function commander(ServiceRepository $serviceRepository, SessionInterface $session, FoodtruckService $foodtruckService, Request $request, CategorieRepository $categorieRepository): Response
  50. {
  51. //Détection du foodtruck
  52. $foodtruck = $foodtruckService->controleFoodtruck($request);
  53. if(is_object($foodtruck))
  54. {
  55. } else {
  56. $foodtruck = $session->get("foodtruck", Foodtruck::class);
  57. }
  58. $emplacement = $foodtruckService->controleEmplacement($request);
  59. if(is_object($emplacement))
  60. {
  61. } else {
  62. $emplacement = $session->get("emplacement", Emplacement::class);
  63. }
  64. // $emplacement = $session->get("emplacement", Emplacement::class);
  65. $tri = null;
  66. // $firstDay = date('Y-m-d',strtotime('last monday'));
  67. // $lastDay = date('Y-m-d',strtotime('Sunday'));
  68. $firstDay = date('Y-m-d',strtotime('now'));
  69. $lastDay = date('Y-m-d',strtotime('+6 day'));
  70. $semaine = [];
  71. $dates = [];
  72. $dates['firstDay'] = $firstDay;
  73. $dates['lastDay'] = $lastDay;
  74. $semaine = ['Lundi'=>NULL, 'Mardi'=>NULL, 'Mercredi'=>NULL, 'Jeudi'=>NULL, 'Vendredi'=>NULL, 'Samedi'=>NULL, 'Dimanche'=>NULL];
  75. if(is_object($emplacement))
  76. {
  77. //Récupération de tous les services liés à tous les foodtrucks lié à cet emplacement
  78. $services = $serviceRepository->findByDatesByEmplacement($dates,$emplacement);
  79. $tri = "des foodtrucks pour l'emplacement ".$emplacement->getLibelle()." - ".$emplacement->getAdr()." ".$emplacement->getCp()." ".$emplacement->getVille()."";
  80. } else {
  81. if($this->getUser()){
  82. if ($this->IsGranted('ROLE_ADMIN')){
  83. //Récupération de tous les services
  84. $services = $serviceRepository->findByDates($dates);
  85. } elseif (isset($this->getUser()->getFoodtrucks()[0])){
  86. //Récupération des services liés au foodtruck rattaché au compte user
  87. $services = $serviceRepository->findByDatesByFoodtruck($dates,$this->getUser()->getFoodtrucks()[0]);
  88. $tri = "pour le foodtruck ".$this->getUser()->getFoodtrucks()[0]->getLibelle()."";
  89. } elseif (is_object($foodtruck)) {
  90. //Récupération des services liés au foodtruck récupéré depuis l'URL
  91. $services = $serviceRepository->findByDatesByFoodtruck($dates,$foodtruck);
  92. $tri = "pour le foodtruck ".$foodtruck->getLibelle()."";
  93. } else {
  94. //Renvoi vers la page de sélection d'un foodtruck ou d'un emplacement
  95. return $this->redirectToRoute('choisir_foodtruck', [], Response::HTTP_SEE_OTHER);
  96. }
  97. } else {
  98. if(is_object($foodtruck)){
  99. //Récupération des services liés au foodtruck récupéré depuis l'URL
  100. $services = $serviceRepository->findByDatesByFoodtruck($dates,$foodtruck);
  101. $tri = "pour le foodtruck ".$foodtruck->getLibelle()."";
  102. } else {
  103. //Renvoi vers la page de sélection d'un foodtruck ou d'un emplacement
  104. return $this->redirectToRoute('choisir_foodtruck', [], Response::HTTP_SEE_OTHER);
  105. }
  106. }
  107. }
  108. foreach ($services as $key => $service) {
  109. if(date('N' , $service->getDate()->getTimestamp() ) == 1 )
  110. {
  111. $semaine['Lundi'][] = $service;
  112. }
  113. if(date('N' , $service->getDate()->getTimestamp() ) == 2 )
  114. {
  115. $semaine['Mardi'][] = $service;
  116. }
  117. if(date('N' , $service->getDate()->getTimestamp() ) == 3 )
  118. {
  119. $semaine['Mercredi'][] = $service;
  120. }
  121. if(date('N' , $service->getDate()->getTimestamp() ) == 4 )
  122. {
  123. $semaine['Jeudi'][] = $service;
  124. }
  125. if(date('N' , $service->getDate()->getTimestamp() ) == 5 )
  126. {
  127. $semaine['Vendredi'][] = $service;
  128. }
  129. if(date('N' , $service->getDate()->getTimestamp() ) == 6 )
  130. {
  131. $semaine['Samedi'][] = $service;
  132. }
  133. if(date('N' , $service->getDate()->getTimestamp() ) == 7 )
  134. {
  135. $semaine['Dimanche'][] = $service;
  136. }
  137. }
  138. // dd($semaine);
  139. return $this->render('home/semaine.html.twig', [
  140. 'semaine' => $semaine,
  141. 'dates' => $dates,
  142. 'tri' => $tri,
  143. 'categories' => $categorieRepository->findAll(),
  144. ]);
  145. }
  146. }