From 74fac8d0af71019680dc0cd01db335b263cca9b4 Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Fri, 21 Jun 2024 10:29:33 +0200 Subject: [PATCH] refs #421. Some improvements in DTO output --- config/api_platform/Client.yaml | 4 ++-- config/api_platform/Hardware.yaml | 4 ++-- config/api_platform/HardwareProfile.yaml | 4 ++-- config/api_platform/HardwareType.yaml | 4 ++-- config/api_platform/Menu.yaml | 4 ++-- config/api_platform/OperativeSystem.yaml | 4 ++-- config/api_platform/OrganizationalUnit.yaml | 2 +- config/api_platform/Partition.yaml | 4 ++-- config/api_platform/User.yaml | 4 ++-- config/api_platform/UserGroup.yaml | 4 ++-- src/Dto/Input/HardwareTypeInput.php | 2 +- src/Dto/Input/OperativeSystemInput.php | 2 +- src/Dto/Output/ClientOutput.php | 2 ++ src/Dto/Output/HardwareOutput.php | 2 +- src/Dto/Output/HardwareProfileOutput.php | 2 +- src/Dto/Output/HardwareTypeOutput.php | 2 +- src/Dto/Output/NetworkSettingsOutput.php | 26 ++++++++++----------- src/Dto/Output/OperativeSystemOutput.php | 2 +- src/Dto/Output/OrganizationalUnitOutput.php | 7 +++--- src/Dto/Output/UserOutput.php | 7 +++++- src/State/Provider/HardwareTypeProvider.php | 2 +- tests/Functional/PartitionTest.php | 1 - 22 files changed, 50 insertions(+), 45 deletions(-) diff --git a/config/api_platform/Client.yaml b/config/api_platform/Client.yaml index 3dc25d5..b61769b 100644 --- a/config/api_platform/Client.yaml +++ b/config/api_platform/Client.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\ClientProcessor input: App\Dto\Input\ClientInput output: App\Dto\Output\ClientOutput - normalization_context: + normalizationContext: groups: ['default', 'client:read'] - denormalization_context: + denormalizationContext: groups: ['client:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/Hardware.yaml b/config/api_platform/Hardware.yaml index dd3ef97..c932488 100644 --- a/config/api_platform/Hardware.yaml +++ b/config/api_platform/Hardware.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\HardwareProcessor input: App\Dto\Input\HardwareInput output: App\Dto\Output\HardwareOutput - normalization_context: + normalizationContext: groups: ['default', 'hardware:read'] - denormalization_context: + denormalizationContext: groups: ['hardware:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/HardwareProfile.yaml b/config/api_platform/HardwareProfile.yaml index 5dd6c67..06c3587 100644 --- a/config/api_platform/HardwareProfile.yaml +++ b/config/api_platform/HardwareProfile.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\HardwareProfileProcessor input: App\Dto\Input\HardwareProfileInput output: App\Dto\Output\HardwareProfileOutput - normalization_context: + normalizationContext: groups: ['default', 'hardware-profile:read'] - denormalization_context: + denormalizationContext: groups: ['hardware-profile:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/HardwareType.yaml b/config/api_platform/HardwareType.yaml index 3223e15..793a9e9 100644 --- a/config/api_platform/HardwareType.yaml +++ b/config/api_platform/HardwareType.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\HardwareTypeProcessor input: App\Dto\Input\HardwareTypeInput output: App\Dto\Output\HardwareTypeOutput - normalization_context: + normalizationContext: groups: ['default', 'hardware-type:read'] - denormalization_context: + denormalizationContext: groups: ['hardware-type:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/Menu.yaml b/config/api_platform/Menu.yaml index 1fac788..54ab3bf 100644 --- a/config/api_platform/Menu.yaml +++ b/config/api_platform/Menu.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\MenuProcessor input: App\Dto\Input\MenuInput output: App\Dto\Output\MenuOutput - normalization_context: + normalizationContext: groups: ['default', 'menu:read'] - denormalization_context: + denormalizationContext: groups: ['menu:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/OperativeSystem.yaml b/config/api_platform/OperativeSystem.yaml index 988fed0..ba4ed52 100644 --- a/config/api_platform/OperativeSystem.yaml +++ b/config/api_platform/OperativeSystem.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\OperativeSystemProcessor input: App\Dto\Input\OperativeSystemInput output: App\Dto\Output\OperativeSystemOutput - normalization_context: + normalizationContext: groups: ['default', 'operative-system:read'] - denormalization_context: + denormalizationContext: groups: ['operative-system:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/OrganizationalUnit.yaml b/config/api_platform/OrganizationalUnit.yaml index e03b552..76424c9 100644 --- a/config/api_platform/OrganizationalUnit.yaml +++ b/config/api_platform/OrganizationalUnit.yaml @@ -3,7 +3,7 @@ resources: processor: App\State\Processor\OrganizationalUnitProcessor output: App\Dto\Output\OrganizationalUnitOutput input: App\Dto\Input\OrganizationalUnitInput - normalization_context: + normalizationContext: groups: ['default', 'organizational-unit:read'] denormalization_context: groups: ['organizational-unit:write'] diff --git a/config/api_platform/Partition.yaml b/config/api_platform/Partition.yaml index 1d270e7..7d09114 100644 --- a/config/api_platform/Partition.yaml +++ b/config/api_platform/Partition.yaml @@ -3,9 +3,9 @@ resources: processor: App\State\Processor\PartitionProcessor input: App\Dto\Input\PartitionInput output: App\Dto\Output\PartitionOutput - normalization_context: + normalizationContext: groups: ['default', 'partition:read'] - denormalization_context: + denormalizationContext: groups: ['partition:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/User.yaml b/config/api_platform/User.yaml index f108627..46719e5 100644 --- a/config/api_platform/User.yaml +++ b/config/api_platform/User.yaml @@ -3,9 +3,9 @@ resources: input: App\Dto\Input\UserInput output: App\Dto\Output\UserOutput processor: App\State\Processor\UserProcessor - normalization_context: + normalizationContext: groups: ['default', 'user:read'] - denormalization_context: + denormalizationContext: groups: ['user:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/config/api_platform/UserGroup.yaml b/config/api_platform/UserGroup.yaml index 0f2a80b..796e526 100644 --- a/config/api_platform/UserGroup.yaml +++ b/config/api_platform/UserGroup.yaml @@ -4,9 +4,9 @@ resources: processor: App\State\Processor\UserGroupProcessor input: App\Dto\Input\UserGroupInput output: App\Dto\Output\UserGroupOutput - normalization_context: + normalizationContext: groups: ['default', 'user-group:read'] - denormalization_context: + denormalizationContext: groups: ['user-group:write'] operations: ApiPlatform\Metadata\GetCollection: diff --git a/src/Dto/Input/HardwareTypeInput.php b/src/Dto/Input/HardwareTypeInput.php index 8279a6f..9eb0ae1 100644 --- a/src/Dto/Input/HardwareTypeInput.php +++ b/src/Dto/Input/HardwareTypeInput.php @@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert; class HardwareTypeInput { #[Assert\NotBlank] - #[Groups(['hardware-type:read'])] + #[Groups(['hardware-type:write'])] public ?string $name = null; public function __construct(?HardwareType $hardwareType = null) diff --git a/src/Dto/Input/OperativeSystemInput.php b/src/Dto/Input/OperativeSystemInput.php index e08416d..a38d809 100644 --- a/src/Dto/Input/OperativeSystemInput.php +++ b/src/Dto/Input/OperativeSystemInput.php @@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert; class OperativeSystemInput { #[Assert\NotBlank] - #[Groups(['operative-system:read'])] + #[Groups(['operative-system:write'])] public ?string $name = null; public function __construct(?OperativeSystem $operativeSystem = null) diff --git a/src/Dto/Output/ClientOutput.php b/src/Dto/Output/ClientOutput.php index 2a86bc7..5fc0b26 100644 --- a/src/Dto/Output/ClientOutput.php +++ b/src/Dto/Output/ClientOutput.php @@ -21,6 +21,7 @@ final class ClientOutput extends AbstractOutput public ?string $netiface = ''; #[Groups(['client:read'])] + #[ApiProperty(readableLink: true )] public ?OrganizationalUnitOutput $organizationalUnit = null; #[Groups(['client:read'])] @@ -30,6 +31,7 @@ final class ClientOutput extends AbstractOutput public ?MenuOutput $menu = null; #[Groups(['client:read'])] + #[ApiProperty(readableLink: true )] public ?HardwareProfileOutput $hardwareProfile = null; #[Groups(['client:read'])] diff --git a/src/Dto/Output/HardwareOutput.php b/src/Dto/Output/HardwareOutput.php index 1c0e0b8..3823f33 100644 --- a/src/Dto/Output/HardwareOutput.php +++ b/src/Dto/Output/HardwareOutput.php @@ -10,7 +10,7 @@ use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'Hardware')] final class HardwareOutput extends AbstractOutput { - #[Groups(['hardware:read'])] + #[Groups(['hardware:read', 'hardware-profile:read'])] public string $name; #[Groups(['hardware:read'])] diff --git a/src/Dto/Output/HardwareProfileOutput.php b/src/Dto/Output/HardwareProfileOutput.php index a0a8cac..ba78e6d 100644 --- a/src/Dto/Output/HardwareProfileOutput.php +++ b/src/Dto/Output/HardwareProfileOutput.php @@ -11,7 +11,7 @@ use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'HardwareProfile')] final class HardwareProfileOutput extends AbstractOutput { - #[Groups(['hardware-profile:read'])] + #[Groups(['hardware-profile:read', 'client:read'])] public ?string $description = ''; #[Groups(['hardware-profile:read'])] diff --git a/src/Dto/Output/HardwareTypeOutput.php b/src/Dto/Output/HardwareTypeOutput.php index 29516b0..860e86f 100644 --- a/src/Dto/Output/HardwareTypeOutput.php +++ b/src/Dto/Output/HardwareTypeOutput.php @@ -9,7 +9,7 @@ use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'HardwareType')] final class HardwareTypeOutput extends AbstractOutput { - #[Groups(['hardware-type:read'])] + #[Groups(['hardware-type:read', 'hardware:read'])] public string $name; public function __construct(HardwareType $hardwareType) diff --git a/src/Dto/Output/NetworkSettingsOutput.php b/src/Dto/Output/NetworkSettingsOutput.php index fa90ca2..d909e37 100644 --- a/src/Dto/Output/NetworkSettingsOutput.php +++ b/src/Dto/Output/NetworkSettingsOutput.php @@ -9,46 +9,46 @@ use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'NetworkSettings')] final class NetworkSettingsOutput extends AbstractOutput { - #[Groups(['network-settings:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $proxy = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $dns = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $netmask = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $router = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $ntp = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $p2pMode = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?int $p2pTime = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $mcastIp = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?int $mcastSpeed = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?int $mcastPort = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?string $mcastMode = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?MenuOutput $menu = null; #[Groups(['organizational-unit:read'])] public ?HardwareProfileOutput $hardwareProfile = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] public ?bool $validation = null; #[Groups(['organizational-unit:read'])] diff --git a/src/Dto/Output/OperativeSystemOutput.php b/src/Dto/Output/OperativeSystemOutput.php index 8e9002a..39987c2 100644 --- a/src/Dto/Output/OperativeSystemOutput.php +++ b/src/Dto/Output/OperativeSystemOutput.php @@ -9,7 +9,7 @@ use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'OperativeSystem')] final class OperativeSystemOutput extends AbstractOutput { - #[Groups(['operative-system:read'])] + #[Groups(['operative-system:read', 'partition:read'])] public string $name; public function __construct(OperativeSystem $operativeSystem) diff --git a/src/Dto/Output/OrganizationalUnitOutput.php b/src/Dto/Output/OrganizationalUnitOutput.php index 3dbc75f..c372ac3 100644 --- a/src/Dto/Output/OrganizationalUnitOutput.php +++ b/src/Dto/Output/OrganizationalUnitOutput.php @@ -4,14 +4,13 @@ namespace App\Dto\Output; use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\Get; -use App\Entity\ClientProperties; use App\Entity\OrganizationalUnit; use Symfony\Component\Serializer\Annotation\Groups; #[Get(shortName: 'OrganizationalUnit')] final class OrganizationalUnitOutput extends AbstractOutput { - #[Groups(['organizational-unit:read'])] + #[Groups(['organizational-unit:read', "client:read", "user:read"])] public string $name; #[Groups(['organizational-unit:read'])] @@ -29,7 +28,7 @@ final class OrganizationalUnitOutput extends AbstractOutput #[Groups(['organizational-unit:read'])] public ?int $capacity = null; - #[Groups(['organizational-unit:read'])] + #[Groups(['organizational-unit:read', "client:read"])] public string $type; #[Groups(['organizational-unit:read'])] @@ -38,7 +37,7 @@ final class OrganizationalUnitOutput extends AbstractOutput #[Groups(['organizational-unit:read'])] public string $path; - #[Groups(['organizational-unit:read'])] + #[Groups(['organizational-unit:read', "client:read"])] #[ApiProperty(readableLink: true)] public ?NetworkSettingsOutput $networkSettings = null; diff --git a/src/Dto/Output/UserOutput.php b/src/Dto/Output/UserOutput.php index 5cd4d72..bd7088b 100644 --- a/src/Dto/Output/UserOutput.php +++ b/src/Dto/Output/UserOutput.php @@ -3,6 +3,7 @@ namespace App\Dto\Output; use ApiPlatform\Metadata\Get; +use App\Entity\OrganizationalUnit; use App\Entity\User; use Symfony\Component\Serializer\Annotation\Groups; @@ -36,7 +37,11 @@ final class UserOutput extends AbstractOutput $this->roles = $user->getRoles(); $this->enabled = $user->isEnabled(); $this->userGroups = $user->getUserGroups()->toArray(); - $this->allowedOrganizationalUnits = $user->getAllowedOrganizationalUnits()->toArray(); + + $this->allowedOrganizationalUnits = $user->getAllowedOrganizationalUnits()->map( + fn(OrganizationalUnit $organizationalUnit) => new OrganizationalUnitOutput($organizationalUnit) + )->toArray(); + $this->createAt = $user->getCreatedAt(); $this->createBy = $user->getCreatedBy(); } diff --git a/src/State/Provider/HardwareTypeProvider.php b/src/State/Provider/HardwareTypeProvider.php index 891097d..f4e78cd 100644 --- a/src/State/Provider/HardwareTypeProvider.php +++ b/src/State/Provider/HardwareTypeProvider.php @@ -59,7 +59,7 @@ class HardwareTypeProvider implements ProviderInterface $item = $this->itemProvider->provide($operation, $uriVariables, $context); if (!$item) { - throw new NotFoundHttpException('Operative system not found'); + throw new NotFoundHttpException('hardware type not found'); } return new HardwareTypeOutput($item); diff --git a/tests/Functional/PartitionTest.php b/tests/Functional/PartitionTest.php index 0c5a577..4bd3f75 100644 --- a/tests/Functional/PartitionTest.php +++ b/tests/Functional/PartitionTest.php @@ -91,7 +91,6 @@ class PartitionTest extends AbstractTest '@context' => '/contexts/PartitionOutput', '@type' => 'Partition', 'size' => 100, - 'operativeSystem' => $osIri, 'memoryUsage' => 100 ]); }