From f58d8f7bd5efafc2b0ae8d2145355b8d9fceb0a1 Mon Sep 17 00:00:00 2001 From: Kouril42 Date: Tue, 31 Jan 2023 22:40:06 +0100 Subject: [PATCH] Begin API --- config/packages/doctrine.yaml | 2 +- src/Controller/MapApiController.php | 53 ++++++++++++++++++++++++++++- src/Entity/Place.php | 3 +- src/Repository/PlaceRepository.php | 29 ++++++++-------- src/Repository/RoomRepository.php | 41 ++++++++++++++-------- 5 files changed, 96 insertions(+), 32 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 9ae5660..1fe624e 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -5,7 +5,7 @@ doctrine: host: '127.0.0.1' port: 5432 user: 'encartes' - password: 'c0BanMCsQyxmPXhU1TjgXNvoSuXVsSNrxeWHKHyTYMk=' + password: 'oiseau_bleu' server_version: '15' charset: 'utf8' orm: diff --git a/src/Controller/MapApiController.php b/src/Controller/MapApiController.php index 89666b8..0fbb109 100644 --- a/src/Controller/MapApiController.php +++ b/src/Controller/MapApiController.php @@ -6,11 +6,12 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Annotation\Route; use App\Repository\SiteRepository; +use App\Repository\RoomRepository; class MapApiController extends AbstractController { #[Route('/map/api')] - public function index(SiteRepository $srep): JsonResponse + public function test(SiteRepository $srep): JsonResponse { return $this->json([ @@ -19,4 +20,54 @@ class MapApiController extends AbstractController 'sites' => $srep->allSites()[0]->getZeroLatitude() ]); } + + #[Route('/map/api/get_floor')] + public function get_floor(FloorRepository $srep, int $id): JsonResponse + { + return $rep->get_floor(id); + return $this->json([ + 'message' => 'Welcome to your new controller!', + 'path' => 'src/Controller/MapApiController.php', + 'sites' => $srep->allSites()[0]->getZeroLatitude() + ]); + } + + #[Route('/map/api/find_room_by_name')] + public function find_room_by_name(RoomRepository $srep, string $name): JsonResponse + { + $rooms = $rep->findRoomByName($name); + if (sizeof($rooms)!=1) { + return false; + } + else { + $room = $rooms[0]; + $CP = $room->getConnectedPlaces(); + if (sizeof($CP)==0) return null; + $floor = $CP[0]->getFloor(); + return $this->json([ + 'idRoom' => $room->getId(), + 'idFloor' => $floor->getId() + ]); + } + } + + + #[Route('/map/api/show_room_info')] + public function index(RoomRepository $srep, int $id): JsonResponse + { + $rooms = $rep->findRoomById($id); + if (sizeof($rooms)!=1) { + return null; + } + else { + return $this->json([ + 'idRoom' => $rooms[0]->getId(), + 'names' => $rooms[0]->getNames(), + 'users' => $rooms[0]->getUsers() + ]); + } + } + + + } diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 76366aa..035dfc8 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -10,7 +10,8 @@ use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: PlaceRepository::class)] #[ORM\InheritanceType("JOINED")] #[ORM\DiscriminatorColumn(name: "type", type: "string")] -#[ORM\DiscriminatorMap({"room": "Room","corridor": "Corridor"})] +#[ORM\DiscriminatorMap(room: "Room", corridor: "Corridor")] + class Place { #[ORM\Id] diff --git a/src/Repository/PlaceRepository.php b/src/Repository/PlaceRepository.php index a2f1f27..8924637 100644 --- a/src/Repository/PlaceRepository.php +++ b/src/Repository/PlaceRepository.php @@ -39,20 +39,21 @@ class PlaceRepository extends ServiceEntityRepository } } -// /** -// * @return Place[] Returns an array of Place objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('p') -// ->andWhere('p.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('p.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } + /** + * @return Place[] Returns an array of Place objects having connection with Corrido + */ + public function findPlaceConnectedTo($value): array + { + return $this->createQueryBuilder('p') + ->andWhere('p.connectedPlace = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->getQuery() + ->getResult() + ; + } + + // public function findOneBySomeField($value): ?Place // { diff --git a/src/Repository/RoomRepository.php b/src/Repository/RoomRepository.php index f9e146b..586eac9 100644 --- a/src/Repository/RoomRepository.php +++ b/src/Repository/RoomRepository.php @@ -39,21 +39,32 @@ class RoomRepository extends ServiceEntityRepository } } -// /** -// * @return Room[] Returns an array of Room objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('r') -// ->andWhere('r.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('r.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - + /** + * @return Room[] Returns an array of Room objects + */ + public function findRoomByName(string $name): array + { + return $this->createQueryBuilder('r') + ->andWhere('r.name.lower() = :val') + ->setParameter('val', $name.lower()) + ->orderBy('r.id', 'ASC') + ->getQuery() + ->getResult() + ; + } + /** + * @return Room[] Returns an array of Room objects + */ + public function findRoomById(int $id): array + { + return $this->createQueryBuilder('r') + ->andWhere('r.id = :val') + ->setParameter('val', $id) + ->orderBy('r.id', 'ASC') + ->getQuery() + ->getResult() + ; + } // public function findOneBySomeField($value): ?Room // { // return $this->createQueryBuilder('r')