ogcore/src/Dto/Input/OrganizationalUnitClassroom...

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;
}
}