From 851808021aba3c66174bf76dbc21d86afc94449e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Mon, 24 Mar 2025 21:53:51 +0100 Subject: [PATCH] Add sites endpoint --- src/Controller/SiteController.php | 38 +++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/Controller/SiteController.php b/src/Controller/SiteController.php index 0e3ae55..2ea79e8 100644 --- a/src/Controller/SiteController.php +++ b/src/Controller/SiteController.php @@ -15,8 +15,42 @@ use Symfony\Bridge\Doctrine\Attribute\MapEntity; class SiteController extends AbstractController { - #[Route('/site/{gisId<\w+>}', name: 'app_site')] - public function index( + #[Route('/sites', name: 'app_site')] + public function index(EntityManagerInterface $em): JsonResponse + { + $repo = $em->getRepository(Site::class); + + $sites = $repo->findAll(); + + // TODO N+1... + foreach($sites as $key => $site) { + $coords = $repo->coordinates($site->getId()); + $site->setLat($coords['lat']); + $site->setLng($coords['lng']); + $sites[$key] = $site; + $repo = $em->getRepository(Image::class); + $images = new ArrayCollection( + $repo->findBy( + ['site' => $site->getId()], + ['sequence' => 'ASC'] + ) + ); + $repo = $em->getRepository(Document::class); + $documents = $repo->findBySite($site->getId()); + $repo = $em->getRepository(Bibliography::class); + $bibliography = $repo->findAllBySite($site->getId()); + + $site->setImages($images); + $site->setDocuments($documents); + $site->setBibliography($bibliography); + $repo = $em->getRepository(Site::class); + } + + return $this->json($sites); + } + + #[Route('/site/{gisId<\w+>}', name: 'app_site_record')] + public function record( #[MapEntity(mapping: ['gisId' => 'gisId'])] Site $site, EntityManagerInterface $em