110 lines
4.2 KiB
PHP
110 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace App\Dto\Output;
|
|
|
|
use ApiPlatform\Metadata\ApiProperty;
|
|
use ApiPlatform\Metadata\Get;
|
|
use App\Entity\Client;
|
|
use App\Entity\OrganizationalUnit;
|
|
use Symfony\Component\Serializer\Annotation\Groups;
|
|
|
|
#[Get(shortName: 'OrganizationalUnit')]
|
|
final class OrganizationalUnitOutput extends AbstractOutput
|
|
{
|
|
#[Groups(['organizational-unit:read', "client:read", "user:read", 'organizational-unit:read:collection:short', 'software-profile:read'])]
|
|
public string $name;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?string $comments = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?string $description = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?string $location = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?bool $projector = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?bool $board = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?int $capacity = null;
|
|
|
|
#[Groups(['organizational-unit:read', "client:read"])]
|
|
public string $type;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?self $parent = null;
|
|
|
|
#[Groups(['organizational-unit:read', 'client:read', 'organizational-unit:read:collection:short'])]
|
|
public string $path;
|
|
|
|
#[Groups(['organizational-unit:read', "client:read"])]
|
|
#[ApiProperty(readableLink: true)]
|
|
public ?NetworkSettingsOutput $networkSettings = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public array $children = [];
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public array $clients = [];
|
|
|
|
#[Groups(['organizational-unit:read', "client:read"])]
|
|
#[ApiProperty(readableLink: true)]
|
|
public ?RemoteCalendarOutput $remoteCalendar = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?bool $remotePc = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?bool $available = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?bool $excludeParentChanges = null;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public \DateTime $createdAt;
|
|
|
|
#[Groups(['organizational-unit:read'])]
|
|
public ?string $createdBy = null;
|
|
|
|
public function __construct(OrganizationalUnit $organizationalUnit, array $context = [])
|
|
{
|
|
parent::__construct($organizationalUnit);
|
|
|
|
$this->name = $organizationalUnit->getName();
|
|
$this->comments = $organizationalUnit->getComments();
|
|
$this->description = $organizationalUnit->getDescription();
|
|
$this->location = $organizationalUnit->getLocation();
|
|
$this->projector = $organizationalUnit->isProjector();
|
|
$this->board = $organizationalUnit->isBoard();
|
|
$this->capacity = $organizationalUnit->getCapacity();
|
|
$this->type = $organizationalUnit->getType();
|
|
$this->remotePc = $organizationalUnit->isRemotePc();
|
|
$this->available = $organizationalUnit->getRemoteCalendar() && $organizationalUnit->getRemoteCalendar()->isAvailable();
|
|
$this->networkSettings = $organizationalUnit->getNetworkSettings() ? new NetworkSettingsOutput($organizationalUnit->getNetworkSettings()) : null;
|
|
$this->remoteCalendar = $organizationalUnit->getRemoteCalendar() ? new RemoteCalendarOutput($organizationalUnit->getRemoteCalendar()) : null;
|
|
if ($organizationalUnit->getParent()) {
|
|
$this->parent = new self($organizationalUnit->getParent());
|
|
}
|
|
|
|
if (isset($context['groups']) && in_array('organizational-unit:read', $context['groups'])) {
|
|
$this->children = $organizationalUnit->getOrganizationalUnits()->map(
|
|
fn(OrganizationalUnit $organizationalUnit) => new self($organizationalUnit, $context)
|
|
)->toArray();
|
|
}
|
|
|
|
if (isset($context['groups']) && in_array('organizational-unit:read', $context['groups'])) {
|
|
$this->clients = $organizationalUnit->getClients()->map(
|
|
fn(Client $client) => new ClientOutput($client)
|
|
)->toArray();
|
|
}
|
|
|
|
$this->excludeParentChanges = $organizationalUnit->isExcludeParentChanges();
|
|
$this->path = $organizationalUnit->getPath();
|
|
$this->createdAt = $organizationalUnit->getCreatedAt();
|
|
$this->createdBy = $organizationalUnit->getCreatedBy();
|
|
}
|
|
} |