src/Controller/TennisVenuesController.php line 148

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\TennisVenues;
  4. use App\Entity\User;
  5. use App\Form\ImportType;
  6. use App\Form\TennisVenuesType;
  7. use App\Repository\TennisBookingsRepository;
  8. use App\Repository\TennisVenuesDistancesRepository;
  9. use App\Repository\TennisVenuesRepository;
  10. use App\Repository\UserRepository;
  11. use App\Services\DistanceToVenueByPlayer;
  12. use App\Services\ScrapeMyCourtsStaticData;
  13. use App\Services\TennisVenueImportService;
  14. use App\Services\UserImportService;
  15. use App\Services\VenueFavouritesByPlayer;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use JeroenDesloovere\VCard\VCard;
  18. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  19. use PhpOffice\PhpSpreadsheet\Writer\Csv;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\Response;
  24. use Symfony\Component\HttpFoundation\StreamedResponse;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Component\Security\Core\Security;
  27. use Symfony\Component\String\Slugger\SluggerInterface;
  28. /**
  29.  * @Route("/tennisvenues")
  30.  */
  31. class TennisVenuesController extends AbstractController
  32. {
  33.     /**
  34.      * @Route("/index", name="tennis_venues_index", methods={"GET"})
  35.      */
  36.     public function index(TennisVenuesRepository $tennisVenuesRepositoryTennisVenuesDistancesRepository $tennisVenuesDistancesRepositoryVenueFavouritesByPlayer $venueFavouritesByPlayerSecurity $security): Response
  37.     {
  38.         $venues $tennisVenuesRepository->findAll();
  39.         $user $security->getUser();
  40.         $distances $tennisVenuesDistancesRepository->findBy([
  41.             'user' => $user]);
  42.         $favoured_venues = [];
  43.         if ($user != null) {
  44.             $favoured_venues $user->getTennisVenues();
  45.         }
  46.         return $this->render('tennis_venues/index.html.twig', [
  47.             'sample_venue' => $tennisVenuesRepository->findOneBy([
  48.                 'venue' => 'Bethnal Green Gardens'
  49.             ]),
  50.             'tennis_venues' => $venues,
  51.             'user' => $user,
  52.             'favoured_venues' => $favoured_venues,
  53.             'show_icon' => 'No',
  54.             'booking_engine' => 'All'
  55.         ]);
  56.     }
  57.     /**
  58.      * @Route("/index/{booking_engine}", name="tennis_venues_index_by_booking_engine", methods={"GET"})
  59.      */
  60.     public function indexBySystem(Request $requeststring $booking_engineTennisVenuesRepository $tennisVenuesRepositoryTennisVenuesDistancesRepository $tennisVenuesDistancesRepositoryVenueFavouritesByPlayer $venueFavouritesByPlayerSecurity $security): Response
  61.     {
  62.         $venues $tennisVenuesRepository->findBy([
  63.             'bookingEngine' => $booking_engine
  64.         ]);
  65.         $user $security->getUser();
  66.         $distances $tennisVenuesDistancesRepository->findBy([
  67.             'user' => $user]);
  68.         $favoured_venues = [];
  69.         if ($user != null) {
  70.             $favoured_venues $user->getTennisVenues();
  71.         }
  72.         return $this->render('tennis_venues/index.html.twig', [
  73.             'sample_venue' => $tennisVenuesRepository->findOneBy([
  74.                 'venue' => 'Bethnal Green Gardens'
  75.             ]),
  76.             'tennis_venues' => $venues,
  77.             'user' => $user,
  78.             'favoured_venues' => $favoured_venues,
  79.             'show_icon' => 'No',
  80.             'booking_engine' => $booking_engine
  81.         ]);
  82.     }
  83.     /**
  84.      * @Route("/map", name="tennis_venues_map", methods={"GET"})
  85.      */
  86.     public function map(TennisVenuesRepository $tennisVenuesRepositoryTennisVenuesDistancesRepository $tennisVenuesDistancesRepositoryVenueFavouritesByPlayer $venueFavouritesByPlayerSecurity $security): Response
  87.     {
  88.         $venues $tennisVenuesRepository->findAll();
  89.         $gpsCentreLocationLatitude 51.5075;
  90.         $gpsCentreLocationLongitude = -0.1808;
  91.         $gpsCentreLocationZoom 12.2;
  92.         return $this->render('tennis_venues/venues_map.html.twig', [
  93.             'tennis_venues' => $venues,
  94.             'gpsCentreLocationLatitude' => $gpsCentreLocationLatitude,
  95.             'gpsCentreLocationLongitude' => $gpsCentreLocationLongitude,
  96.             'gpsCentreLocationZoom' => $gpsCentreLocationZoom,
  97.         ]);
  98.     }
  99.     /**
  100.      * @Route("/new", name="tennis_venues_new", methods={"GET","POST"})
  101.      */
  102.     public function new(Request $request): Response
  103.     {
  104.         $tennisVenue = new TennisVenues();
  105.         $form $this->createForm(TennisVenuesType::class, $tennisVenue);
  106.         $form->handleRequest($request);
  107.         if ($form->isSubmitted() && $form->isValid()) {
  108.             $entityManager $this->getDoctrine()->getManager();
  109.             $entityManager->persist($tennisVenue);
  110.             $entityManager->flush();
  111.             return $this->redirectToRoute('tennis_venues_index');
  112.         }
  113.         return $this->render('tennis_venues/new.html.twig', [
  114.             'tennis_venue' => $tennisVenue,
  115.             'form' => $form->createView(),
  116.         ]);
  117.     }
  118.     /**
  119.      * @Route("/show/{id}", name="tennis_venues_show", methods={"GET"})
  120.      */
  121.     public function show(TennisVenues $tennisVenue): Response
  122.     {
  123.         return $this->render('tennis_venues/show.html.twig', [
  124.             'tennis_venue' => $tennisVenue,
  125.         ]);
  126.     }
  127.     /**
  128.      * @Route("/venue_address/{id}", name="venue_address", methods={"GET"})
  129.      */
  130.     public function venueAddress(TennisVenues $tennisVenue): Response
  131.     {
  132.         return $this->render('tennis_venues/venue_address.html.twig', [
  133.                 'tennis_venue' => $tennisVenue,
  134.             ]
  135.         );
  136.     }
  137.     /**
  138.      * @Route("/edit/{id}", name="tennis_venues_edit", methods={"GET","POST"})
  139.      * //
  140.      ** @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ADMIN')")
  141.      */
  142.     public function edit(Request $requestTennisVenues $tennisVenueSecurity $security): Response
  143.     {
  144.         date_default_timezone_set('Europe/London');
  145.         $logged_user $security->getUser();
  146.         $now = new \DateTime('now');
  147.         $form $this->createForm(TennisVenuesType::class, $tennisVenue);
  148.         $form->handleRequest($request);
  149.         if ($form->isSubmitted() && $form->isValid()) {
  150.             if ($form->has('photo1')) {
  151.                 $photo1 $form->get('photo1')->getData();
  152.                 if ($photo1) {
  153.                     $originalFilename pathinfo($photo1->getClientOriginalName(), PATHINFO_FILENAME);
  154.                     $newFilename $tennisVenue->getVenue() . '1.' $photo1->guessExtension();
  155.                     $previous_file $this->getParameter('venue_photos_directory') . $newFilename;
  156.                     if (file_exists($previous_file)) {
  157.                         unlink($previous_file);
  158.                     }
  159.                     $photo1->move(
  160.                         $this->getParameter('venue_photos_directory'),
  161.                         $newFilename
  162.                     );
  163.                     $tennisVenue->setPhoto1($newFilename);
  164.                 }
  165.             }
  166.             if ($form->has('photo2')) {
  167.                 $photo2 $form->get('photo2')->getData();
  168.                 if ($photo2) {
  169.                     $originalFilename pathinfo($photo2->getClientOriginalName(), PATHINFO_FILENAME);
  170.                     $newFilename $tennisVenue->getVenue() . '2.' $photo2->guessExtension();
  171.                     $previous_file $this->getParameter('venue_photos_directory') . $newFilename;
  172.                     if (file_exists($previous_file)) {
  173.                         unlink($previous_file);
  174.                     }
  175.                     $photo2->move(
  176.                         $this->getParameter('venue_photos_directory'),
  177.                         $newFilename
  178.                     );
  179.                     $tennisVenue->setPhoto2($newFilename);
  180.                 }
  181.             }
  182.             $tennisVenue->setLastEditedAt($now);
  183.             $tennisVenue->setLastEditedBy($logged_user);
  184.             $this->getDoctrine()->getManager()->flush();
  185.             return $this->redirectToRoute('tennis_venues_index');
  186.         }
  187.         return $this->render('tennis_venues/edit.html.twig', [
  188.             'tennis_venue' => $tennisVenue,
  189.             'form' => $form->createView(),
  190.         ]);
  191.     }
  192.     /**
  193.      * @Route("/ActiveInactive/{id}", name="tennis_venues_active_inactive", methods={"GET","POST"})
  194.      * @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ADMIN')")
  195.      */
  196.     public function toggleOnOffActiveInactive(Request $requestTennisVenues $tennisVenueEntityManagerInterface $manager): Response
  197.     {
  198.         $referer $request->headers->get("referer");
  199.         if ($tennisVenue->getIsActive() == 1) {
  200.             $tennisVenue->setIsActive(0);
  201.         } else {
  202.             $tennisVenue->setIsActive(1);
  203.         }
  204.         $manager->flush();
  205.         return $this->redirect($referer);
  206.     }
  207.     /**
  208.      * @Route("/DetailsChecked/{id}", name="tennis_venues_details_checked", methods={"GET","POST"})
  209.      * @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ADMIN')")
  210.      */
  211.     public function toggleOnOffDetailsChecked(Request $requestTennisVenues $tennisVenueEntityManagerInterface $manager): Response
  212.     {
  213.         $referer $request->headers->get("referer");
  214.         if ($tennisVenue->getDetailsChecked() == 1) {
  215.             $tennisVenue->setDetailsChecked(0);
  216.         } else {
  217.             $tennisVenue->setDetailsChecked(1);
  218.         }
  219.         $manager->flush();
  220.         return $this->redirect($referer);
  221.     }
  222.     /**
  223.      * @Route("/ActivateOrDeactivateAll/{flag}", name="tennis_venues_activate_or_deactivate_all", methods={"GET","POST"})
  224.      * @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ADMIN')")
  225.      */
  226.     public function toggleOnOffIsaactive(Request $request$flagTennisVenuesRepository $tennisVenuesRepositoryEntityManagerInterface $manager): Response
  227.     {
  228.         $referer $request->headers->get("referer");
  229.         $venues $tennisVenuesRepository->findAll();
  230.         if ($flag == "activate") {
  231.             foreach ($venues as $venue) {
  232.                 $venue->setIsActive('1');
  233.             }
  234.         };
  235.         if ($flag == "deactivate") {
  236.             foreach ($venues as $venue) {
  237.                 $venue->setIsActive('0');
  238.             }
  239.         };
  240.         $manager->flush();
  241.         return $this->redirect($referer);
  242.     }
  243.     /**
  244.      * @Route("/Reset/AllVenuesToTBA/", name="tennis_venues_reset_all_venues_to_TBA", methods={"GET","POST"})
  245.      * @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ACEIFY')")
  246.      */
  247.     public function resetAllVenuesTBA(Request $requestTennisVenuesRepository $tennisVenuesRepositorySecurity $securityEntityManagerInterface $manager): Response
  248.     {
  249.         $now = new \DateTime('now');
  250.         $logged_user $security->getUser();
  251.         $referer $request->headers->get("referer");
  252.         $venues $tennisVenuesRepository->findAll();
  253.         $venuesNotChecked = [];
  254.         foreach ($venues as $venue) {
  255.             if ($venue->getDetailsChecked() != '1') {
  256.                 $venuesNotChecked[] = $venue;
  257.             }
  258.         }
  259.         foreach ($venuesNotChecked as $venueNotChecked) {
  260.             $venueNotChecked->setTubeStation(null);
  261.             $venueNotChecked->setMembersClub('Public');
  262.             $venueNotChecked->setToilet('TBA');
  263.             $venueNotChecked->setParking('TBA');
  264.             $venueNotChecked->setFloodlights('TBA');
  265.             $venueNotChecked->setDetailsChecked('0');
  266.             $venueNotChecked->setIndoorCourts('TBA');
  267.             $venueNotChecked->setNumberOfCourts('25');
  268.             $venueNotChecked->setTravelDirections(null);
  269.             $venueNotChecked->setTelNumber(null);
  270.             $venueNotChecked->setEmail(null);
  271.             $venueNotChecked->setAllowFutureReservations('Yes');
  272.             $venueNotChecked->setEmail(null);
  273.             $venueNotChecked->setLastEditedBy($logged_user);
  274.             $venueNotChecked->setLastEditedAt($now);
  275.             $venueNotChecked->setClubDescription(null);
  276.         }
  277.         $manager->flush();
  278.         return $this->redirect($referer);
  279.     }
  280.     /**
  281.      * @Route("/FutureReservationsOnOff/{id}", name="tennis_venues_future_reservations_toggle", methods={"GET","POST"})
  282.      * @\Sensio\Bundle\FrameworkExtraBundle\Configuration\Security("is_granted('ROLE_ACEIFY')")
  283.      */
  284.     public function toggleFutureReservationsOnOff(Request $requestTennisVenues $tennisVenueEntityManagerInterface $manager): Response
  285.     {
  286.         if ($tennisVenue->getAllowFutureReservations() == 1) {
  287.             $tennisVenue->setAllowFutureReservations(0);
  288.         } elseif ($tennisVenue->getAllowFutureReservations() == 0) {
  289.             $tennisVenue->setAllowFutureReservations(true);
  290.         } else {
  291.             $tennisVenue->setAllowFutureReservations(true);
  292.         }
  293.         $manager->flush();
  294.         return $this->redirectToRoute('tennis_venues_index');
  295.     }
  296.     /**
  297.      * @Route("/delete/{id}", name="tennis_venues_delete", methods={"POST"})
  298.      */
  299.     public function delete(Request $requestTennisVenues $tennisVenue): Response
  300.     {
  301.         if ($this->isCsrfTokenValid('delete' $tennisVenue->getId(), $request->request->get('_token'))) {
  302.             $entityManager $this->getDoctrine()->getManager();
  303.             $entityManager->remove($tennisVenue);
  304.             $entityManager->flush();
  305.         }
  306.         return $this->redirectToRoute('tennis_venues_index');
  307.     }
  308.     /**
  309.      * @Route("/create/Vcardvenue/{id}", name="create_vcard_venue")
  310.      */
  311.     public function createVcardVenue(int $idTennisVenuesRepository $tennisVenuesRepository)
  312.     {
  313.         $venue $tennisVenuesRepository->find($id);
  314.         $vcard = new VCard();
  315.         $venueFirstName $venue->getVenue();
  316.         $venueLastName "Tennis Courts";
  317.         $company "TennisFinder - Courts";
  318.         $notes =
  319.             'Courts: ' $venue->getNumberOfCourts() .
  320.             '\nIndoor/Outdoor: ' $venue->getIndoorCourts() .
  321.             '\nFloodlights: ' $venue->getFloodlights() .
  322.             '\nParking: ' $venue->getParking() .
  323.             '\nToilet: ' $venue->getToilet() .
  324.             '\nComments: ' $venue->getClubDescription();
  325.         $address $venue->getAddress();
  326.         $addressCity $venue->getAddressCity();
  327.         $addressPostCode $venue->getAddressPostcode();
  328.         $addressCountry $venue->getAddressCountry();
  329.         $weblink $venue->getWebLink();
  330.         $vcard->addName($venueLastName$venueFirstName);
  331.         $vcard->addEmail($venue->getEmail())
  332.             ->addPhoneNumber($venue->getTelNumber(), 'work')
  333.             ->addCompany($company)
  334.             ->addAddress(''''$address$addressCity''$addressPostCode$addressCountry'WORK')
  335.             ->addNote($notes)
  336.             ->addURL($weblink);
  337.         $vcard->download();
  338.         return new Response(null);
  339.     }
  340.     /**
  341.      * @Route("/club_description/{id}", name="club_description", methods={"GET"})
  342.      */
  343.     public function club_description($idTennisVenues $tennisVenuesTennisVenuesRepository $tennisVenuesRepository): Response
  344.     {
  345.         $venue $tennisVenuesRepository->find($id);
  346.         return $this->render('home/club_description.html.twig', [
  347.             'venue' => $venue
  348.         ]);
  349.     }
  350.     /**
  351.      * @Route ("/tennis_venues/export/", name="tennis_venues_export" )
  352.      */
  353.     public function exportTennisVenues(Request $requestTennisVenuesRepository $tennisVenuesRepository)
  354.     {
  355.         $data = [];
  356.         $venue_list $tennisVenuesRepository->findAll();
  357.         $fileName 'tennis_venues_export.csv';
  358.         $exported_date = new \DateTime('now');
  359.         $exported_date $exported_date->format('d-M-Y h:m');
  360.         $count 0;
  361.         foreach ($venue_list as $venue) {
  362.             $detailChecked 0;
  363.             $isActive 0;
  364.             if ($venue->getDetailsChecked() == 1) {
  365.                 $detailChecked 1;
  366.             }
  367.             if ($venue->getIsActive() == 1) {
  368.                 $isActive 1;
  369.             }
  370.             $data[] = [
  371.                 $venue->getVenue(),
  372.                 $venue->getShortCode(),
  373.                 $isActive,
  374.                 $detailChecked,
  375.                 $venue->getEmail(),
  376.                 $venue->getTelNumber(),
  377.                 $venue->getNumberOfCourts(),
  378.                 $venue->getLondonRegion(),
  379.                 $venue->getAddress(),
  380.                 $venue->getAddressCity(),
  381.                 $venue->getAddressPostcode(),
  382.                 $venue->getAddressCountry(),
  383.                 $venue->getLongitude(),
  384.                 $venue->getLatitude(),
  385.                 $venue->getMapLink(),
  386.                 $venue->getTubeStation(),
  387.                 $venue->getMembersClub(),
  388.                 $venue->getIndoorCourts(),
  389.                 $venue->getCourtSurface(),
  390.                 $venue->getFloodlights(),
  391.                 $venue->getParking(),
  392.                 $venue->getToilet(),
  393.                 $venue->getTravelDirections(),
  394.                 $venue->getAllowFutureReservations(),
  395.                 $venue->getPhoto1(),
  396.                 $venue->getPhoto2(),
  397.                 $venue->getWebLink(),
  398.                 $venue->getBookingEngine(),
  399.                 $venue->getBookingUrl(),
  400.                 $venue->getClubDescription(),
  401.             ];
  402.         }
  403.         $spreadsheet = new Spreadsheet();
  404.         $sheet $spreadsheet->getActiveSheet();
  405.         $sheet->setTitle('Tennis Venues');
  406.         $sheet->getCell('A1')->setValue('Venue');
  407.         $sheet->getCell('B1')->setValue('ShortCode');
  408.         $sheet->getCell('C1')->setValue('IsActive');
  409.         $sheet->getCell('D1')->setValue('Details Checked');
  410.         $sheet->getCell('E1')->setValue('Email');
  411.         $sheet->getCell('F1')->setValue('Tel Number');
  412.         $sheet->getCell('G1')->setValue('Number of Courts');
  413.         $sheet->getCell('H1')->setValue('London Region');
  414.         $sheet->getCell('I1')->setValue('Address');
  415.         $sheet->getCell('J1')->setValue('Address City');
  416.         $sheet->getCell('K1')->setValue('Postcode');
  417.         $sheet->getCell('L1')->setValue('Country');
  418.         $sheet->getCell('M1')->setValue('Longitude');
  419.         $sheet->getCell('N1')->setValue('Latitude');
  420.         $sheet->getCell('O1')->setValue('MapLink');
  421.         $sheet->getCell('P1')->setValue('Tube Station');
  422.         $sheet->getCell('Q1')->setValue('Members');
  423.         $sheet->getCell('R1')->setValue('Indoor');
  424.         $sheet->getCell('S1')->setValue('CourtSurface');
  425.         $sheet->getCell('T1')->setValue('Floodlights');
  426.         $sheet->getCell('U1')->setValue('Parking');
  427.         $sheet->getCell('V1')->setValue('Toilet');
  428.         $sheet->getCell('W1')->setValue('Travel Directions');
  429.         $sheet->getCell('X1')->setValue('Allow Future Reservations');
  430.         $sheet->getCell('Y1')->setValue('Photo 1');
  431.         $sheet->getCell('Z1')->setValue('Photo 2');
  432.         $sheet->getCell('AA1')->setValue('Weblink');
  433.         $sheet->getCell('AB1')->setValue('Booking Engine');
  434.         $sheet->getCell('AC1')->setValue('Booking URL');
  435.         $sheet->getCell('AD1')->setValue('Club Description');
  436.         $sheet->fromArray($datanull'A2'true);
  437.         $total_rows $sheet->getHighestRow();
  438.         $writer = new Csv($spreadsheet);
  439.         $response = new StreamedResponse(function () use ($writer) {
  440.             $writer->save('php://output');
  441.         });
  442.         $response->headers->set('Content-Type''application/vnd.ms-excel');
  443.         $response->headers->set('Content-Disposition'sprintf('attachment;filename="%s"'$fileName));
  444.         $response->headers->set('Cache-Control''max-age=0');
  445.         return $response;
  446.     }
  447.     /**
  448.      * @Route("/tennis_venues/import/ ", name="tennis_venues_import")
  449.      */
  450.     public function tennisVenuesImport(Request $requestSluggerInterface $sluggerTennisVenuesRepository $tennisVenuesRepositoryTennisVenueImportService $tennisVenueImportService): Response
  451.     {
  452.         $form $this->createForm(ImportType::class);
  453.         $form->handleRequest($request);
  454.         if ($form->isSubmitted() && $form->isValid()) {
  455.             $importFile $form->get('File')->getData();
  456.             if ($importFile) {
  457.                 $originalFilename pathinfo($importFile->getClientOriginalName(), PATHINFO_FILENAME);
  458.                 $safeFilename $slugger->slug($originalFilename);
  459.                 $newFilename $safeFilename '.' 'csv';
  460.                 try {
  461.                     $importFile->move(
  462.                         $this->getParameter('import_tennis_venue_directory'),
  463.                         $newFilename
  464.                     );
  465.                 } catch (FileException $e) {
  466.                     die('Import failed');
  467.                 }
  468.                 $tennisVenueImportService->import($newFilename);
  469.                 return $this->redirectToRoute('tennis_venues_index');
  470.             }
  471.         }
  472.         return $this->render('admin/import/index.html.twig', [
  473.             'form' => $form->createView(),
  474.         ]);
  475.     }
  476.     /**
  477.      * @Route("/delete/delete_all", name="tennis_venues_delete_all", methods={"GET"})
  478.      */
  479.     public
  480.     function deleteAllBookings(TennisVenuesRepository $tennisVenuesRepositoryEntityManagerInterface $entityManager): Response
  481.     {
  482.         $venues $tennisVenuesRepository->findAll();
  483.         foreach ($venues as $venue) {
  484.             $entityManager->remove($venue);
  485.             $entityManager->flush();
  486.         }
  487.         return $this->redirectToRoute('tennis_venues_index');
  488.     }
  489.     /**
  490.      * @Route("/{id}/{photo}/deletephoto", name="tennis_venue_delete_photo")
  491.      */
  492.     public function deleteTennisVenuePhoto(Request $requestint $photoTennisVenues $tennisVenuesEntityManagerInterface $entityManager)
  493.     {
  494.         $referer $request->headers->get('referer');
  495.         if ($photo == 1) {
  496.             $file $this->getParameter('venue_photos_directory') . $tennisVenues->getPhoto1();
  497.             if (file_exists($file)) {
  498.                 unlink($file);
  499.             }
  500.             $tennisVenues->setPhoto1(null);
  501.         }
  502.         if ($photo == 2) {
  503.             $file $this->getParameter('venue_photos_directory') . $tennisVenues->getPhoto2();
  504.             if (file_exists($file)) {
  505.                 unlink($file);
  506.             }
  507.             $tennisVenues->setPhoto2(null);
  508.         }
  509.         $entityManager->flush();
  510.         return $this->redirect($referer);
  511.     }
  512.     /**
  513.      * @Route("/{id}/{photo}/viewphoto", name="venue_viewphoto")
  514.      */
  515.     public function viewVenuePhoto(int $idint $photoTennisVenues $tennisVenues)
  516.     {
  517.         if ($photo == 1) {
  518.             $imagename $tennisVenues->getPhoto1();
  519.         }
  520.         if ($photo == 2) {
  521.             $imagename $tennisVenues->getPhoto2();
  522.         }
  523.         return $this->render('tennis_venues/image.html.twig', ['imagename' => $imagename'tennis_venue' => $tennisVenues]);
  524.     }
  525.     /**
  526.      * @Route("/scrape/static_data_my_courts", name="tennis_venues_scrape_static_data_my_courts", methods={"GET"})
  527.      */
  528.     public
  529.     function scrapeMyCourtsStaticData(TennisVenuesRepository $tennisVenuesRepositoryScrapeMyCourtsStaticData $scrapeMyCourtsStaticDataEntityManagerInterface $entityManager): Response
  530.     {
  531.         $scrapeMyCourtsStaticData->content();
  532.         return $this->redirectToRoute('tennis_venues_index');
  533.     }
  534. }