79 lines
2.6 KiB
PHP
79 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Controller;
|
|
|
|
use App\Entity\Lieu;
|
|
use App\Repository\LieuRepository;
|
|
use App\Repository\VilleRepository;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\Routing\Attribute\Route;
|
|
|
|
class LieuController extends AbstractController
|
|
{
|
|
#[Route('/lieu', name: 'app_lieu')]
|
|
public function index(): Response
|
|
{
|
|
return $this->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(),
|
|
]);
|
|
}
|
|
}
|