From ce2c643cc61cac63db46277bd7446885314af6a5 Mon Sep 17 00:00:00 2001 From: Kouril42 Date: Wed, 1 Feb 2023 16:47:28 +0100 Subject: [PATCH 1/4] Sauvegarde avant le carnage --- src/Controller/MapApiController.php | 99 +++++++++++++++++++++++++---- src/Entity/Corridor.php | 15 +++++ src/Entity/Place.php | 23 +++++++ src/Entity/Room.php | 28 ++++++++ src/Entity/RoomUsersName.php | 53 +++++++++++++++ 5 files changed, 205 insertions(+), 13 deletions(-) create mode 100644 src/Entity/RoomUsersName.php diff --git a/src/Controller/MapApiController.php b/src/Controller/MapApiController.php index 0fbb109..9b6fb41 100644 --- a/src/Controller/MapApiController.php +++ b/src/Controller/MapApiController.php @@ -11,29 +11,44 @@ use App\Repository\RoomRepository; class MapApiController extends AbstractController { #[Route('/map/api')] - public function test(SiteRepository $srep): JsonResponse + public function test(SiteRepository $rep): JsonResponse { return $this->json([ 'message' => 'Welcome to your new controller!', 'path' => 'src/Controller/MapApiController.php', - 'sites' => $srep->allSites()[0]->getZeroLatitude() + 'sites' => $rep->allSites()[0]->getZeroLatitude() ]); } #[Route('/map/api/get_floor')] - public function get_floor(FloorRepository $srep, int $id): JsonResponse + public function get_floor(FloorRepository $rep, 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() - ]); + $floor = $rep->findFloorById($id); + $corridors = $floor->getCorridors(); + $rooms = array(); + foreach ($corridors as $cor){ + foreach ($cor->getConnectedPlaces() as $place) { + if (($place instanceof Room) and !($rooms->contains($place))) { + $rooms[] = $place; + } + } + } + $jsonCorridors = array(); + $jsonRooms = array(); + foreach ($corridors as $cor){ + $jsonCorridors[] = $this->json([ + 'id' => $cor->getId(), + 'name' => $cor->getName(), + 'type' => $cor->getType() + //'polygon' => $cor->getPolyhedronRepresentation() + ]); + } + return array($jsonCorridors, $jsonRooms); } #[Route('/map/api/find_room_by_name')] - public function find_room_by_name(RoomRepository $srep, string $name): JsonResponse + public function find_room_by_name(RoomRepository $rep, string $name): JsonResponse { $rooms = $rep->findRoomByName($name); if (sizeof($rooms)!=1) { @@ -53,7 +68,7 @@ class MapApiController extends AbstractController #[Route('/map/api/show_room_info')] - public function index(RoomRepository $srep, int $id): JsonResponse + public function index(RoomRepository $rep, int $id): JsonResponse { $rooms = $rep->findRoomById($id); if (sizeof($rooms)!=1) { @@ -62,12 +77,70 @@ class MapApiController extends AbstractController else { return $this->json([ 'idRoom' => $rooms[0]->getId(), - 'names' => $rooms[0]->getNames(), - 'users' => $rooms[0]->getUsers() + 'names' => $rooms[0]->getName(), + 'users' => $rooms[0]->getUser() ]); } } + // #[Route('/map/api/get_all_propal_edit')] + // public function index(EditRepository $rep): JsonResponse + // { + // $edits = $rep->getAllEdit($id); + // if (sizeof($rooms)<1) { + // return null; + // } + // else { + // $listEdits = [] + // for i + // return $this->json([ + // 'idRoom' => $rooms[0]->getId(), + // 'names' => $rooms[0]->getName(), + // 'users' => $rooms[0]->getUser() + // ]); + // } + // } + #[Route('/map/api/del_room_name')] + public function delRoomName(RoomRepository $rep, int $id, string $value): bool + { + $rooms = $rep->findRoomById($id); + if (sizeof($rooms)!=1) { return null; } + else { + $rooms[0]->removeName($value); + return true; + } + } + #[Route('/map/api/add_room_name')] + public function addRoomName(RoomRepository $rep, int $id, string $value): bool + { + $rooms = $rep->findRoomById($id); + if (sizeof($rooms)!=1) { return null; } + else { + $rooms[0]->addName($value); + return true; + } + } + #[Route('/map/api/del_prof_room_name')] + public function delProfRoomName(RoomRepository $rep, int $id, string $value): bool + { + $rooms = $rep->findRoomById($id); + if (sizeof($rooms)!=1) { return null; } + else { + $rooms[0]->delUser($value); + return true; + } + } + #[Route('/map/api/add_prof_room_name')] + public function addProfRoomName(RoomRepository $rep, int $id, string $value): bool + { + $rooms = $rep->findRoomById($id); + if (sizeof($rooms)!=1) { return null; } + else { + $rooms[0]->addUser($value); + return true; + } + } + } diff --git a/src/Entity/Corridor.php b/src/Entity/Corridor.php index 133ad74..835a226 100644 --- a/src/Entity/Corridor.php +++ b/src/Entity/Corridor.php @@ -5,6 +5,7 @@ namespace App\Entity; use App\Repository\CorridorRepository; use Doctrine\ORM\Mapping as ORM; + #[ORM\Entity(repositoryClass: CorridorRepository::class)] class Corridor extends Place { @@ -13,6 +14,10 @@ class Corridor extends Place #[ORM\Column(type: "integer")] private $id; + #[ORM\Type] + #[ORM\Column(type: "string")] + private $type; + #[ORM\ManyToOne(targetEntity: Floor::class, inversedBy: "corridors")] #[ORM\JoinColumn(nullable: false)] private $floor; @@ -22,6 +27,16 @@ class Corridor extends Place return $this->id; } + public function getType(): ?string + { + return $this->type; + } + public function setType(string $type): self + { + $this->type = $type; + return $this; + } + public function getFloor(): ?Floor { return $this->floor; diff --git a/src/Entity/Place.php b/src/Entity/Place.php index d32186c..d382658 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -39,6 +39,29 @@ class Place return $this->id; } + /** + * @return Collection + */ + public function getName(): Collection + { + return $this->names; + } + + public function addName(self $name): self + { + if (!$this->names->contains($name)) { + $this->names[] = $name; + } + + return $this; + } + + public function removeName(self $name): self + { + $this->names->removeElement($name); + + return $this; + } /** * @return Collection */ diff --git a/src/Entity/Room.php b/src/Entity/Room.php index 512e68c..62bfda2 100644 --- a/src/Entity/Room.php +++ b/src/Entity/Room.php @@ -15,6 +15,9 @@ class Room extends Place #[ORM\Column(type: "integer")] private $id; + #[ORM\OneToMany(targetEntity: RoomUsersName::class, mappedBy: "room")] + private $users; + #[ORM\OneToMany(targetEntity: ThreeDObjectFile::class, mappedBy: "room")] private $ComplexRepresentation; @@ -37,6 +40,31 @@ class Room extends Place return $this->id; } + /** + * @return Collection + */ + public function getUser(): Collection + { + return $this->users; + } + + public function addUser(self $user): self + { + if (!$this->users->contains($user)) { + $this->users[] = $user; + } + + return $this; + } + + public function removeUser(self $user): self + { + $this->users->removeElement($user); + + return $this; + } + + /** * @return Collection */ diff --git a/src/Entity/RoomUsersName.php b/src/Entity/RoomUsersName.php new file mode 100644 index 0000000..e9541ae --- /dev/null +++ b/src/Entity/RoomUsersName.php @@ -0,0 +1,53 @@ +id; + } + + + public function getRoom(): ?Room + { + return $this->room; + } + + public function setRoom(?Room $room): self + { + $this->room = $room; + + return $this; + } + + public function getUsersName(): ?string + { + return $this->usersName; + } + + public function setUsersName(?string $name): self + { + $this->usersName = $name; + + return $this; + } +} From 250e186017ab51f8a2344db41b50e99b24103229 Mon Sep 17 00:00:00 2001 From: Kouril42 Date: Thu, 2 Feb 2023 17:09:16 +0100 Subject: [PATCH 2/4] Merging Corridor and Room in Place --- .gitignore | 4 + src/Entity/Corridor.php | 51 ----------- src/Entity/Cylinder.php | 12 +-- src/Entity/Floor.php | 30 +++--- src/Entity/Place.php | 92 ++++++++++++++++--- src/Entity/PlaceName.php | 53 ++--------- src/Entity/PolySurface.php | 12 +-- src/Entity/Polyhedron.php | 12 +-- src/Entity/Room.php | 157 -------------------------------- src/Entity/RoomUsersName.php | 30 +++--- src/Entity/ThreeDObjectFile.php | 12 +-- 11 files changed, 142 insertions(+), 323 deletions(-) delete mode 100644 src/Entity/Corridor.php delete mode 100644 src/Entity/Room.php diff --git a/.gitignore b/.gitignore index 141df9b..d8adee2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,7 @@ # Secret keys config/secrets/prod/prod.decrypt.private.php config/secrets/dev/ + + +# Test +src/trash/ \ No newline at end of file diff --git a/src/Entity/Corridor.php b/src/Entity/Corridor.php deleted file mode 100644 index 835a226..0000000 --- a/src/Entity/Corridor.php +++ /dev/null @@ -1,51 +0,0 @@ -id; - } - - public function getType(): ?string - { - return $this->type; - } - public function setType(string $type): self - { - $this->type = $type; - return $this; - } - - public function getFloor(): ?Floor - { - return $this->floor; - } - - public function setFloor(?Floor $floor): self - { - $this->floor = $floor; - - return $this; - } -} diff --git a/src/Entity/Cylinder.php b/src/Entity/Cylinder.php index cf26c3c..274d1c4 100644 --- a/src/Entity/Cylinder.php +++ b/src/Entity/Cylinder.php @@ -20,8 +20,8 @@ class Cylinder #[ORM\JoinColumn(nullable: false)] private $cylinderbase; - #[ORM\ManyToOne(targetEntity: Room::class, inversedBy: "CylinderRepresentation")] - private $room; + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "CylinderRepresentation")] + private $place; public function getId(): ?int { @@ -52,14 +52,14 @@ class Cylinder return $this; } - public function getRoom(): ?Room + public function getPlace(): ?Place { - return $this->room; + return $this->place; } - public function setRoom(?Room $room): self + public function setPlace(?Place $place): self { - $this->room = $room; + $this->place = $place; return $this; } diff --git a/src/Entity/Floor.php b/src/Entity/Floor.php index bcc3de4..579fd91 100644 --- a/src/Entity/Floor.php +++ b/src/Entity/Floor.php @@ -19,12 +19,12 @@ class Floor #[ORM\JoinColumn(nullable: false)] private $building; - #[ORM\OneToMany(targetEntity: Corridor::class, mappedBy: "floor")] - private $corridors; + #[ORM\ManyToMany(targetEntity: Place::class, mappedBy: "floors")] + private $places; public function __construct() { - $this->corridors = new ArrayCollection(); + $this->places = new ArrayCollection(); } public function getId(): ?int @@ -40,34 +40,32 @@ class Floor public function setBuilding(?Building $building): self { $this->building = $building; - return $this; } /** - * @return Collection + * @return Collection */ - public function getCorridors(): Collection + public function getPlaces(): Collection { - return $this->corridors; + return $this->places; } - public function addCorridor(Corridor $corridor): self + public function addPlace(Place $place): self { - if (!$this->corridors->contains($corridor)) { - $this->corridors[] = $corridor; - $corridor->setFloor($this); + if (!$this->places->contains($place)) { + $this->places[] = $place; + $place->setFloor($this); } - return $this; } - public function removeCorridor(Corridor $corridor): self + public function removePlace(Place $place): self { - if ($this->corridors->removeElement($corridor)) { + if ($this->places->removeElement($place)) { // set the owning side to null (unless already changed) - if ($corridor->getFloor() === $this) { - $corridor->setFloor(null); + if ($place->getFloor() === $this) { + $place->setFloor(null); } } diff --git a/src/Entity/Place.php b/src/Entity/Place.php index d382658..569d3b3 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -8,10 +8,10 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: PlaceRepository::class)] -#[ORM\MappedSuperclass] -#[ORM\InheritanceType("JOINED")] -#[ORM\DiscriminatorColumn(name: "type", type: "string")] -#[ORM\DiscriminatorMap(["room" => Room::class, "corridor" => Corridor::class])] +// #[ORM\MappedSuperclass] +// #[ORM\InheritanceType("JOINED")] +// #[ORM\DiscriminatorColumn(name: "type", type: "string")] +// #[ORM\DiscriminatorMap(["room" => Room::class, "corridor" => Corridor::class])] class Place { #[ORM\Id] @@ -19,19 +19,33 @@ class Place #[ORM\Column(type: "integer")] private $id; + #[ORM\Type] + #[ORM\Column(type: "string")] + // Either 'C'orridor , 'S'tairs , 'E'levator or 'R'oom + private $type; + + #[ORM\OneToMany(targetEntity: PlaceName::class, mappedBy: "place")] + private $names; + + #[ORM\OneToMany(targetEntity: RoomUserName::class, mappedBy: "place")] + private $users; + + #[ORM\ManyToMany(targetEntity: Floor::class, inversedBy: "places")] + private $floors; + #[ORM\ManyToMany(targetEntity: Place::class, inversedBy: "connectedPlaces")] private $connection; #[ORM\ManyToMany(targetEntity: Place::class, mappedBy: "connection")] private $connectedPlaces; - - #[ORM\OneToMany(targetEntity: PlaceName::class, mappedBy: "place")] - private $names; public function __construct() { $this->connection = new ArrayCollection(); $this->connectedPlaces = new ArrayCollection(); + $this->names = new ArrayCollection(); + $this->users = new ArrayCollection(); + $this->floors = new ArrayCollection(); } public function getId(): ?int @@ -39,10 +53,23 @@ class Place return $this->id; } + public function getType(): ?string + { + return $this->type; + } + public function setType(string $type): bool + { + if ($type == 'C' or $type == 'S' or $type == 'E' or $type == 'R') { + $this->type = $type; + return true; + } + return false; + } + /** * @return Collection */ - public function getName(): Collection + public function getNames(): Collection { return $this->names; } @@ -52,14 +79,57 @@ class Place if (!$this->names->contains($name)) { $this->names[] = $name; } - return $this; } public function removeName(self $name): self { $this->names->removeElement($name); + return $this; + } + + /** + * @return Collection + */ + public function getRoomUsers(): Collection + { + return $this->users; + } + + public function addRoomUser(self $user): self + { + if (!$this->users->contains($user)) { + $this->users[] = $user; + } + return $this; + } + + public function removeRoomUser(self $user): self + { + $this->users->removeElement($user); + return $this; + } + + /** + * @return Collection + */ + public function getFloors(): Collection + { + return $this->floors; + } + + public function addFloor(self $floor): self + { + if (!$this->floors->contains($floor)) { + $this->floors[] = $floor; + } + return $this; + } + + public function removeFloor(self $floor): self + { + $this->floors->removeElement($floor); return $this; } /** @@ -75,14 +145,12 @@ class Place if (!$this->connection->contains($connection)) { $this->connection[] = $connection; } - return $this; } public function removeConnection(self $connection): self { $this->connection->removeElement($connection); - return $this; } @@ -100,7 +168,6 @@ class Place $this->connectedPlaces[] = $connectedPlace; $connectedPlace->addConnection($this); } - return $this; } @@ -109,7 +176,6 @@ class Place if ($this->connectedPlaces->removeElement($connectedPlace)) { $connectedPlace->removeConnection($this); } - return $this; } } diff --git a/src/Entity/PlaceName.php b/src/Entity/PlaceName.php index b99d576..7d1a08d 100644 --- a/src/Entity/PlaceName.php +++ b/src/Entity/PlaceName.php @@ -7,7 +7,7 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; -#[ORM\Entity(repositoryClass: PlaceNamenRepository::class)] +#[ORM\Entity(repositoryClass: PlaceNameRepository::class)] class PlaceName { #[ORM\Id] @@ -18,58 +18,23 @@ class PlaceName #[ORM\Column(type: "string")] private $name; - #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "names")] - private $room; + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "id")] + private $place; + - public function __construct() - { - $this->polyhedronface = new ArrayCollection(); - } public function getId(): ?int { return $this->id; } - /** - * @return Collection - */ - public function getPolyhedronface(): Collection + public function getPlace(): ?Place { - return $this->polyhedronface; + return $this->place; } - - public function addPolyhedronface(PlaneSurface $polyhedronface): self + public function setPlace(?Place $place): self { - if (!$this->polyhedronface->contains($polyhedronface)) { - $this->polyhedronface[] = $polyhedronface; - $polyhedronface->setPolyhedron($this); - } - - return $this; - } - - public function removePolyhedronface(PlaneSurface $polyhedronface): self - { - if ($this->polyhedronface->removeElement($polyhedronface)) { - // set the owning side to null (unless already changed) - if ($polyhedronface->getPolyhedron() === $this) { - $polyhedronface->setPolyhedron(null); - } - } - - return $this; - } - - public function getRoom(): ?Room - { - return $this->room; - } - - public function setRoom(?Room $room): self - { - $this->room = $room; - + $this->place = $place; return $this; } @@ -77,11 +42,9 @@ class PlaceName { return $this->name; } - public function setName(?string $name): self { $this->name = $name; - return $this; } } diff --git a/src/Entity/PolySurface.php b/src/Entity/PolySurface.php index c158cc7..768d6b0 100644 --- a/src/Entity/PolySurface.php +++ b/src/Entity/PolySurface.php @@ -18,8 +18,8 @@ class PolySurface #[ORM\OneToMany(targetEntity: PlaneSurface::class, mappedBy: "polySurface")] private $polysurfaceComponent; - #[ORM\ManyToOne(targetEntity: Corridor::class)] - private $SurfaceRepresentation; + #[ORM\ManyToOne(targetEntity: Place::class)] + private $place; public function __construct() { @@ -61,14 +61,14 @@ class PolySurface return $this; } - public function getSurfaceRepresentation(): ?Corridor + public function getPlace(): ?Place { - return $this->SurfaceRepresentation; + return $this->place; } - public function setSurfaceRepresentation(?Corridor $SurfaceRepresentation): self + public function setPlace(?Place $place): self { - $this->SurfaceRepresentation = $SurfaceRepresentation; + $this->place = $place; return $this; } diff --git a/src/Entity/Polyhedron.php b/src/Entity/Polyhedron.php index b092be7..4718ee9 100644 --- a/src/Entity/Polyhedron.php +++ b/src/Entity/Polyhedron.php @@ -18,8 +18,8 @@ class Polyhedron #[ORM\OneToMany(targetEntity: PlaneSurface::class, mappedBy: "polyhedron")] private $polyhedronface; - #[ORM\ManyToOne(targetEntity: Room::class, inversedBy: "PolyhedronRepresentation")] - private $room; + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "PolyhedronRepresentation")] + private $place; public function __construct() { @@ -61,14 +61,14 @@ class Polyhedron return $this; } - public function getRoom(): ?Room + public function getPlace(): ?Place { - return $this->room; + return $this->place; } - public function setRoom(?Room $room): self + public function setPlace(?Place $place): self { - $this->room = $room; + $this->place = $place; return $this; } diff --git a/src/Entity/Room.php b/src/Entity/Room.php deleted file mode 100644 index 62bfda2..0000000 --- a/src/Entity/Room.php +++ /dev/null @@ -1,157 +0,0 @@ -ComplexRepresentation = new ArrayCollection(); - $this->PolyhedronRepresentation = new ArrayCollection(); - $this->CylinderRepresentation = new ArrayCollection(); - } - - public function getId(): ?int - { - return $this->id; - } - - /** - * @return Collection - */ - public function getUser(): Collection - { - return $this->users; - } - - public function addUser(self $user): self - { - if (!$this->users->contains($user)) { - $this->users[] = $user; - } - - return $this; - } - - public function removeUser(self $user): self - { - $this->users->removeElement($user); - - return $this; - } - - - /** - * @return Collection - */ - public function getComplexRepresentation(): Collection - { - return $this->ComplexRepresentation; - } - - public function addComplexRepresentation(ThreeDObjectFile $complexRepresentation): self - { - if (!$this->ComplexRepresentation->contains($complexRepresentation)) { - $this->ComplexRepresentation[] = $complexRepresentation; - $complexRepresentation->setRoom($this); - } - - return $this; - } - - public function removeComplexRepresentation(ThreeDObjectFile $complexRepresentation): self - { - if ($this->ComplexRepresentation->removeElement($complexRepresentation)) { - // set the owning side to null (unless already changed) - if ($complexRepresentation->getRoom() === $this) { - $complexRepresentation->setRoom(null); - } - } - - return $this; - } - - /** - * @return Collection - */ - public function getPolyhedronRepresentation(): Collection - { - return $this->PolyhedronRepresentation; - } - - public function addPolyhedronRepresentation(Polyhedron $polyhedronRepresentation): self - { - if (!$this->PolyhedronRepresentation->contains($polyhedronRepresentation)) { - $this->PolyhedronRepresentation[] = $polyhedronRepresentation; - $polyhedronRepresentation->setRoom($this); - } - - return $this; - } - - public function removePolyhedronRepresentation(Polyhedron $polyhedronRepresentation): self - { - if ($this->PolyhedronRepresentation->removeElement($polyhedronRepresentation)) { - // set the owning side to null (unless already changed) - if ($polyhedronRepresentation->getRoom() === $this) { - $polyhedronRepresentation->setRoom(null); - } - } - - return $this; - } - - /** - * @return Collection - */ - public function getCylinderRepresentation(): Collection - { - return $this->CylinderRepresentation; - } - - public function addCylinderRepresentation(Cylinder $cylinderRepresentation): self - { - if (!$this->CylinderRepresentation->contains($cylinderRepresentation)) { - $this->CylinderRepresentation[] = $cylinderRepresentation; - $cylinderRepresentation->setRoom($this); - } - - return $this; - } - - public function removeCylinderRepresentation(Cylinder $cylinderRepresentation): self - { - if ($this->CylinderRepresentation->removeElement($cylinderRepresentation)) { - // set the owning side to null (unless already changed) - if ($cylinderRepresentation->getRoom() === $this) { - $cylinderRepresentation->setRoom(null); - } - } - - return $this; - } -} diff --git a/src/Entity/RoomUsersName.php b/src/Entity/RoomUsersName.php index e9541ae..4f4930a 100644 --- a/src/Entity/RoomUsersName.php +++ b/src/Entity/RoomUsersName.php @@ -2,13 +2,12 @@ namespace App\Entity; -use App\Repository\PolyhedronRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; -#[ORM\Entity(repositoryClass: RoomRepository::class)] -class RoomUsersName +#[ORM\Entity(repositoryClass: RoomUserRepository::class)] +class RoomUserName { #[ORM\Id] #[ORM\GeneratedValue] @@ -16,38 +15,35 @@ class RoomUsersName private $id; #[ORM\Column(type: "string")] - private $usersName; + private $userName; - #[ORM\ManyToOne(targetEntity: Room::class, inversedBy: "id")] - private $room; + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "id")] + private $place; public function getId(): ?int { return $this->id; } - - public function getRoom(): ?Room + public function getPlace(): ?Place { - return $this->room; + return $this->place; } - public function setRoom(?Room $room): self + public function setPlace(?Place $place): self { - $this->room = $room; - + $this->place = $place; return $this; } - public function getUsersName(): ?string + public function getUserName(): ?string { - return $this->usersName; + return $this->userName; } - public function setUsersName(?string $name): self + public function setUserName(?string $name): self { - $this->usersName = $name; - + $this->userName = $name; return $this; } } diff --git a/src/Entity/ThreeDObjectFile.php b/src/Entity/ThreeDObjectFile.php index 79d293a..d4b638e 100644 --- a/src/Entity/ThreeDObjectFile.php +++ b/src/Entity/ThreeDObjectFile.php @@ -16,8 +16,8 @@ class ThreeDObjectFile #[ORM\Column(type: "string", length: 255)] private $filename; - #[ORM\ManyToOne(targetEntity: Room::class, inversedBy: "ComplexRepresentation")] - private $room; + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "ComplexRepresentation")] + private $place; public function getId(): ?int { @@ -36,14 +36,14 @@ class ThreeDObjectFile return $this; } - public function getRoom(): ?Room + public function getPlace(): ?Place { - return $this->room; + return $this->place; } - public function setRoom(?Room $room): self + public function setPlace(?Place $place): self { - $this->room = $room; + $this->place = $place; return $this; } From 0cb138d7d61b610982d413b0b5d589c91a055adf Mon Sep 17 00:00:00 2001 From: Kouril42 Date: Thu, 2 Feb 2023 18:14:25 +0100 Subject: [PATCH 3/4] Add FloorAltitude & maj API > basefunction except edit are fine, representation take only cylinder and polySurface --- src/Controller/MapApiController.php | 29 ++--- src/Entity/Floor.php | 15 +++ src/Entity/Place.php | 173 +++++++++++++++++++++++++- src/Entity/PolySurface.php | 4 +- src/Repository/CorridorRepository.php | 66 ---------- src/Repository/PlaceRepository.php | 35 ++++-- src/Repository/RoomRepository.php | 77 ------------ 7 files changed, 222 insertions(+), 177 deletions(-) delete mode 100644 src/Repository/CorridorRepository.php delete mode 100644 src/Repository/RoomRepository.php diff --git a/src/Controller/MapApiController.php b/src/Controller/MapApiController.php index 9b6fb41..4c71213 100644 --- a/src/Controller/MapApiController.php +++ b/src/Controller/MapApiController.php @@ -22,29 +22,20 @@ class MapApiController extends AbstractController } #[Route('/map/api/get_floor')] - public function get_floor(FloorRepository $rep, int $id): JsonResponse + public function get_floor(FloorRepository $rep, int $id, string $representation): JsonResponse { $floor = $rep->findFloorById($id); - $corridors = $floor->getCorridors(); - $rooms = array(); - foreach ($corridors as $cor){ - foreach ($cor->getConnectedPlaces() as $place) { - if (($place instanceof Room) and !($rooms->contains($place))) { - $rooms[] = $place; - } - } - } - $jsonCorridors = array(); - $jsonRooms = array(); - foreach ($corridors as $cor){ - $jsonCorridors[] = $this->json([ - 'id' => $cor->getId(), - 'name' => $cor->getName(), - 'type' => $cor->getType() - //'polygon' => $cor->getPolyhedronRepresentation() + $places = $floor->getPlace(); + $jsonPlaces = new ArrayCollection(); + foreach ($places as $place){ + $jsonPlaces[] = $this->json([ + 'id' => $place->getId(), + 'name' => $place->getName(), + 'type' => $place->getType(), + 'surface' => $place->getTwoDRepresentation($representation, $floor->getAltitude()) ]); } - return array($jsonCorridors, $jsonRooms); + return $jsonPlaces; } #[Route('/map/api/find_room_by_name')] diff --git a/src/Entity/Floor.php b/src/Entity/Floor.php index 579fd91..e91ea78 100644 --- a/src/Entity/Floor.php +++ b/src/Entity/Floor.php @@ -15,6 +15,10 @@ class Floor #[ORM\Column(type: "integer")] private $id; + #[ORM\Id] + #[ORM\Column(type: "integer")] + private $altitude; + #[ORM\ManyToOne(targetEntity: Building::class, inversedBy: "floors")] #[ORM\JoinColumn(nullable: false)] private $building; @@ -42,6 +46,17 @@ class Floor $this->building = $building; return $this; } + + public function getAltitude(): ?int + { + return $this->altitude; + } + + public function setAltitude(int $altitude): self + { + $this->altitude = $altitude; + return $this; + } /** * @return Collection diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 569d3b3..c3e27f9 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -26,7 +26,6 @@ class Place #[ORM\OneToMany(targetEntity: PlaceName::class, mappedBy: "place")] private $names; - #[ORM\OneToMany(targetEntity: RoomUserName::class, mappedBy: "place")] private $users; @@ -35,10 +34,19 @@ class Place #[ORM\ManyToMany(targetEntity: Place::class, inversedBy: "connectedPlaces")] private $connection; - #[ORM\ManyToMany(targetEntity: Place::class, mappedBy: "connection")] private $connectedPlaces; + #[ORM\OneToMany(targetEntity: ThreeDObjectFile::class, mappedBy: "place")] + private $ComplexRepresentation; + #[ORM\OneToMany(targetEntity: Polyhedron::class, mappedBy: "place")] + private $PolyhedronRepresentation; + #[ORM\OneToMany(targetEntity: Cylinder::class, mappedBy: "place")] + private $CylinderRepresentation; + #[ORM\OneToMany(targetEntity: PolySurface::class, mappedBy: "place")] + private $PolySurfaceRepresentation; + + public function __construct() { $this->connection = new ArrayCollection(); @@ -46,6 +54,9 @@ class Place $this->names = new ArrayCollection(); $this->users = new ArrayCollection(); $this->floors = new ArrayCollection(); + $this->ComplexRepresentation = new ArrayCollection(); + $this->PolyhedronRepresentation = new ArrayCollection(); + $this->CylinderRepresentation = new ArrayCollection(); } public function getId(): ?int @@ -178,4 +189,162 @@ class Place } return $this; } + + /** + * @return Collection + */ + public function getComplexRepresentation(): Collection + { + return $this->ComplexRepresentation; + } + + public function addComplexRepresentation(ThreeDObjectFile $complexRepresentation): self + { + if (!$this->ComplexRepresentation->contains($complexRepresentation)) { + $this->ComplexRepresentation[] = $complexRepresentation; + $complexRepresentation->setRoom($this); + } + + return $this; + } + + public function removeComplexRepresentation(ThreeDObjectFile $complexRepresentation): self + { + if ($this->ComplexRepresentation->removeElement($complexRepresentation)) { + // set the owning side to null (unless already changed) + if ($complexRepresentation->getRoom() === $this) { + $complexRepresentation->setRoom(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getPolyhedronRepresentation(): Collection + { + return $this->PolyhedronRepresentation; + } + + public function addPolyhedronRepresentation(Polyhedron $polyhedronRepresentation): self + { + if (!$this->PolyhedronRepresentation->contains($polyhedronRepresentation)) { + $this->PolyhedronRepresentation[] = $polyhedronRepresentation; + $polyhedronRepresentation->setRoom($this); + } + + return $this; + } + + public function removePolyhedronRepresentation(Polyhedron $polyhedronRepresentation): self + { + if ($this->PolyhedronRepresentation->removeElement($polyhedronRepresentation)) { + // set the owning side to null (unless already changed) + if ($polyhedronRepresentation->getRoom() === $this) { + $polyhedronRepresentation->setRoom(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getCylinderRepresentation(): Collection + { + return $this->CylinderRepresentation; + } + + public function addCylinderRepresentation(Cylinder $cylinderRepresentation): self + { + if (!$this->CylinderRepresentation->contains($cylinderRepresentation)) { + $this->CylinderRepresentation[] = $cylinderRepresentation; + $cylinderRepresentation->setRoom($this); + } + + return $this; + } + + public function removeCylinderRepresentation(Cylinder $cylinderRepresentation): self + { + if ($this->CylinderRepresentation->removeElement($cylinderRepresentation)) { + // set the owning side to null (unless already changed) + if ($cylinderRepresentation->getRoom() === $this) { + $cylinderRepresentation->setRoom(null); + } + } + + return $this; + } + + + /** + * @return Collection + */ + public function getPolySurfaceRepresentation(): Collection + { + return $this->PolySurfaceRepresentation; + } + + public function addPolySurfaceRepresentation(PolySurface $polySurfaceRepresentation): self + { + if (!$this->PolySurfaceRepresentation->contains($polySurfaceRepresentation)) { + $this->PolySurfaceRepresentation[] = $polySurfaceRepresentation; + $polySurfaceRepresentation->setRoom($this); + } + + return $this; + } + + public function removePolySurfaceRepresentation(PolySurface $polySurfaceRepresentation): self + { + if ($this->PolySurfaceRepresentation->removeElement($polySurfaceRepresentation)) { + // set the owning side to null (unless already changed) + if ($polySurfaceRepresentation->getRoom() === $this) { + $polySurfaceRepresentation->setRoom(null); + } + } + + return $this; + } + + + + public function getTwoDRepresentation(string $representation, int $alt) : array + { + if ($representation=='Cylinder') { + $rep = $this->getCylinderRepresentation(); + if ($rep != null){ + $repPoints = $rep->getCylinderbase()->getPolygonpoint(); //Points in repository format + $Points = new ArrayCollection(); + foreach ($repPoints as $p) { + $xy=array([$p->getX(), $p->getY()]); + if (!$Points->contains($xy)){ + $Points[] = $xy; + } + } + return $Points; + } + } + elseif ($representation=='PolySurface') { + $rep = $this->getPolySurfaceRepresentation(); + if ($rep != null){ + $repPoints = $rep->getPolysurfaceComponent()->getPolygonpoint(); //Points in repository format + $Points = new ArrayCollection(); + foreach ($repPoints as $p) { + $xy=array([$p->getX(), $p->getY()]); + if (!$Points->contains($xy)){ + $Points[] = $xy; + } + } + return $Points; + } + } + else { + return null; + } + } } diff --git a/src/Entity/PolySurface.php b/src/Entity/PolySurface.php index 768d6b0..2aa2c6f 100644 --- a/src/Entity/PolySurface.php +++ b/src/Entity/PolySurface.php @@ -18,7 +18,7 @@ class PolySurface #[ORM\OneToMany(targetEntity: PlaneSurface::class, mappedBy: "polySurface")] private $polysurfaceComponent; - #[ORM\ManyToOne(targetEntity: Place::class)] + #[ORM\ManyToOne(targetEntity: Place::class, inversedBy: "PolySurfaceRepresentation")] private $place; public function __construct() @@ -71,5 +71,5 @@ class PolySurface $this->place = $place; return $this; - } + } } diff --git a/src/Repository/CorridorRepository.php b/src/Repository/CorridorRepository.php deleted file mode 100644 index bfa244f..0000000 --- a/src/Repository/CorridorRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @method Corridor|null find($id, $lockMode = null, $lockVersion = null) - * @method Corridor|null findOneBy(array $criteria, array $orderBy = null) - * @method Corridor[] findAll() - * @method Corridor[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class CorridorRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Corridor::class); - } - - public function add(Corridor $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(Corridor $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - -// /** -// * @return Corridor[] Returns an array of Corridor objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('c') -// ->andWhere('c.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('c.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?Corridor -// { -// return $this->createQueryBuilder('c') -// ->andWhere('c.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/src/Repository/PlaceRepository.php b/src/Repository/PlaceRepository.php index 8924637..ed2e3a3 100644 --- a/src/Repository/PlaceRepository.php +++ b/src/Repository/PlaceRepository.php @@ -40,18 +40,31 @@ class PlaceRepository extends ServiceEntityRepository } /** - * @return Place[] Returns an array of Place objects having connection with Corrido + * @return Place[] Returns an array of Place objects */ - public function findPlaceConnectedTo($value): array - { - return $this->createQueryBuilder('p') - ->andWhere('p.connectedPlace = :val') - ->setParameter('val', $value) - ->orderBy('p.id', 'ASC') - ->getQuery() - ->getResult() - ; - } + public function findPlaceByName(string $name): array + { + return $this->createQueryBuilder('p') + ->andWhere('LOWER(p.name) = :val') + ->setParameter('val', strtolower($name)) + ->orderBy('p.id', 'ASC') + ->getQuery() + ->getResult() + ; + } + /** + * @return Place[] Returns an array of Place objects + */ + public function findPlaceById(int $id): array + { + return $this->createQueryBuilder('p') + ->andWhere('p.id = :val') + ->setParameter('val', $id) + ->orderBy('p.id', 'ASC') + ->getQuery() + ->getResult() + ; + } diff --git a/src/Repository/RoomRepository.php b/src/Repository/RoomRepository.php deleted file mode 100644 index 586eac9..0000000 --- a/src/Repository/RoomRepository.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * @method Room|null find($id, $lockMode = null, $lockVersion = null) - * @method Room|null findOneBy(array $criteria, array $orderBy = null) - * @method Room[] findAll() - * @method Room[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class RoomRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Room::class); - } - - public function add(Room $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(Room $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - /** - * @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') -// ->andWhere('r.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} From 626a3de5e4858cfa3fca226c9718aa5acc594cc1 Mon Sep 17 00:00:00 2001 From: Kouril42 Date: Thu, 2 Feb 2023 18:54:28 +0100 Subject: [PATCH 4/4] Add Editions --- src/Controller/MapApiController.php | 123 +++++++++++++++------------ src/Entity/Edition.php | 90 ++++++++++++++++++++ src/Repository/EditionRepository.php | 64 ++++++++++++++ 3 files changed, 224 insertions(+), 53 deletions(-) create mode 100644 src/Entity/Edition.php create mode 100644 src/Repository/EditionRepository.php diff --git a/src/Controller/MapApiController.php b/src/Controller/MapApiController.php index 4c71213..e7bbd43 100644 --- a/src/Controller/MapApiController.php +++ b/src/Controller/MapApiController.php @@ -10,7 +10,7 @@ use App\Repository\RoomRepository; class MapApiController extends AbstractController { - #[Route('/map/api')] + #[Route('/map/api/test')] public function test(SiteRepository $rep): JsonResponse { @@ -38,98 +38,115 @@ class MapApiController extends AbstractController return $jsonPlaces; } - #[Route('/map/api/find_room_by_name')] - public function find_room_by_name(RoomRepository $rep, string $name): JsonResponse + #[Route('/map/api/find_place_by_name')] + public function find_place_by_name(PlaceRepository $rep, string $name): JsonResponse { - $rooms = $rep->findRoomByName($name); - if (sizeof($rooms)!=1) { + $places = $rep->findPlaceByName($name); + if (sizeof($places)!=1) { return false; } else { - $room = $rooms[0]; - $CP = $room->getConnectedPlaces(); - if (sizeof($CP)==0) return null; - $floor = $CP[0]->getFloor(); + $place = $places[0]; return $this->json([ - 'idRoom' => $room->getId(), - 'idFloor' => $floor->getId() + 'idRoom' => $place->getId(), + 'idFloor' => $place->getFloor()->getId() ]); } } - #[Route('/map/api/show_room_info')] - public function index(RoomRepository $rep, int $id): JsonResponse + #[Route('/map/api/show_place_info')] + public function index(PlaceRepository $rep, int $id): JsonResponse { - $rooms = $rep->findRoomById($id); - if (sizeof($rooms)!=1) { + $places = $rep->findPlaceById($id); + if (sizeof($places)!=1) { return null; } else { return $this->json([ - 'idRoom' => $rooms[0]->getId(), - 'names' => $rooms[0]->getName(), - 'users' => $rooms[0]->getUser() + 'idRoom' => $places[0]->getId(), + 'names' => $places[0]->getName(), + 'users' => $places[0]->getUser() ]); } } - // #[Route('/map/api/get_all_propal_edit')] - // public function index(EditRepository $rep): JsonResponse - // { - // $edits = $rep->getAllEdit($id); - // if (sizeof($rooms)<1) { - // return null; - // } - // else { - // $listEdits = [] - // for i - // return $this->json([ - // 'idRoom' => $rooms[0]->getId(), - // 'names' => $rooms[0]->getName(), - // 'users' => $rooms[0]->getUser() - // ]); - // } - // } + #[Route('/map/api/get_all_editions')] + public function getEditions(EditionRepository $rep): JsonResponse + { + $edits = $rep->getAllEditions(); + if (sizeof($edits)<1) { + return null; + } + else { + $listEdits = new ArrayCollection(); + foreach ($edits as $edit){ + $listEdits[] = $this->json([ + 'id' => $edit->getId(), + 'mode' => $edit->getMode(), + 'name' => $edit->getNamePlace(), + 'idPlace' => $edit->getIdPlace(), + 'value' => $edit->getValue() + ]); + } + + } + return $listEdits; + } + #[Route('/map/api/set_edition')] + public function setEdition(PlaceRepository $rep, string $mode, int $idPlace, string $value): bool + { + $edit = new Edition(); + return $edit->setEdition($rep, $mode, $idPlace, $value); + } - #[Route('/map/api/del_room_name')] - public function delRoomName(RoomRepository $rep, int $id, string $value): bool + #[Route('/map/api/remove_edition')] + public function removeEdition(EditionRepository $rep, int $id): bool { - $rooms = $rep->findRoomById($id); - if (sizeof($rooms)!=1) { return null; } + $edit = $rep->findEditionById($id); + if ($edit == null) {return false;} + $rep->remove($edit); + return true; + } + + #[Route('/map/api/del_place_name')] + public function delPlaceName(PlaceRepository $rep, int $id, string $value): bool + { + $places = $rep->findPlaceById($id); + if (sizeof($places)!=1) { return null; } else { - $rooms[0]->removeName($value); + $places[0]->removeName($value); return true; } } - #[Route('/map/api/add_room_name')] - public function addRoomName(RoomRepository $rep, int $id, string $value): bool + #[Route('/map/api/add_place_name')] + public function addPlaceName(PlaceRepository $rep, int $id, string $value): bool { - $rooms = $rep->findRoomById($id); - if (sizeof($rooms)!=1) { return null; } + $places = $rep->findPlaceById($id); + if (sizeof($places)!=1) { return null; } else { - $rooms[0]->addName($value); + $places[0]->addName($value); return true; } } - #[Route('/map/api/del_prof_room_name')] - public function delProfRoomName(RoomRepository $rep, int $id, string $value): bool + #[Route('/map/api/del_room_user_name')] + public function delRoomUserName(PlaceRepository $rep, int $id, string $value): bool { - $rooms = $rep->findRoomById($id); + $rooms = $rep->findPlaceById($id); if (sizeof($rooms)!=1) { return null; } else { - $rooms[0]->delUser($value); + $rooms[0]->removeRoomUser($value); return true; } } - #[Route('/map/api/add_prof_room_name')] - public function addProfRoomName(RoomRepository $rep, int $id, string $value): bool + #[Route('/map/api/add_room_user_name')] + public function addRoomUserName(PlaceRepository $rep, int $id, string $value): bool { - $rooms = $rep->findRoomById($id); + $rooms = $rep->findPlaceById($id); if (sizeof($rooms)!=1) { return null; } else { - $rooms[0]->addUser($value); + $rooms[0]->addRoomUser($value); return true; } } diff --git a/src/Entity/Edition.php b/src/Entity/Edition.php new file mode 100644 index 0000000..5d82000 --- /dev/null +++ b/src/Entity/Edition.php @@ -0,0 +1,90 @@ +id; + } + + public function getMode(): ?string + { return $this->mode; } + public function setMode(string $mode): self + { + $this->mode = $mode; + return $this; + } + + public function getIdPlace(): ?int + { return $this->idPlace; } + public function setIdPlace(int $id): self + { + $this->idPlace = $id; + return $this; + } + + public function getNamePlace(): ?string + { return $this->namePlace; } + public function setNamePlace(string $name): self + { + $this->NamePlace = $name; + return $this; + } + + public function getValue(): ?string + { return $this->val; } + public function setValue(string $val): self + { + $this->val = $val; + return $this; + } + + + public function setEdition(PlaceRepository $rep, string $mode, int $id, string $val): self + { + $place = $rep->findPlaceById($id); + if ($place==null) { return null; } + $names = $place->getName(); + $name = ''; + foreach ($names as $n) { + $name = $name + $n + ", " ; + } + $this->mode = $mode; + $this->idPlace = $id; + $this->namePlace = $name; + $this->val = $val; + return $this; + } + +} diff --git a/src/Repository/EditionRepository.php b/src/Repository/EditionRepository.php new file mode 100644 index 0000000..e3609b1 --- /dev/null +++ b/src/Repository/EditionRepository.php @@ -0,0 +1,64 @@ + + * + * @method Edition|null find($id, $lockMode = null, $lockVersion = null) + * @method Edition|null findOneBy(array $criteria, array $orderBy = null) + * @method Edition[] findAll() + * @method Edition[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class EditionRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Edition::class); + } + + public function add(Edition $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(Edition $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + /** + * @return Edition[] Returns an array of Edition objects + */ + public function getAllEditions(): array + { + return $this->createQueryBuilder('f') + ->orderBy('f.id', 'ASC') + ->getQuery() + ->getResult() + ; + } + + + public function findEditionById(int $id): ?Edition + { + return $this->createQueryBuilder('f') + ->andWhere('f.id = :val') + ->setParameter('val', $id) + ->getQuery() + ->getOneOrNullResult() + ; + } +}