139 lines
5.1 KiB
PHP
139 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace App\Dto\Input;
|
|
|
|
use App\Dto\Output\OrganizationalUnitOutput;
|
|
use App\Entity\NetworkSettings;
|
|
use App\Entity\OrganizationalUnit;
|
|
use App\Model\OrganizationalUnitTypes;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Symfony\Component\Serializer\Annotation\Groups;
|
|
use Symfony\Component\Validator\Constraints as Assert;
|
|
|
|
final class OrganizationalUnitClassroomInput
|
|
{
|
|
#[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;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?bool $projector = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?bool $board = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?int $capacity = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $proxy = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $dns = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $netmask = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $router = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $ntp = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $p2pMode = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?int $p2pTime = null;
|
|
|
|
#[Assert\Ip]
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $mcastIp = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?int $mcastSpeed = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?int $mcastPort = null;
|
|
|
|
#[Groups(['organizational-unit:write'])]
|
|
public ?string $mcastMode = 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();
|
|
$this->location = $organizationalUnit->getLocation();
|
|
$this->projector = $organizationalUnit->isProjector();
|
|
$this->board = $organizationalUnit->isBoard();
|
|
$this->capacity = $organizationalUnit->getCapacity();
|
|
$this->proxy = $organizationalUnit->getNetworkSettings()->getProxy();
|
|
$this->dns = $organizationalUnit->getNetworkSettings()->getDns();
|
|
$this->netmask = $organizationalUnit->getNetworkSettings()->getNetmask();
|
|
$this->router = $organizationalUnit->getNetworkSettings()->getRouter();
|
|
$this->ntp = $organizationalUnit->getNetworkSettings()->getNtp();
|
|
$this->p2pMode = $organizationalUnit->getNetworkSettings()->getP2pMode();
|
|
$this->p2pTime = $organizationalUnit->getNetworkSettings()->getP2pTime();
|
|
$this->mcastIp = $organizationalUnit->getNetworkSettings()->getMcastIp();
|
|
$this->mcastSpeed = $organizationalUnit->getNetworkSettings()->getMcastSpeed();
|
|
$this->mcastPort = $organizationalUnit->getNetworkSettings()->getMcastPort();
|
|
$this->mcastMode = $organizationalUnit->getNetworkSettings()->getMcastMode();
|
|
}
|
|
|
|
public function createOrUpdateEntity(
|
|
?OrganizationalUnit $organizationalUnit = null,
|
|
?EntityManagerInterface $entityManager = null
|
|
): OrganizationalUnit
|
|
{
|
|
if (!$organizationalUnit) {
|
|
$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);
|
|
$organizationalUnit->setCapacity($this->capacity);
|
|
|
|
$networkSettings = new NetworkSettings();
|
|
$networkSettings->setProxy($this->proxy);
|
|
$networkSettings->setDns($this->dns);
|
|
$networkSettings->setNetmask($this->netmask);
|
|
$networkSettings->setRouter($this->router);
|
|
$networkSettings->setNtp($this->ntp);
|
|
$networkSettings->setP2pMode($this->p2pMode);
|
|
$networkSettings->setP2pTime($this->p2pTime);
|
|
$networkSettings->setMcastIp($this->mcastIp);
|
|
$networkSettings->setMcastSpeed($this->mcastSpeed);
|
|
$networkSettings->setMcastPort($this->mcastPort);
|
|
$networkSettings->setMcastMode($this->mcastMode);
|
|
$entityManager->persist($networkSettings);
|
|
|
|
$organizationalUnit->setNetworkSettings($networkSettings);
|
|
|
|
return $organizationalUnit;
|
|
}
|
|
} |