src/Controller/ParkingController.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Parking;
  4. use App\Entity\Days;
  5. use App\Entity\DayTime;
  6. use App\Entity\ParkingMatrixRaw;
  7. use App\Form\ParkingType;
  8. use App\Repository\ParkingRepository;
  9. use App\Repository\ParkingMatrixRawRepository;
  10. use App\Repository\DaysRepository;
  11. use App\Repository\DayTimeRepository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  18. use App\Service\FileUploader;
  19. #[Route('/parking')]
  20. class ParkingController extends AbstractController
  21. {
  22.     #[Route('/'name'app_parking_index'methods: ['GET'])]
  23.     public function index(ParkingRepository $parkingRepository): Response
  24.     {
  25.         return $this->render('parking/index.html.twig', [
  26.             'parkings' => $parkingRepository->findAll(),
  27.         ]);
  28.     }
  29.     #[Route('/parking_show_all'name'app_parking_show_all'methods: ['GET'])]
  30.     public function showAll(ParkingRepository $parkingRepository): Response
  31.     {
  32.         return $this->render('parking/show_all.html.twig', [
  33.             'parkings' => $parkingRepository->findAll(),
  34.         ]);
  35.     }
  36.     #[Route('/ncb9dmrzretybd'name'app_parking_new'methods: ['GET''POST'])]
  37.     public function new(Request $requestFileUploader $fileUploaderEntityManagerInterface $entityManagerDayTimeRepository $dayTimeRepositoryDaysRepository $daysRepository): Response
  38.     {
  39.         $parking = new Parking();
  40.         $form $this->createForm(ParkingType::class, $parking);
  41.         $form->handleRequest($request);
  42.         // Here I set default matrix days x timeslot for a new parking 
  43.         $days $daysRepository->findAll();
  44.         $dayTime $dayTimeRepository->findAll();
  45.         $matrix = [];
  46.         foreach($days as $day) {
  47.             $matrix[] = $day;
  48.             foreach($dayTime as $timeslot){
  49.                 $parkingMatrixRaw = new ParkingMatrixRaw();
  50.                 $parkingMatrixRaw->addDay($day);
  51.                 $parkingMatrixRaw->addDaytime($timeslot);
  52.                 $parkingMatrixRaw->setIsparked(false);
  53.                 $parkingMatrixRaw->addOwner($parking);
  54.                 $entityManager->persist($parkingMatrixRaw);
  55.                 $matrix["$day"][] = $parkingMatrixRaw;
  56.             }
  57.         }
  58.         if ($form->isSubmitted() && $form->isValid()) {
  59.             /** @var UploadedFile $vehicleFile */
  60.             $vehicleFile $form->get('filename')->getData();
  61.             if ($vehicleFile) {
  62.                 $vehicleFileName $fileUploader->upload($vehicleFile);
  63.                 $parking->setFileName($vehicleFileName);
  64.             }
  65.             // ... persist the $parking variable or any other work
  66.             $entityManager->persist($parking);
  67.             $entityManager->flush();
  68.             return $this->redirectToRoute('app_parking_index', [], Response::HTTP_SEE_OTHER);
  69.         }
  70.         return $this->renderForm('parking/new.html.twig', [
  71.             'parking' => $parking,
  72.             'form' => $form,
  73.             'timeslots' => $dayTimeRepository->findAll(),
  74.             'days' => $daysRepository->findAll()
  75.         ]);
  76.     }
  77.     #[Route('/{id}'name'app_parking_show'methods: ['GET'])]
  78.     public function show(Parking $parkingDaysRepository $daysRepositoryDayTimeRepository $dayTimeRepositoryParkingMatrixRawRepository $parkingMatrixRawRepository): Response
  79.     {
  80.         return $this->render('parking/show.html.twig', [
  81.             'parking' => $parking,
  82.             'timeslots' => $dayTimeRepository->findAll(),
  83.             'matrix' => $parkingMatrixRawRepository->findByOwnerId($parking->getId()),
  84.         ]);
  85.     }
  86.     #[Route('/{id}/edit'name'app_parking_edit'methods: ['GET''POST'])]
  87.     public function edit(Request $requestDaysRepository $daysRepositoryParking $parkingEntityManagerInterface $entityManagerDayTimeRepository $dayTimeRepositoryParkingMatrixRawRepository $parkingMatrixRawRepositoryFileUploader $fileUploader): Response
  88.     {
  89.         $form $this->createForm(ParkingType::class, $parking);
  90.         $form->handleRequest($request);
  91.         $parkingMatrixRaw $parkingMatrixRawRepository->findByOwnerId($parking->getId());
  92.         $oldVehicleFileName $parking->getFilename();
  93.         if ($form->isSubmitted() && $form->isValid()) {
  94.             /** @var UploadedFile $heroFile */
  95.             $vehicleFile $form->get('filename')->getData();
  96.             if ($vehicleFile) {
  97.                 $vehicleFileName $fileUploader->upload($vehicleFile);
  98.                 if(is_null($oldVehicleFileName) || $vehicleFileName !== $oldVehicleFileName) {
  99.                     $parking->setFileName($vehicleFileName);
  100.                 }   
  101.             }
  102.             // ... persist the $parking variable or any other work
  103.             $entityManager->persist($parking);
  104.             $entityManager->flush();
  105.             return $this->redirectToRoute('app_parking_index', [], Response::HTTP_SEE_OTHER);
  106.         }
  107.         return $this->renderForm('parking/edit.html.twig', [
  108.             'parking' => $parking,
  109.             'form' => $form,
  110.             'timeslots' => $dayTimeRepository->findAll(),
  111.             'days' => $daysRepository->findAll(),
  112.             'matrix' => $parkingMatrixRaw
  113.         ]);
  114.     }
  115.     #[Route('/wcfuxx3t7952qf/{id}'name'app_parking_delete'methods: ['POST'])]
  116.     public function delete(Request $requestParking $parkingEntityManagerInterface $entityManager): Response
  117.     {
  118.         foreach($parking->getParkingMatrixRaws() as $record){
  119.             $entityManager->remove($record);
  120.             $entityManager->flush();
  121.         }
  122.         if ($this->isCsrfTokenValid('delete'.$parking->getId(), $request->request->get('_token'))) {
  123.             $entityManager->remove($parking);
  124.             $entityManager->flush();
  125.         }
  126.         return $this->redirectToRoute('app_parking_index', [], Response::HTTP_SEE_OTHER);
  127.     }
  128. }