refs #427. New endpoints created organizational-units
parent
30fa682a46
commit
dc12acd29e
|
@ -1,8 +1,6 @@
|
||||||
resources:
|
resources:
|
||||||
App\Entity\OrganizationalUnit:
|
App\Entity\OrganizationalUnit:
|
||||||
processor: App\State\Processor\OrganizationalUnitProcessor
|
processor: App\State\Processor\OrganizationalUnitProcessor
|
||||||
input: App\Dto\Input\OrganizationalUnitInput
|
|
||||||
output: App\Dto\Output\OrganizationalUnitOutput
|
|
||||||
normalization_context:
|
normalization_context:
|
||||||
groups: ['default', 'organizational-unit:read']
|
groups: ['default', 'organizational-unit:read']
|
||||||
denormalization_context:
|
denormalization_context:
|
||||||
|
@ -16,8 +14,34 @@ resources:
|
||||||
provider: App\State\Provider\OrganizationalUnitProvider
|
provider: App\State\Provider\OrganizationalUnitProvider
|
||||||
ApiPlatform\Metadata\Patch:
|
ApiPlatform\Metadata\Patch:
|
||||||
provider: App\State\Provider\OrganizationalUnitProvider
|
provider: App\State\Provider\OrganizationalUnitProvider
|
||||||
ApiPlatform\Metadata\Post: ~
|
|
||||||
ApiPlatform\Metadata\Delete: ~
|
ApiPlatform\Metadata\Delete: ~
|
||||||
|
organizational_unit_root:
|
||||||
|
class: ApiPlatform\Metadata\Post
|
||||||
|
method: POST
|
||||||
|
uriTemplate: /organizational-units/root
|
||||||
|
input: App\Dto\Input\OrganizationalUnitRootInput
|
||||||
|
output: App\Dto\Output\OrganizationalUnitOutput
|
||||||
|
|
||||||
|
organizational_unit_classroom_group:
|
||||||
|
class: ApiPlatform\Metadata\Post
|
||||||
|
method: POST
|
||||||
|
uriTemplate: /organizational-units/classroom-group
|
||||||
|
input: App\Dto\Input\OrganizationalUnitClassroomGroupInput
|
||||||
|
output: App\Dto\Output\OrganizationalUnitOutput
|
||||||
|
|
||||||
|
organizational_unit_classroom:
|
||||||
|
class: ApiPlatform\Metadata\Post
|
||||||
|
method: POST
|
||||||
|
uriTemplate: /organizational-units/classroom
|
||||||
|
input: App\Dto\Input\OrganizationalUnitClassroomInput
|
||||||
|
output: App\Dto\Output\OrganizationalUnitOutput
|
||||||
|
|
||||||
|
organizational_unit_client_group:
|
||||||
|
class: ApiPlatform\Metadata\Post
|
||||||
|
method: POST
|
||||||
|
uriTemplate: /organizational-units/client-group
|
||||||
|
input: App\Dto\Input\OrganizationalUnitClientGroupInput
|
||||||
|
output: App\Dto\Output\OrganizationalUnitOutput
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
App\Entity\OrganizationalUnit:
|
App\Entity\OrganizationalUnit:
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
|
use App\Entity\OrganizationalUnit;
|
||||||
|
use App\Model\OrganizationalUnitTypes;
|
||||||
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
|
final class OrganizationalUnitClassroomGroupInput
|
||||||
|
{
|
||||||
|
#[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)
|
||||||
|
{
|
||||||
|
if (!$organizationalUnit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->name = $organizationalUnit->getName();
|
||||||
|
$this->parent = $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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
|
use App\Entity\OrganizationalUnit;
|
||||||
|
use App\Model\OrganizationalUnitTypes;
|
||||||
|
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'])]
|
||||||
|
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;
|
||||||
|
|
||||||
|
public function __construct(?OrganizationalUnit $organizationalUnit = null)
|
||||||
|
{
|
||||||
|
if (!$organizationalUnit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->name = $organizationalUnit->getName();
|
||||||
|
$this->parent = $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();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = 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);
|
||||||
|
|
||||||
|
return $organizationalUnit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
|
use App\Entity\OrganizationalUnit;
|
||||||
|
use App\Model\OrganizationalUnitTypes;
|
||||||
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
|
final class OrganizationalUnitClientGroupInput
|
||||||
|
{
|
||||||
|
#[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)
|
||||||
|
{
|
||||||
|
if (!$organizationalUnit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->name = $organizationalUnit->getName();
|
||||||
|
$this->parent = $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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,15 +3,22 @@
|
||||||
namespace App\Dto\Input;
|
namespace App\Dto\Input;
|
||||||
|
|
||||||
use App\Entity\OrganizationalUnit;
|
use App\Entity\OrganizationalUnit;
|
||||||
|
use App\Model\OrganizationalUnitTypes;
|
||||||
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 OrganizationalUnitInput
|
final class OrganizationalUnitRootInput
|
||||||
{
|
{
|
||||||
#[Assert\NotBlank]
|
#[Assert\NotBlank]
|
||||||
#[Groups(['organizational-unit:write'])]
|
#[Groups(['organizational-unit:write'])]
|
||||||
public ?string $name = null;
|
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) {
|
if (!$organizationalUnit) {
|
||||||
|
@ -19,6 +26,8 @@ final class OrganizationalUnitInput
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
$this->name = $organizationalUnit->getName();
|
||||||
|
$this->description = $organizationalUnit->getDescription();
|
||||||
|
$this->comments = $organizationalUnit->getComments();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
public function createOrUpdateEntity(?OrganizationalUnit $organizationalUnit = null): OrganizationalUnit
|
||||||
|
@ -28,6 +37,9 @@ final class OrganizationalUnitInput
|
||||||
}
|
}
|
||||||
|
|
||||||
$organizationalUnit->setName($this->name);
|
$organizationalUnit->setName($this->name);
|
||||||
|
$organizationalUnit->setType(OrganizationalUnitTypes::ORGANIZATIONAL_UNIT);
|
||||||
|
$organizationalUnit->setDescription($this->description);
|
||||||
|
$organizationalUnit->setComments($this->comments);
|
||||||
|
|
||||||
return $organizationalUnit;
|
return $organizationalUnit;
|
||||||
}
|
}
|
|
@ -12,6 +12,15 @@ final class OrganizationalUnitOutput extends AbstractOutput
|
||||||
#[Groups(['organizational-unit:read'])]
|
#[Groups(['organizational-unit:read'])]
|
||||||
public string $name;
|
public string $name;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:read'])]
|
||||||
|
public string $type;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:read'])]
|
||||||
|
public ?OrganizationalUnit $parent = null;
|
||||||
|
|
||||||
|
#[Groups(['organizational-unit:read'])]
|
||||||
|
public string $path;
|
||||||
|
|
||||||
#[Groups(['organizational-unit:read'])]
|
#[Groups(['organizational-unit:read'])]
|
||||||
public \DateTime $createAt;
|
public \DateTime $createAt;
|
||||||
|
|
||||||
|
@ -23,6 +32,9 @@ final class OrganizationalUnitOutput extends AbstractOutput
|
||||||
parent::__construct($organizationalUnit);
|
parent::__construct($organizationalUnit);
|
||||||
|
|
||||||
$this->name = $organizationalUnit->getName();
|
$this->name = $organizationalUnit->getName();
|
||||||
|
$this->type = $organizationalUnit->getType();
|
||||||
|
$this->parent = $organizationalUnit->getParent();
|
||||||
|
$this->path = $organizationalUnit->getPath();
|
||||||
$this->createAt = $organizationalUnit->getCreatedAt();
|
$this->createAt = $organizationalUnit->getCreatedAt();
|
||||||
$this->createBy = $organizationalUnit->getCreatedBy();
|
$this->createBy = $organizationalUnit->getCreatedBy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,32 @@
|
||||||
|
|
||||||
namespace App\Model;
|
namespace App\Model;
|
||||||
|
|
||||||
class OrganizationalUnitTypes
|
final class OrganizationalUnitTypes
|
||||||
{
|
{
|
||||||
|
public const ORGANIZATIONAL_UNIT = 'ORGANIZATIONAL_UNIT';
|
||||||
|
public const CLASSROOMS_GROUP = 'CLASSROOMS_GROUP';
|
||||||
|
public const CLASSROOM = 'CLASSROOM';
|
||||||
|
public const CLIENTS_GROUP = 'CLIENTS_GROUP';
|
||||||
|
|
||||||
|
private const ORGANIZATIONAL_UNIT_TYPES = [
|
||||||
|
self::ORGANIZATIONAL_UNIT => 'Unidad Organizativa',
|
||||||
|
self::CLASSROOMS_GROUP => 'Grupo de aulas',
|
||||||
|
self::CLASSROOM => 'Aula',
|
||||||
|
self::CLIENTS_GROUP => 'Grupo de ordenadores',
|
||||||
|
];
|
||||||
|
|
||||||
|
public static function getOrganizationalUnitTypes(): array
|
||||||
|
{
|
||||||
|
return self::ORGANIZATIONAL_UNIT_TYPES;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getOrganizationalUnitType(string $organizationalUnit): ?string
|
||||||
|
{
|
||||||
|
return self::ORGANIZATIONAL_UNIT_TYPES[$organizationalUnit] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getOrganizationalUnitTypeKeys(): array
|
||||||
|
{
|
||||||
|
return array_keys(self::ORGANIZATIONAL_UNIT_TYPES);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -9,7 +9,10 @@ use ApiPlatform\Metadata\Post;
|
||||||
use ApiPlatform\Metadata\Put;
|
use ApiPlatform\Metadata\Put;
|
||||||
use ApiPlatform\State\ProcessorInterface;
|
use ApiPlatform\State\ProcessorInterface;
|
||||||
use ApiPlatform\Validator\ValidatorInterface;
|
use ApiPlatform\Validator\ValidatorInterface;
|
||||||
use App\Dto\Input\OrganizationalUnitInput;
|
use App\Dto\Input\OrganizationalUnitClassroomGroupInput;
|
||||||
|
use App\Dto\Input\OrganizationalUnitClassroomInput;
|
||||||
|
use App\Dto\Input\OrganizationalUnitClientGroupInput;
|
||||||
|
use App\Dto\Input\OrganizationalUnitRootInput;
|
||||||
use App\Dto\Output\OrganizationalUnitOutput;
|
use App\Dto\Output\OrganizationalUnitOutput;
|
||||||
use App\Repository\OrganizationalUnitRepository;
|
use App\Repository\OrganizationalUnitRepository;
|
||||||
|
|
||||||
|
@ -42,8 +45,16 @@ class OrganizationalUnitProcessor implements ProcessorInterface
|
||||||
*/
|
*/
|
||||||
private function processCreateOrUpdate($data, Operation $operation, array $uriVariables = [], array $context = []): OrganizationalUnitOutput
|
private function processCreateOrUpdate($data, Operation $operation, array $uriVariables = [], array $context = []): OrganizationalUnitOutput
|
||||||
{
|
{
|
||||||
if (!($data instanceof OrganizationalUnitOutput)) {
|
if (!($data instanceof OrganizationalUnitRootInput) &&
|
||||||
throw new \Exception(sprintf('data is not instance of %s', OrganizationalUnitInput::class));
|
!($data instanceof OrganizationalUnitClassroomInput) &&
|
||||||
|
!($data instanceof OrganizationalUnitClientGroupInput) &&
|
||||||
|
!($data instanceof OrganizationalUnitClassroomGroupInput)) {
|
||||||
|
throw new \Exception(sprintf('data is not an instance of %s, %s, %s, or %s',
|
||||||
|
OrganizationalUnitRootInput::class,
|
||||||
|
OrganizationalUnitClassroomInput::class,
|
||||||
|
OrganizationalUnitClientGroupInput::class,
|
||||||
|
OrganizationalUnitClassroomGroupInput::class
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
$entity = null;
|
$entity = null;
|
||||||
|
|
Loading…
Reference in New Issue