diff --git a/README.md b/README.md index 49a23e3..c40e0dc 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ Your installation should be complete, you can run `symfony local:server:start` t - [ ] Use a representation superclass (both db and php) - [ ] Use a php enum and a pgsql enum for place type - [ ] Change get_floors (connectedFloors) to SQL request +- [ ] Add authentification for editions and some commands diff --git a/src/Controller/JsonReaderController.php b/src/Controller/JsonReaderController.php index 350f8d5..de3b00d 100644 --- a/src/Controller/JsonReaderController.php +++ b/src/Controller/JsonReaderController.php @@ -18,6 +18,7 @@ use App\Entity\Cylinder; use App\Entity\Edition; use App\Entity\Floor; use App\Entity\Place; +use App\Entity\PlaceType; use App\Entity\PlaceName; use App\Entity\PlaneSurface; use App\Entity\Point; @@ -109,43 +110,43 @@ class JsonReaderController extends AbstractController $data = json_decode($request->getContent(),true); // Adding all the rooms - $rooms2Data = $data['rooms2']; - $cor2Data = $data['cor2']; - $rooms3Data = $data['rooms3']; - $cor3Data = $data['cor3']; - $rooms4Data = $data['rooms4']; - $cor4Data = $data['cor4']; - $rooms34Data = $data['bothRooms']; - $roomsXData = $data['allRooms']; + $rooms2Data = $data['M-GN1-2']; + $cor2Data = $data['M-GN1-2-co']; + $rooms3Data = $data['M-GN1-3']; + $cor3Data = $data['M-GN1-3-co']; + $rooms4Data = $data['M-GN1-4']; + $cor4Data = $data['M-GN1-4-co']; + $rooms34Data = $data['M-GN1-34']; + $roomsXData = $data['M-GN1-X']; // We create the rooms $rooms2 = []; foreach($rooms2Data as $rData) { - $rooms2[] = JsonReaderController::addRoom($rData, "R", $mr); + $rooms2[] = JsonReaderController::addRoom($rData, PlaceType::Room, $mr); } - $cor2 = JsonReaderController::addRoom($cor2Data, "C", $mr); + $cor2 = JsonReaderController::addRoom($cor2Data[0], PlaceType::Corridor, $mr); $rooms3 = []; foreach($rooms3Data as $rData) { - $rooms3[] = JsonReaderController::addRoom($rData, "R", $mr); + $rooms3[] = JsonReaderController::addRoom($rData, PlaceType::Room, $mr); } - $cor3 = JsonReaderController::addRoom($cor3Data, "C", $mr); + $cor3 = JsonReaderController::addRoom($cor3Data[0], PlaceType::Corridor, $mr); $rooms4 = []; foreach($rooms4Data as $rData) { - $rooms4[] = JsonReaderController::addRoom($rData, "R", $mr); + $rooms4[] = JsonReaderController::addRoom($rData, PlaceType::Room, $mr); } - $cor4 = JsonReaderController::addRoom($cor4Data, "C", $mr); + $cor4 = JsonReaderController::addRoom($cor4Data[0], PlaceType::Corridor, $mr); $rooms34 = []; foreach($rooms34Data as $rData) { - $rooms34[] = JsonReaderController::addRoom($rData, "R", $mr); + $rooms34[] = JsonReaderController::addRoom($rData, PlaceType::Room, $mr); } $roomsX = []; foreach($roomsXData as $rData) { /* Determining between stairs and lift */ - echo sizeof(json_decode($rData['points'],true)) . '
'; - if(sizeof(json_decode($rData['points'],true))<=5) - $letter = "L"; + echo sizeof($rData['points']) . '
'; + if(sizeof($rData['points'])<=5) + $letter = PlaceType::Lift; else - $letter = "S"; + $letter = PlaceType::Stairs; $roomsX[] = JsonReaderController::addRoom($rData, $letter, $mr); } @@ -218,14 +219,13 @@ class JsonReaderController extends AbstractController return new Response('', Response::HTTP_OK); } - public function addRoom(array $room, string $roomType, ManagerRegistry $mr): Place { + public function addRoom(array $room, PlaceType $roomType, ManagerRegistry $mr): Place { $manager = $mr->getManager(); - + $height = (float) $room['height']; $z = (float) $room['z']; - $name = $room['name']; - $points = json_decode($room['points'],true); + $points = $room['points']; $r = new Place(); $r->setType($roomType); diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 8c817d8..1482a7c 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -7,6 +7,14 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; +enum PlaceType: string { + case Room = 'R'; + case Corridor = 'C'; + case Stairs = 'S'; + case Lift = 'L'; + case Toilets = 'T'; +} + #[ORM\Entity(repositoryClass: PlaceRepository::class)] class Place { @@ -15,8 +23,7 @@ class Place #[ORM\Column(type: "integer")] private $id; - #[ORM\Column(type: "string")] - // Either 'C'orridor , 'S'tairs , 'L'ift or 'R'oom + #[ORM\Column(type: "string", enumType: PlaceType::class)] private $type; #[ORM\OneToMany(targetEntity: PlaceName::class, mappedBy: "place")] @@ -58,17 +65,14 @@ class Place return $this->id; } - public function getType(): ?string + public function getType(): ?PlaceType { return $this->type; } - public function setType(string $type): bool + public function setType(PlaceType $type): bool { - if ($type == 'C' or $type == 'S' or $type == 'L' or $type == 'R') { - $this->type = $type; - return true; - } - return false; + $this->type = $type; + return true; } /**