refs #421. Some improvements in DTO output

pull/7/head
Manuel Aranda Rosales 2024-06-21 10:29:33 +02:00
parent 5d1b553c0b
commit 74fac8d0af
22 changed files with 50 additions and 45 deletions

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\ClientProcessor processor: App\State\Processor\ClientProcessor
input: App\Dto\Input\ClientInput input: App\Dto\Input\ClientInput
output: App\Dto\Output\ClientOutput output: App\Dto\Output\ClientOutput
normalization_context: normalizationContext:
groups: ['default', 'client:read'] groups: ['default', 'client:read']
denormalization_context: denormalizationContext:
groups: ['client:write'] groups: ['client:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\HardwareProcessor processor: App\State\Processor\HardwareProcessor
input: App\Dto\Input\HardwareInput input: App\Dto\Input\HardwareInput
output: App\Dto\Output\HardwareOutput output: App\Dto\Output\HardwareOutput
normalization_context: normalizationContext:
groups: ['default', 'hardware:read'] groups: ['default', 'hardware:read']
denormalization_context: denormalizationContext:
groups: ['hardware:write'] groups: ['hardware:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\HardwareProfileProcessor processor: App\State\Processor\HardwareProfileProcessor
input: App\Dto\Input\HardwareProfileInput input: App\Dto\Input\HardwareProfileInput
output: App\Dto\Output\HardwareProfileOutput output: App\Dto\Output\HardwareProfileOutput
normalization_context: normalizationContext:
groups: ['default', 'hardware-profile:read'] groups: ['default', 'hardware-profile:read']
denormalization_context: denormalizationContext:
groups: ['hardware-profile:write'] groups: ['hardware-profile:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\HardwareTypeProcessor processor: App\State\Processor\HardwareTypeProcessor
input: App\Dto\Input\HardwareTypeInput input: App\Dto\Input\HardwareTypeInput
output: App\Dto\Output\HardwareTypeOutput output: App\Dto\Output\HardwareTypeOutput
normalization_context: normalizationContext:
groups: ['default', 'hardware-type:read'] groups: ['default', 'hardware-type:read']
denormalization_context: denormalizationContext:
groups: ['hardware-type:write'] groups: ['hardware-type:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\MenuProcessor processor: App\State\Processor\MenuProcessor
input: App\Dto\Input\MenuInput input: App\Dto\Input\MenuInput
output: App\Dto\Output\MenuOutput output: App\Dto\Output\MenuOutput
normalization_context: normalizationContext:
groups: ['default', 'menu:read'] groups: ['default', 'menu:read']
denormalization_context: denormalizationContext:
groups: ['menu:write'] groups: ['menu:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\OperativeSystemProcessor processor: App\State\Processor\OperativeSystemProcessor
input: App\Dto\Input\OperativeSystemInput input: App\Dto\Input\OperativeSystemInput
output: App\Dto\Output\OperativeSystemOutput output: App\Dto\Output\OperativeSystemOutput
normalization_context: normalizationContext:
groups: ['default', 'operative-system:read'] groups: ['default', 'operative-system:read']
denormalization_context: denormalizationContext:
groups: ['operative-system:write'] groups: ['operative-system:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,7 +3,7 @@ resources:
processor: App\State\Processor\OrganizationalUnitProcessor processor: App\State\Processor\OrganizationalUnitProcessor
output: App\Dto\Output\OrganizationalUnitOutput output: App\Dto\Output\OrganizationalUnitOutput
input: App\Dto\Input\OrganizationalUnitInput input: App\Dto\Input\OrganizationalUnitInput
normalization_context: normalizationContext:
groups: ['default', 'organizational-unit:read'] groups: ['default', 'organizational-unit:read']
denormalization_context: denormalization_context:
groups: ['organizational-unit:write'] groups: ['organizational-unit:write']

View File

@ -3,9 +3,9 @@ resources:
processor: App\State\Processor\PartitionProcessor processor: App\State\Processor\PartitionProcessor
input: App\Dto\Input\PartitionInput input: App\Dto\Input\PartitionInput
output: App\Dto\Output\PartitionOutput output: App\Dto\Output\PartitionOutput
normalization_context: normalizationContext:
groups: ['default', 'partition:read'] groups: ['default', 'partition:read']
denormalization_context: denormalizationContext:
groups: ['partition:write'] groups: ['partition:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -3,9 +3,9 @@ resources:
input: App\Dto\Input\UserInput input: App\Dto\Input\UserInput
output: App\Dto\Output\UserOutput output: App\Dto\Output\UserOutput
processor: App\State\Processor\UserProcessor processor: App\State\Processor\UserProcessor
normalization_context: normalizationContext:
groups: ['default', 'user:read'] groups: ['default', 'user:read']
denormalization_context: denormalizationContext:
groups: ['user:write'] groups: ['user:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -4,9 +4,9 @@ resources:
processor: App\State\Processor\UserGroupProcessor processor: App\State\Processor\UserGroupProcessor
input: App\Dto\Input\UserGroupInput input: App\Dto\Input\UserGroupInput
output: App\Dto\Output\UserGroupOutput output: App\Dto\Output\UserGroupOutput
normalization_context: normalizationContext:
groups: ['default', 'user-group:read'] groups: ['default', 'user-group:read']
denormalization_context: denormalizationContext:
groups: ['user-group:write'] groups: ['user-group:write']
operations: operations:
ApiPlatform\Metadata\GetCollection: ApiPlatform\Metadata\GetCollection:

View File

@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert;
class HardwareTypeInput class HardwareTypeInput
{ {
#[Assert\NotBlank] #[Assert\NotBlank]
#[Groups(['hardware-type:read'])] #[Groups(['hardware-type:write'])]
public ?string $name = null; public ?string $name = null;
public function __construct(?HardwareType $hardwareType = null) public function __construct(?HardwareType $hardwareType = null)

View File

@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert;
class OperativeSystemInput class OperativeSystemInput
{ {
#[Assert\NotBlank] #[Assert\NotBlank]
#[Groups(['operative-system:read'])] #[Groups(['operative-system:write'])]
public ?string $name = null; public ?string $name = null;
public function __construct(?OperativeSystem $operativeSystem = null) public function __construct(?OperativeSystem $operativeSystem = null)

View File

@ -21,6 +21,7 @@ final class ClientOutput extends AbstractOutput
public ?string $netiface = ''; public ?string $netiface = '';
#[Groups(['client:read'])] #[Groups(['client:read'])]
#[ApiProperty(readableLink: true )]
public ?OrganizationalUnitOutput $organizationalUnit = null; public ?OrganizationalUnitOutput $organizationalUnit = null;
#[Groups(['client:read'])] #[Groups(['client:read'])]
@ -30,6 +31,7 @@ final class ClientOutput extends AbstractOutput
public ?MenuOutput $menu = null; public ?MenuOutput $menu = null;
#[Groups(['client:read'])] #[Groups(['client:read'])]
#[ApiProperty(readableLink: true )]
public ?HardwareProfileOutput $hardwareProfile = null; public ?HardwareProfileOutput $hardwareProfile = null;
#[Groups(['client:read'])] #[Groups(['client:read'])]

View File

@ -10,7 +10,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'Hardware')] #[Get(shortName: 'Hardware')]
final class HardwareOutput extends AbstractOutput final class HardwareOutput extends AbstractOutput
{ {
#[Groups(['hardware:read'])] #[Groups(['hardware:read', 'hardware-profile:read'])]
public string $name; public string $name;
#[Groups(['hardware:read'])] #[Groups(['hardware:read'])]

View File

@ -11,7 +11,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'HardwareProfile')] #[Get(shortName: 'HardwareProfile')]
final class HardwareProfileOutput extends AbstractOutput final class HardwareProfileOutput extends AbstractOutput
{ {
#[Groups(['hardware-profile:read'])] #[Groups(['hardware-profile:read', 'client:read'])]
public ?string $description = ''; public ?string $description = '';
#[Groups(['hardware-profile:read'])] #[Groups(['hardware-profile:read'])]

View File

@ -9,7 +9,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'HardwareType')] #[Get(shortName: 'HardwareType')]
final class HardwareTypeOutput extends AbstractOutput final class HardwareTypeOutput extends AbstractOutput
{ {
#[Groups(['hardware-type:read'])] #[Groups(['hardware-type:read', 'hardware:read'])]
public string $name; public string $name;
public function __construct(HardwareType $hardwareType) public function __construct(HardwareType $hardwareType)

View File

@ -9,46 +9,46 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'NetworkSettings')] #[Get(shortName: 'NetworkSettings')]
final class NetworkSettingsOutput extends AbstractOutput final class NetworkSettingsOutput extends AbstractOutput
{ {
#[Groups(['network-settings:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $proxy = null; public ?string $proxy = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $dns = null; public ?string $dns = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $netmask = null; public ?string $netmask = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $router = null; public ?string $router = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $ntp = null; public ?string $ntp = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $p2pMode = null; public ?string $p2pMode = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?int $p2pTime = null; public ?int $p2pTime = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $mcastIp = null; public ?string $mcastIp = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?int $mcastSpeed = null; public ?int $mcastSpeed = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?int $mcastPort = null; public ?int $mcastPort = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?string $mcastMode = null; public ?string $mcastMode = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?MenuOutput $menu = null; public ?MenuOutput $menu = null;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
public ?HardwareProfileOutput $hardwareProfile = null; public ?HardwareProfileOutput $hardwareProfile = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?bool $validation = null; public ?bool $validation = null;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]

View File

@ -9,7 +9,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'OperativeSystem')] #[Get(shortName: 'OperativeSystem')]
final class OperativeSystemOutput extends AbstractOutput final class OperativeSystemOutput extends AbstractOutput
{ {
#[Groups(['operative-system:read'])] #[Groups(['operative-system:read', 'partition:read'])]
public string $name; public string $name;
public function __construct(OperativeSystem $operativeSystem) public function __construct(OperativeSystem $operativeSystem)

View File

@ -4,14 +4,13 @@ namespace App\Dto\Output;
use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\Get;
use App\Entity\ClientProperties;
use App\Entity\OrganizationalUnit; use App\Entity\OrganizationalUnit;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
#[Get(shortName: 'OrganizationalUnit')] #[Get(shortName: 'OrganizationalUnit')]
final class OrganizationalUnitOutput extends AbstractOutput final class OrganizationalUnitOutput extends AbstractOutput
{ {
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read', "client:read", "user:read"])]
public string $name; public string $name;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
@ -29,7 +28,7 @@ final class OrganizationalUnitOutput extends AbstractOutput
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
public ?int $capacity = null; public ?int $capacity = null;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read', "client:read"])]
public string $type; public string $type;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
@ -38,7 +37,7 @@ final class OrganizationalUnitOutput extends AbstractOutput
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
public string $path; public string $path;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read', "client:read"])]
#[ApiProperty(readableLink: true)] #[ApiProperty(readableLink: true)]
public ?NetworkSettingsOutput $networkSettings = null; public ?NetworkSettingsOutput $networkSettings = null;

View File

@ -3,6 +3,7 @@
namespace App\Dto\Output; namespace App\Dto\Output;
use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\Get;
use App\Entity\OrganizationalUnit;
use App\Entity\User; use App\Entity\User;
use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\Groups;
@ -36,7 +37,11 @@ final class UserOutput extends AbstractOutput
$this->roles = $user->getRoles(); $this->roles = $user->getRoles();
$this->enabled = $user->isEnabled(); $this->enabled = $user->isEnabled();
$this->userGroups = $user->getUserGroups()->toArray(); $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->createAt = $user->getCreatedAt();
$this->createBy = $user->getCreatedBy(); $this->createBy = $user->getCreatedBy();
} }

View File

@ -59,7 +59,7 @@ class HardwareTypeProvider implements ProviderInterface
$item = $this->itemProvider->provide($operation, $uriVariables, $context); $item = $this->itemProvider->provide($operation, $uriVariables, $context);
if (!$item) { if (!$item) {
throw new NotFoundHttpException('Operative system not found'); throw new NotFoundHttpException('hardware type not found');
} }
return new HardwareTypeOutput($item); return new HardwareTypeOutput($item);

View File

@ -91,7 +91,6 @@ class PartitionTest extends AbstractTest
'@context' => '/contexts/PartitionOutput', '@context' => '/contexts/PartitionOutput',
'@type' => 'Partition', '@type' => 'Partition',
'size' => 100, 'size' => 100,
'operativeSystem' => $osIri,
'memoryUsage' => 100 'memoryUsage' => 100
]); ]);
} }