diff --git a/config/api_platform/OrganizationalUnit.yaml b/config/api_platform/OrganizationalUnit.yaml index 2b7e137..72fcdbf 100644 --- a/config/api_platform/OrganizationalUnit.yaml +++ b/config/api_platform/OrganizationalUnit.yaml @@ -2,6 +2,7 @@ resources: App\Entity\OrganizationalUnit: processor: App\State\Processor\OrganizationalUnitProcessor output: App\Dto\Output\OrganizationalUnitOutput + input: App\Dto\Input\OrganizationalUnitInput normalization_context: groups: ['default', 'organizational-unit:read'] denormalization_context: diff --git a/docker-compose.yaml b/docker-compose.yaml index 8b3b902..aad1b74 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -38,6 +38,8 @@ services: depends_on: - database environment: + XDEBUG_CLIENT_HOST: 127.17.0.1 + XDEBUG_CLIENT_PORT: 9003 PHP_IDE_CONFIG: serverName=ogcore networks: - ogcore-network diff --git a/docker/xdebug.ini b/docker/xdebug.ini index f717c09..aa01684 100644 --- a/docker/xdebug.ini +++ b/docker/xdebug.ini @@ -1,4 +1,4 @@ xdebug.mode=debug xdebug.start_with_request=yes -xdebug.client_host=172.17.0.1/ -xdebug.client_port=9003 \ No newline at end of file +xdebug.client_host=${XDEBUG_CLIENT_HOST} +xdebug.client_port=${XDEBUG_CLIENT_PORT} \ No newline at end of file diff --git a/src/Dto/Input/OrganizationalUnitClassroomGroupInput.php b/src/Dto/Input/OrganizationalUnitClassroomGroupInput.php index 8b8f33f..403fc8a 100644 --- a/src/Dto/Input/OrganizationalUnitClassroomGroupInput.php +++ b/src/Dto/Input/OrganizationalUnitClassroomGroupInput.php @@ -2,52 +2,13 @@ namespace App\Dto\Input; -use App\Dto\Output\OrganizationalUnitOutput; use App\Entity\OrganizationalUnit; use App\Model\OrganizationalUnitTypes; -use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\Validator\Constraints as Assert; -final class OrganizationalUnitClassroomGroupInput +final class OrganizationalUnitClassroomGroupInput extends OrganizationalUnitInput { - #[Assert\NotBlank] - #[Groups(['organizational-unit:write'])] - public ?string $name = null; - - #[Assert\NotNull] - #[Groups(['organizational-unit:write'])] - public ?OrganizationalUnitOutput $parent = null; - - #[Groups(['organizational-unit:write'])] - public ?string $description = null; - - #[Groups(['organizational-unit:write'])] - public ?string $comments = null; - public function __construct(?OrganizationalUnit $organizationalUnit = null) { - if (!$organizationalUnit) { - return; - } - - $this->name = $organizationalUnit->getName(); - $this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent()); - $this->description = $organizationalUnit->getDescription(); - $this->comments = $organizationalUnit->getComments(); - } - - public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit - { - if (!$organizationalUnit) { - $organizationalUnit = new OrganizationalUnit(); - } - - $organizationalUnit->setName($this->name); - $organizationalUnit->setParent($this->parent->getEntity()); - $organizationalUnit->setType(OrganizationalUnitTypes::CLASSROOMS_GROUP); - $organizationalUnit->setDescription($this->description); - $organizationalUnit->setComments($this->comments); - - return $organizationalUnit; + parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLASSROOMS_GROUP); } } \ No newline at end of file diff --git a/src/Dto/Input/OrganizationalUnitClassroomInput.php b/src/Dto/Input/OrganizationalUnitClassroomInput.php index 7603906..8231b46 100644 --- a/src/Dto/Input/OrganizationalUnitClassroomInput.php +++ b/src/Dto/Input/OrganizationalUnitClassroomInput.php @@ -2,7 +2,6 @@ namespace App\Dto\Input; -use App\Dto\Output\OrganizationalUnitOutput; use App\Entity\NetworkSettings; use App\Entity\OrganizationalUnit; use App\Model\OrganizationalUnitTypes; @@ -10,22 +9,8 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; -final class OrganizationalUnitClassroomInput +final class OrganizationalUnitClassroomInput extends OrganizationalUnitInput { - #[Assert\NotBlank] - #[Groups(['organizational-unit:write'])] - public ?string $name = null; - - #[Assert\NotNull] - #[Groups(['organizational-unit:write', 'organizational-unit:patch'])] - public ?OrganizationalUnitOutput $parent = null; - - #[Groups(['organizational-unit:write'])] - public ?string $description = null; - - #[Groups(['organizational-unit:write'])] - public ?string $comments = null; - #[Groups(['organizational-unit:write'])] public ?string $location = null; @@ -74,14 +59,12 @@ final class OrganizationalUnitClassroomInput public function __construct(?OrganizationalUnit $organizationalUnit = null) { + parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLASSROOM); + if (!$organizationalUnit) { return; } - $this->name = $organizationalUnit->getName(); - $this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent()); - $this->description = $organizationalUnit->getDescription(); - $this->comments = $organizationalUnit->getComments(); $this->location = $organizationalUnit->getLocation(); $this->projector = $organizationalUnit->isProjector(); $this->board = $organizationalUnit->isBoard(); @@ -108,11 +91,7 @@ final class OrganizationalUnitClassroomInput $organizationalUnit = new OrganizationalUnit(); } - $organizationalUnit->setName($this->name); $organizationalUnit->setType(OrganizationalUnitTypes::CLASSROOM); - $organizationalUnit->setParent($this->parent->getEntity()); - $organizationalUnit->setDescription($this->description); - $organizationalUnit->setComments($this->comments); $organizationalUnit->setLocation($this->location); $organizationalUnit->setProjector($this->projector); $organizationalUnit->setBoard($this->board); diff --git a/src/Dto/Input/OrganizationalUnitClientGroupInput.php b/src/Dto/Input/OrganizationalUnitClientGroupInput.php index bbc9458..2a4cb3b 100644 --- a/src/Dto/Input/OrganizationalUnitClientGroupInput.php +++ b/src/Dto/Input/OrganizationalUnitClientGroupInput.php @@ -2,52 +2,13 @@ namespace App\Dto\Input; -use App\Dto\Output\OrganizationalUnitOutput; use App\Entity\OrganizationalUnit; use App\Model\OrganizationalUnitTypes; -use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\Validator\Constraints as Assert; -final class OrganizationalUnitClientGroupInput +final class OrganizationalUnitClientGroupInput extends OrganizationalUnitInput { - #[Assert\NotBlank] - #[Groups(['organizational-unit:write'])] - public ?string $name = null; - - #[Assert\NotNull] - #[Groups(['organizational-unit:write'])] - public ?OrganizationalUnitOutput $parent = null; - - #[Groups(['organizational-unit:write'])] - public ?string $description = null; - - #[Groups(['organizational-unit:write'])] - public ?string $comments = null; - public function __construct(?OrganizationalUnit $organizationalUnit = null) { - if (!$organizationalUnit) { - return; - } - - $this->name = $organizationalUnit->getName(); - $this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent()); - $this->description = $organizationalUnit->getDescription(); - $this->comments = $organizationalUnit->getComments(); - } - - public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit - { - if (!$organizationalUnit) { - $organizationalUnit = new OrganizationalUnit(); - } - - $organizationalUnit->setName($this->name); - $organizationalUnit->setParent($this->parent->getEntity()); - $organizationalUnit->setType(OrganizationalUnitTypes::CLIENTS_GROUP); - $organizationalUnit->setDescription($this->description); - $organizationalUnit->setComments($this->comments); - - return $organizationalUnit; + parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLIENTS_GROUP); } } \ No newline at end of file diff --git a/src/Dto/Input/OrganizationalUnitInput.php b/src/Dto/Input/OrganizationalUnitInput.php new file mode 100644 index 0000000..4906ccc --- /dev/null +++ b/src/Dto/Input/OrganizationalUnitInput.php @@ -0,0 +1,55 @@ +name = $organizationalUnit->getName(); + if ($organizationalUnit->getParent()) { + $this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent()); + } + $this->description = $organizationalUnit->getDescription(); + $this->comments = $organizationalUnit->getComments(); + } + + public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit + { + if (!$organizationalUnit) { + $organizationalUnit = new OrganizationalUnit(); + } + + $organizationalUnit->setName($this->name); + if ($this->parent) { + $organizationalUnit->setParent($this->parent->getEntity()); + } + $organizationalUnit->setDescription($this->description); + $organizationalUnit->setComments($this->comments); + $organizationalUnit->setType($this->type); + + return $organizationalUnit; + } +} \ No newline at end of file diff --git a/src/Dto/Input/OrganizationalUnitRootInput.php b/src/Dto/Input/OrganizationalUnitRootInput.php index 27a36f3..b4aa96b 100644 --- a/src/Dto/Input/OrganizationalUnitRootInput.php +++ b/src/Dto/Input/OrganizationalUnitRootInput.php @@ -4,43 +4,11 @@ namespace App\Dto\Input; use App\Entity\OrganizationalUnit; use App\Model\OrganizationalUnitTypes; -use Symfony\Component\Serializer\Annotation\Groups; -use Symfony\Component\Validator\Constraints as Assert; -final class OrganizationalUnitRootInput +final class OrganizationalUnitRootInput extends OrganizationalUnitInput { - #[Assert\NotBlank] - #[Groups(['organizational-unit:write'])] - public ?string $name = null; - - #[Groups(['organizational-unit:write'])] - public ?string $description = null; - - #[Groups(['organizational-unit:write'])] - public ?string $comments = null; - public function __construct(?OrganizationalUnit $organizationalUnit = null) { - if (!$organizationalUnit) { - return; - } - - $this->name = $organizationalUnit->getName(); - $this->description = $organizationalUnit->getDescription(); - $this->comments = $organizationalUnit->getComments(); - } - - public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit - { - if (!$organizationalUnit) { - $organizationalUnit = new OrganizationalUnit(); - } - - $organizationalUnit->setName($this->name); - $organizationalUnit->setType(OrganizationalUnitTypes::ORGANIZATIONAL_UNIT); - $organizationalUnit->setDescription($this->description); - $organizationalUnit->setComments($this->comments); - - return $organizationalUnit; + parent::__construct($organizationalUnit, OrganizationalUnitTypes::ORGANIZATIONAL_UNIT); } } \ No newline at end of file diff --git a/src/Dto/Output/ClientOutput.php b/src/Dto/Output/ClientOutput.php index fd48afd..64f064b 100644 --- a/src/Dto/Output/ClientOutput.php +++ b/src/Dto/Output/ClientOutput.php @@ -20,7 +20,7 @@ final class ClientOutput extends AbstractOutput public ?string $netiface = ''; #[Groups(['client:read'])] - public ?OrganizationalUnit $organizationalUnit = null; + public ?OrganizationalUnitOutput $organizationalUnit = null; #[Groups(['client:read'])] public \DateTime $createAt; @@ -35,7 +35,7 @@ final class ClientOutput extends AbstractOutput $this->name = $client->getName(); $this->serialNumber = $client->getSerialNumber(); $this->netiface = $client->getNetiface(); - $this->organizationalUnit = $client->getOrganizationalUnit(); + $this->organizationalUnit = new OrganizationalUnitOutput($client->getOrganizationalUnit()); $this->createAt = $client->getCreatedAt(); $this->createBy = $client->getCreatedBy(); } diff --git a/src/Dto/Output/OrganizationalUnitOutput.php b/src/Dto/Output/OrganizationalUnitOutput.php index 2ab65e5..393c154 100644 --- a/src/Dto/Output/OrganizationalUnitOutput.php +++ b/src/Dto/Output/OrganizationalUnitOutput.php @@ -2,7 +2,6 @@ namespace App\Dto\Output; -use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\Get; use App\Entity\OrganizationalUnit; use Symfony\Component\Serializer\Annotation\Groups; diff --git a/src/State/Processor/OrganizationalUnitProcessor.php b/src/State/Processor/OrganizationalUnitProcessor.php index f307079..8238321 100644 --- a/src/State/Processor/OrganizationalUnitProcessor.php +++ b/src/State/Processor/OrganizationalUnitProcessor.php @@ -12,6 +12,7 @@ use ApiPlatform\Validator\ValidatorInterface; use App\Dto\Input\OrganizationalUnitClassroomGroupInput; use App\Dto\Input\OrganizationalUnitClassroomInput; use App\Dto\Input\OrganizationalUnitClientGroupInput; +use App\Dto\Input\OrganizationalUnitInput; use App\Dto\Input\OrganizationalUnitRootInput; use App\Dto\Output\OrganizationalUnitOutput; use App\Repository\OrganizationalUnitRepository; @@ -54,7 +55,7 @@ class OrganizationalUnitProcessor implements ProcessorInterface throw new \Exception(sprintf('data is not an instance of %s, %s, %s, or %s', OrganizationalUnitRootInput::class, OrganizationalUnitClassroomInput::class, - OrganizationalUnitClientGroupInput::class, + OrganizationalUnitInput::class, OrganizationalUnitClassroomGroupInput::class )); } diff --git a/src/State/Provider/OrganizationalUnitProvider.php b/src/State/Provider/OrganizationalUnitProvider.php index be6031d..b55385e 100644 --- a/src/State/Provider/OrganizationalUnitProvider.php +++ b/src/State/Provider/OrganizationalUnitProvider.php @@ -12,6 +12,7 @@ use ApiPlatform\State\ProviderInterface; use App\Dto\Input\OrganizationalUnitClassroomGroupInput; use App\Dto\Input\OrganizationalUnitClassroomInput; use App\Dto\Input\OrganizationalUnitClientGroupInput; +use App\Dto\Input\OrganizationalUnitInput; use App\Dto\Input\OrganizationalUnitRootInput; use App\Dto\Input\UserGroupInput; use App\Dto\Output\OrganizationalUnitOutput;