refs #427. Fixed organizationalUnit bug in POST/PUT classroom
parent
539f5557b1
commit
ccc33d7615
|
@ -2,6 +2,7 @@ resources:
|
||||||
App\Entity\OrganizationalUnit:
|
App\Entity\OrganizationalUnit:
|
||||||
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
|
||||||
normalization_context:
|
normalization_context:
|
||||||
groups: ['default', 'organizational-unit:read']
|
groups: ['default', 'organizational-unit:read']
|
||||||
denormalization_context:
|
denormalization_context:
|
||||||
|
|
|
@ -38,6 +38,8 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- database
|
- database
|
||||||
environment:
|
environment:
|
||||||
|
XDEBUG_CLIENT_HOST: 127.17.0.1
|
||||||
|
XDEBUG_CLIENT_PORT: 9003
|
||||||
PHP_IDE_CONFIG: serverName=ogcore
|
PHP_IDE_CONFIG: serverName=ogcore
|
||||||
networks:
|
networks:
|
||||||
- ogcore-network
|
- ogcore-network
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
xdebug.mode=debug
|
xdebug.mode=debug
|
||||||
xdebug.start_with_request=yes
|
xdebug.start_with_request=yes
|
||||||
xdebug.client_host=172.17.0.1/
|
xdebug.client_host=${XDEBUG_CLIENT_HOST}
|
||||||
xdebug.client_port=9003
|
xdebug.client_port=${XDEBUG_CLIENT_PORT}
|
|
@ -2,52 +2,13 @@
|
||||||
|
|
||||||
namespace App\Dto\Input;
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
use App\Model\OrganizationalUnitTypes;
|
use App\Model\OrganizationalUnitTypes;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
final class OrganizationalUnitClassroomGroupInput
|
final class OrganizationalUnitClassroomGroupInput extends OrganizationalUnitInput
|
||||||
{
|
{
|
||||||
#[Assert\NotBlank]
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $name = null;
|
|
||||||
|
|
||||||
#[Assert\NotNull]
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?OrganizationalUnitOutput $parent = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $description = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $comments = null;
|
|
||||||
|
|
||||||
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
||||||
{
|
{
|
||||||
if (!$organizationalUnit) {
|
parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLASSROOMS_GROUP);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
|
||||||
$this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent());
|
|
||||||
$this->description = $organizationalUnit->getDescription();
|
|
||||||
$this->comments = $organizationalUnit->getComments();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
|
||||||
{
|
|
||||||
if (!$organizationalUnit) {
|
|
||||||
$organizationalUnit = new OrganizationalUnit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$organizationalUnit->setName($this->name);
|
|
||||||
$organizationalUnit->setParent($this->parent->getEntity());
|
|
||||||
$organizationalUnit->setType(OrganizationalUnitTypes::CLASSROOMS_GROUP);
|
|
||||||
$organizationalUnit->setDescription($this->description);
|
|
||||||
$organizationalUnit->setComments($this->comments);
|
|
||||||
|
|
||||||
return $organizationalUnit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace App\Dto\Input;
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
|
||||||
use App\Entity\NetworkSettings;
|
use App\Entity\NetworkSettings;
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
use App\Model\OrganizationalUnitTypes;
|
use App\Model\OrganizationalUnitTypes;
|
||||||
|
@ -10,22 +9,8 @@ use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
final class OrganizationalUnitClassroomInput
|
final class OrganizationalUnitClassroomInput extends OrganizationalUnitInput
|
||||||
{
|
{
|
||||||
#[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'])]
|
#[Groups(['organizational-unit:write'])]
|
||||||
public ?string $location = null;
|
public ?string $location = null;
|
||||||
|
|
||||||
|
@ -74,14 +59,12 @@ final class OrganizationalUnitClassroomInput
|
||||||
|
|
||||||
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
||||||
{
|
{
|
||||||
|
parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLASSROOM);
|
||||||
|
|
||||||
if (!$organizationalUnit) {
|
if (!$organizationalUnit) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
|
||||||
$this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent());
|
|
||||||
$this->description = $organizationalUnit->getDescription();
|
|
||||||
$this->comments = $organizationalUnit->getComments();
|
|
||||||
$this->location = $organizationalUnit->getLocation();
|
$this->location = $organizationalUnit->getLocation();
|
||||||
$this->projector = $organizationalUnit->isProjector();
|
$this->projector = $organizationalUnit->isProjector();
|
||||||
$this->board = $organizationalUnit->isBoard();
|
$this->board = $organizationalUnit->isBoard();
|
||||||
|
@ -108,11 +91,7 @@ final class OrganizationalUnitClassroomInput
|
||||||
$organizationalUnit = new OrganizationalUnit();
|
$organizationalUnit = new OrganizationalUnit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$organizationalUnit->setName($this->name);
|
|
||||||
$organizationalUnit->setType(OrganizationalUnitTypes::CLASSROOM);
|
$organizationalUnit->setType(OrganizationalUnitTypes::CLASSROOM);
|
||||||
$organizationalUnit->setParent($this->parent->getEntity());
|
|
||||||
$organizationalUnit->setDescription($this->description);
|
|
||||||
$organizationalUnit->setComments($this->comments);
|
|
||||||
$organizationalUnit->setLocation($this->location);
|
$organizationalUnit->setLocation($this->location);
|
||||||
$organizationalUnit->setProjector($this->projector);
|
$organizationalUnit->setProjector($this->projector);
|
||||||
$organizationalUnit->setBoard($this->board);
|
$organizationalUnit->setBoard($this->board);
|
||||||
|
|
|
@ -2,52 +2,13 @@
|
||||||
|
|
||||||
namespace App\Dto\Input;
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
use App\Model\OrganizationalUnitTypes;
|
use App\Model\OrganizationalUnitTypes;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
final class OrganizationalUnitClientGroupInput
|
final class OrganizationalUnitClientGroupInput extends OrganizationalUnitInput
|
||||||
{
|
{
|
||||||
#[Assert\NotBlank]
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $name = null;
|
|
||||||
|
|
||||||
#[Assert\NotNull]
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?OrganizationalUnitOutput $parent = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $description = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $comments = null;
|
|
||||||
|
|
||||||
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
||||||
{
|
{
|
||||||
if (!$organizationalUnit) {
|
parent::__construct($organizationalUnit, OrganizationalUnitTypes::CLIENTS_GROUP);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
|
||||||
$this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent());
|
|
||||||
$this->description = $organizationalUnit->getDescription();
|
|
||||||
$this->comments = $organizationalUnit->getComments();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
|
||||||
{
|
|
||||||
if (!$organizationalUnit) {
|
|
||||||
$organizationalUnit = new OrganizationalUnit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$organizationalUnit->setName($this->name);
|
|
||||||
$organizationalUnit->setParent($this->parent->getEntity());
|
|
||||||
$organizationalUnit->setType(OrganizationalUnitTypes::CLIENTS_GROUP);
|
|
||||||
$organizationalUnit->setDescription($this->description);
|
|
||||||
$organizationalUnit->setComments($this->comments);
|
|
||||||
|
|
||||||
return $organizationalUnit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
|
use App\Entity\OrganizationalUnit;
|
||||||
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
|
class OrganizationalUnitInput
|
||||||
|
{
|
||||||
|
#[Assert\NotBlank]
|
||||||
|
#[Groups(['organizational-unit:write'])]
|
||||||
|
public ?string $name = null;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:write'])]
|
||||||
|
public ?OrganizationalUnitOutput $parent = null;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:write'])]
|
||||||
|
public ?string $description = null;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:write'])]
|
||||||
|
public ?string $comments = null;
|
||||||
|
|
||||||
|
public function __construct(?OrganizationalUnit $organizationalUnit = null, private readonly ?string $type = null)
|
||||||
|
{
|
||||||
|
if (!$organizationalUnit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->name = $organizationalUnit->getName();
|
||||||
|
if ($organizationalUnit->getParent()) {
|
||||||
|
$this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent());
|
||||||
|
}
|
||||||
|
$this->description = $organizationalUnit->getDescription();
|
||||||
|
$this->comments = $organizationalUnit->getComments();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
||||||
|
{
|
||||||
|
if (!$organizationalUnit) {
|
||||||
|
$organizationalUnit = new OrganizationalUnit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$organizationalUnit->setName($this->name);
|
||||||
|
if ($this->parent) {
|
||||||
|
$organizationalUnit->setParent($this->parent->getEntity());
|
||||||
|
}
|
||||||
|
$organizationalUnit->setDescription($this->description);
|
||||||
|
$organizationalUnit->setComments($this->comments);
|
||||||
|
$organizationalUnit->setType($this->type);
|
||||||
|
|
||||||
|
return $organizationalUnit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,43 +4,11 @@ namespace App\Dto\Input;
|
||||||
|
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
use App\Model\OrganizationalUnitTypes;
|
use App\Model\OrganizationalUnitTypes;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
final class OrganizationalUnitRootInput
|
final class OrganizationalUnitRootInput extends OrganizationalUnitInput
|
||||||
{
|
{
|
||||||
#[Assert\NotBlank]
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $name = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $description = null;
|
|
||||||
|
|
||||||
#[Groups(['organizational-unit:write'])]
|
|
||||||
public ?string $comments = null;
|
|
||||||
|
|
||||||
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
||||||
{
|
{
|
||||||
if (!$organizationalUnit) {
|
parent::__construct($organizationalUnit, OrganizationalUnitTypes::ORGANIZATIONAL_UNIT);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
|
||||||
$this->description = $organizationalUnit->getDescription();
|
|
||||||
$this->comments = $organizationalUnit->getComments();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
|
||||||
{
|
|
||||||
if (!$organizationalUnit) {
|
|
||||||
$organizationalUnit = new OrganizationalUnit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$organizationalUnit->setName($this->name);
|
|
||||||
$organizationalUnit->setType(OrganizationalUnitTypes::ORGANIZATIONAL_UNIT);
|
|
||||||
$organizationalUnit->setDescription($this->description);
|
|
||||||
$organizationalUnit->setComments($this->comments);
|
|
||||||
|
|
||||||
return $organizationalUnit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ final class ClientOutput extends AbstractOutput
|
||||||
public ?string $netiface = '';
|
public ?string $netiface = '';
|
||||||
|
|
||||||
#[Groups(['client:read'])]
|
#[Groups(['client:read'])]
|
||||||
public ?OrganizationalUnit $organizationalUnit = null;
|
public ?OrganizationalUnitOutput $organizationalUnit = null;
|
||||||
|
|
||||||
#[Groups(['client:read'])]
|
#[Groups(['client:read'])]
|
||||||
public \DateTime $createAt;
|
public \DateTime $createAt;
|
||||||
|
@ -35,7 +35,7 @@ final class ClientOutput extends AbstractOutput
|
||||||
$this->name = $client->getName();
|
$this->name = $client->getName();
|
||||||
$this->serialNumber = $client->getSerialNumber();
|
$this->serialNumber = $client->getSerialNumber();
|
||||||
$this->netiface = $client->getNetiface();
|
$this->netiface = $client->getNetiface();
|
||||||
$this->organizationalUnit = $client->getOrganizationalUnit();
|
$this->organizationalUnit = new OrganizationalUnitOutput($client->getOrganizationalUnit());
|
||||||
$this->createAt = $client->getCreatedAt();
|
$this->createAt = $client->getCreatedAt();
|
||||||
$this->createBy = $client->getCreatedBy();
|
$this->createBy = $client->getCreatedBy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace App\Dto\Output;
|
namespace App\Dto\Output;
|
||||||
|
|
||||||
use ApiPlatform\Metadata\ApiProperty;
|
|
||||||
use ApiPlatform\Metadata\Get;
|
use ApiPlatform\Metadata\Get;
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
use Symfony\Component\Serializer\Annotation\Groups;
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
|
|
@ -12,6 +12,7 @@ use ApiPlatform\Validator\ValidatorInterface;
|
||||||
use App\Dto\Input\OrganizationalUnitClassroomGroupInput;
|
use App\Dto\Input\OrganizationalUnitClassroomGroupInput;
|
||||||
use App\Dto\Input\OrganizationalUnitClassroomInput;
|
use App\Dto\Input\OrganizationalUnitClassroomInput;
|
||||||
use App\Dto\Input\OrganizationalUnitClientGroupInput;
|
use App\Dto\Input\OrganizationalUnitClientGroupInput;
|
||||||
|
use App\Dto\Input\OrganizationalUnitInput;
|
||||||
use App\Dto\Input\OrganizationalUnitRootInput;
|
use App\Dto\Input\OrganizationalUnitRootInput;
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
use App\Repository\OrganizationalUnitRepository;
|
use App\Repository\OrganizationalUnitRepository;
|
||||||
|
@ -54,7 +55,7 @@ class OrganizationalUnitProcessor implements ProcessorInterface
|
||||||
throw new \Exception(sprintf('data is not an instance of %s, %s, %s, or %s',
|
throw new \Exception(sprintf('data is not an instance of %s, %s, %s, or %s',
|
||||||
OrganizationalUnitRootInput::class,
|
OrganizationalUnitRootInput::class,
|
||||||
OrganizationalUnitClassroomInput::class,
|
OrganizationalUnitClassroomInput::class,
|
||||||
OrganizationalUnitClientGroupInput::class,
|
OrganizationalUnitInput::class,
|
||||||
OrganizationalUnitClassroomGroupInput::class
|
OrganizationalUnitClassroomGroupInput::class
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ use ApiPlatform\State\ProviderInterface;
|
||||||
use App\Dto\Input\OrganizationalUnitClassroomGroupInput;
|
use App\Dto\Input\OrganizationalUnitClassroomGroupInput;
|
||||||
use App\Dto\Input\OrganizationalUnitClassroomInput;
|
use App\Dto\Input\OrganizationalUnitClassroomInput;
|
||||||
use App\Dto\Input\OrganizationalUnitClientGroupInput;
|
use App\Dto\Input\OrganizationalUnitClientGroupInput;
|
||||||
|
use App\Dto\Input\OrganizationalUnitInput;
|
||||||
use App\Dto\Input\OrganizationalUnitRootInput;
|
use App\Dto\Input\OrganizationalUnitRootInput;
|
||||||
use App\Dto\Input\UserGroupInput;
|
use App\Dto\Input\UserGroupInput;
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
|
|
Loading…
Reference in New Issue