refs #436. Change parent ou

pull/7/head
Manuel Aranda Rosales 2024-07-15 08:16:37 +02:00
parent e4e9e3c07f
commit 8e8947cdfa
7 changed files with 20 additions and 7 deletions

View File

@ -3,10 +3,13 @@
namespace App\Controller; namespace App\Controller;
use App\Dto\Input\OrganizationalUnitInput; use App\Dto\Input\OrganizationalUnitInput;
use App\Dto\Output\OrganizationalUnitOutput;
use App\Entity\OrganizationalUnit; use App\Entity\OrganizationalUnit;
use App\Handler\OrganizationalUnitChangeParentHandler; use App\Handler\OrganizationalUnitChangeParentHandler;
use App\Repository\OrganizationalUnitRepository; use App\Repository\OrganizationalUnitRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
class OrganizationalUnitChangeParentAction extends AbstractController class OrganizationalUnitChangeParentAction extends AbstractController
{ {
@ -17,10 +20,10 @@ class OrganizationalUnitChangeParentAction extends AbstractController
} }
public function __invoke(OrganizationalUnit $organizationalUnit): OrganizationalUnitInput public function __invoke(OrganizationalUnit $organizationalUnit): JsonResponse
{ {
$this->organizationalUnitChangeParentHandler->handle($organizationalUnit); $this->organizationalUnitChangeParentHandler->handle($organizationalUnit);
return new OrganizationalUnitInput($organizationalUnit); return new JsonResponse(data: 'Organizational unit parent changed successfully', status: Response::HTTP_OK);
} }
} }

View File

@ -31,6 +31,9 @@ final class ClientOutput extends AbstractOutput
#[Groups(['client:read'])] #[Groups(['client:read'])]
public ?string $netiface = ''; public ?string $netiface = '';
#[Groups(['client:read'])]
public ?string $netDriver = '';
#[Groups(['client:read'])] #[Groups(['client:read'])]
#[ApiProperty(readableLink: true)] #[ApiProperty(readableLink: true)]
public ?OrganizationalUnitOutput $organizationalUnit = null; public ?OrganizationalUnitOutput $organizationalUnit = null;
@ -60,6 +63,7 @@ final class ClientOutput extends AbstractOutput
$this->mac = $client->getMac(); $this->mac = $client->getMac();
$this->ip = $client->getIp(); $this->ip = $client->getIp();
$this->netiface = $client->getNetiface(); $this->netiface = $client->getNetiface();
$this->netDriver = $client->getNetDriver();
if ($client->getOrganizationalUnit()) { if ($client->getOrganizationalUnit()) {
$this->organizationalUnit = new OrganizationalUnitOutput($client->getOrganizationalUnit()); $this->organizationalUnit = new OrganizationalUnitOutput($client->getOrganizationalUnit());

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', 'client:read'])] #[Groups(['hardware-profile:read', 'client:read', 'organizational-unit:read'])]
public ?string $description = ''; public ?string $description = '';
#[Groups(['hardware-profile:read'])] #[Groups(['hardware-profile:read'])]

View File

@ -45,7 +45,7 @@ final class NetworkSettingsOutput extends AbstractOutput
#[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?MenuOutput $menu = null; public ?MenuOutput $menu = null;
#[Groups(['organizational-unit:read'])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]
public ?HardwareProfileOutput $hardwareProfile = null; public ?HardwareProfileOutput $hardwareProfile = null;
#[Groups(['network-settings:read', "organizational-unit:read", "client:read"])] #[Groups(['network-settings:read', "organizational-unit:read", "client:read"])]

View File

@ -17,6 +17,9 @@ final class OrganizationalUnitOutput extends AbstractOutput
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
public ?string $comments = null; public ?string $comments = null;
#[Groups(['organizational-unit:read'])]
public ?string $description = null;
#[Groups(['organizational-unit:read'])] #[Groups(['organizational-unit:read'])]
public ?string $location = null; public ?string $location = null;
@ -60,6 +63,7 @@ final class OrganizationalUnitOutput extends AbstractOutput
$this->name = $organizationalUnit->getName(); $this->name = $organizationalUnit->getName();
$this->comments = $organizationalUnit->getComments(); $this->comments = $organizationalUnit->getComments();
$this->description = $organizationalUnit->getDescription();
$this->location = $organizationalUnit->getLocation(); $this->location = $organizationalUnit->getLocation();
$this->projector = $organizationalUnit->isProjector(); $this->projector = $organizationalUnit->isProjector();
$this->board = $organizationalUnit->isBoard(); $this->board = $organizationalUnit->isBoard();

View File

@ -3,12 +3,14 @@
namespace App\Handler; namespace App\Handler;
use App\Entity\OrganizationalUnit; use App\Entity\OrganizationalUnit;
use App\Repository\ClientRepository;
use App\Repository\OrganizationalUnitRepository; use App\Repository\OrganizationalUnitRepository;
readonly class OrganizationalUnitChangeParentHandler readonly class OrganizationalUnitChangeParentHandler
{ {
public function __construct( public function __construct(
private OrganizationalUnitRepository $organizationalUnitRepository private OrganizationalUnitRepository $organizationalUnitRepository,
private ClientRepository $clientRepository
) )
{ {
} }
@ -23,7 +25,7 @@ readonly class OrganizationalUnitChangeParentHandler
foreach ($organizationalUnit->getClients() as $client) { foreach ($organizationalUnit->getClients() as $client) {
$client->setOrganizationalUnit($parent); $client->setOrganizationalUnit($parent);
$this->organizationalUnitRepository->save($client); $this->clientRepository->save($client);
} }
$this->organizationalUnitRepository->delete($organizationalUnit); $this->organizationalUnitRepository->delete($organizationalUnit);

View File

@ -24,7 +24,7 @@ abstract class AbstractRepository extends ServiceEntityRepository
} }
} }
public function delete (AbstractEntity $entity, bool $flush = true): void public function delete(AbstractEntity $entity, bool $flush = true): void
{ {
$this->getEntityManager()->remove($entity); $this->getEntityManager()->remove($entity);