render('lieu/index.html.twig', [ 'controller_name' => 'LieuController', ]); } #[Route('/lieu/set', name: 'lieu_set', methods: ['POST'])] public function setLieu( Request $request, VilleRepository $villeRepository, EntityManagerInterface $entityManager ): JsonResponse { $data = json_decode($request->getContent(), true); if (!isset($data['nom'], $data['latitude'], $data['longitude'], $data['ville'], $data['codePostal'])) { return new JsonResponse(['error' => 'Données manquantes.'], Response::HTTP_BAD_REQUEST); } $existingLieuByName = $entityManager->getRepository(Lieu::class)->findOneBy([ 'nom' => $data['nom'], ]); if ($existingLieuByName) { return new JsonResponse(['error' => "Un lieu avec le nom '{$data['nom']}' existe déjà."], Response::HTTP_CONFLICT); } $lieu = new Lieu(); $lieu->setNom($data['nom']); $lieu->setRue($data['rue']); $lieu->setLatitude($data['latitude']); $lieu->setLongitude($data['longitude']); $lieu->setVille($data['ville']); $lieu->setCodePostal($data['codePostal']); $entityManager->persist($lieu); $entityManager->flush(); return new JsonResponse([ 'id' => $lieu->getIdLieu(), 'nom' => $lieu->getNom(), ], Response::HTTP_CREATED); } #[Route('/lieux/{id}', name: 'lieu_details', methods: ['GET'])] public function getLieuDetails(string $id, LieuRepository $lieuRepository): JsonResponse { $lieu = $lieuRepository->find($id); if (!$lieu) { return new JsonResponse(['error' => 'Lieu introuvable'], 404); } return new JsonResponse([ 'rue' => $lieu->getRue(), 'codePostal' => $lieu->getCodePostal(), 'latitude' => $lieu->getLatitude(), 'longitude' => $lieu->getLongitude(), 'ville' => $lieu->getVille(), ]); } }