From eb647078cae8b24941526d0439a678cb3d238410 Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Thu, 18 Jul 2024 09:00:20 +0200 Subject: [PATCH] refs #427. Added position into Client entity --- migrations/Version20240718064611.php | 31 ++++++++++++++++++++++++++++ src/Dto/Input/ClientInput.php | 13 +++++++----- src/Dto/Output/ClientOutput.php | 5 ++++- src/Entity/Client.php | 15 ++++++++++++++ 4 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 migrations/Version20240718064611.php diff --git a/migrations/Version20240718064611.php b/migrations/Version20240718064611.php new file mode 100644 index 0000000..fedb106 --- /dev/null +++ b/migrations/Version20240718064611.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE client ADD position JSON DEFAULT NULL COMMENT \'(DC2Type:json)\''); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE client DROP position'); + } +} diff --git a/src/Dto/Input/ClientInput.php b/src/Dto/Input/ClientInput.php index 2b124dd..df1a9c0 100644 --- a/src/Dto/Input/ClientInput.php +++ b/src/Dto/Input/ClientInput.php @@ -38,9 +38,6 @@ final class ClientInput #[ApiProperty(description: 'The IP address of the client', example: "127.0.0.1")] public ?string $ip = null; - #[Groups(['client:write'])] - public ?string $status = null; - #[Assert\NotNull] #[Groups(['client:write', 'client:patch'])] #[ApiProperty(description: 'The organizational unit of the client')] @@ -52,6 +49,12 @@ final class ClientInput #[Groups(['client:write'])] public ?HardwareProfileOutput $hardwareProfile = null; + #[Groups(['client:write'])] + #[ApiProperty( + description: 'descriptions.client.validation' + )] + public ?array $position = ['x' => 0, 'y' => 0]; + public function __construct(?Client $client = null) { if (!$client) { @@ -65,7 +68,7 @@ final class ClientInput $this->netDriver = $client->getNetDriver(); $this->mac = $client->getMac(); $this->ip = $client->getIp(); - $this->status = $client->getStatus(); + $this->position = $client->getPosition(); if ($client->getMenu()) { $this->menu = new MenuOutput($client->getMenu()); @@ -89,9 +92,9 @@ final class ClientInput $client->setNetDriver($this->netDriver); $client->setMac($this->mac); $client->setIp($this->ip); - $client->setStatus($this->status); $client->setMenu($this->menu?->getEntity()); $client->setHardwareProfile($this->hardwareProfile?->getEntity()); + $client->setPosition($this->position); return $client; } diff --git a/src/Dto/Output/ClientOutput.php b/src/Dto/Output/ClientOutput.php index a7b49e3..97c0b5a 100644 --- a/src/Dto/Output/ClientOutput.php +++ b/src/Dto/Output/ClientOutput.php @@ -48,6 +48,9 @@ final class ClientOutput extends AbstractOutput #[ApiProperty(readableLink: true )] public ?HardwareProfileOutput $hardwareProfile = null; + #[Groups(['client:read'])] + public ?array $position = ['x' => 0, 'y' => 0]; + #[Groups(['client:read'])] public \DateTime $createdAt; @@ -74,8 +77,8 @@ final class ClientOutput extends AbstractOutput )->toArray(); $this->menu = $client->getMenu() ? new MenuOutput($client->getMenu()) : null; + $this->position = $client->getPosition(); $this->hardwareProfile = $client->getHardwareProfile() ? new HardwareProfileOutput($client->getHardwareProfile()) : null; - $this->createdAt = $client->getCreatedAt(); $this->createdBy = $client->getCreatedBy(); } diff --git a/src/Entity/Client.php b/src/Entity/Client.php index 867fa3c..638ee48 100644 --- a/src/Entity/Client.php +++ b/src/Entity/Client.php @@ -54,6 +54,9 @@ class Client extends AbstractEntity #[ORM\Column(nullable: true)] private ?bool $validation = null; + #[ORM\Column(nullable: true)] + private ?array $position = ['x' => 0, 'y' => 0]; + public function __construct() { parent::__construct(); @@ -209,4 +212,16 @@ class Client extends AbstractEntity return $this; } + + public function getPosition(): ?array + { + return $this->position; + } + + public function setPosition(?array $position): static + { + $this->position = $position; + + return $this; + } }