Update Unidades organizativas

master
Manuel Aranda Rosales 2024-06-21 10:40:16 +02:00
parent bb664c52e6
commit c3b933a5c0
1 changed files with 35 additions and 89 deletions

@ -260,103 +260,49 @@ properties:
- **Identifier**: `true`
### DTO de Entrada de Unidad Organizativa
### Fields Required in OrganizationalUnit Endpoint Input
```php
<?php
1. **name**
- **Type**: string
- **Validation**: Not blank
- **Groups**: `organizational-unit:write`
namespace App\Dto\Input;
2. **parent**
- **Type**: `OrganizationalUnitOutput`
- **Groups**: `organizational-unit:write`
use ApiPlatform\Metadata\ApiProperty;
use App\Dto\Output\OrganizationalUnitOutput;
use App\Entity\OrganizationalUnit;
use App\Validator\Constraints\OrganizationalUnitMulticastMode;
use App\Validator\Constraints\OrganizationalUnitMulticastPort;
use App\Validator\Constraints\OrganizationalUnitP2PMode;
use App\Validator\Constraints\OrganizationalUnitType;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
3. **description**
- **Type**: string
- **Groups**: `organizational-unit:write`
class OrganizationalUnitInput
{
#[Assert\NotBlank]
#[Groups(['organizational-unit:write'])]
public ?string $name = null;
4. **location**
- **Type**: string
- **Groups**: `organizational-unit:write`
#[Groups(['organizational-unit:write'])]
public ?OrganizationalUnitOutput $parent = null;
5. **projector**
- **Type**: boolean
- **Groups**: `organizational-unit:write`
#[Groups(['organizational-unit:write'])]
public ?string $description = null;
6. **board**
- **Type**: boolean
- **Groups**: `organizational-unit:write`
#[Groups(['organizational-unit:write'])]
public ?string $location = null;
7. **capacity**
- **Type**: integer
- **Validation**: Greater than 0
- **Groups**: `organizational-unit:write`
#[Groups(['organizational-unit:write'])]
public ?bool $projector = null;
8. **comments**
- **Type**: string
- **Groups**: `organizational-unit:write`
#[Groups(['organizational-unit:write'])]
public ?bool $board = null;
9. **type**
- **Type**: string
- **Validation**: Custom constraint `OrganizationalUnitType`
- **Groups**: `organizational-unit:write`
#[Assert\GreaterThan(0)]
#[Groups(['organizational-unit:write'])]
public ?int $capacity = null;
#[Groups(['organizational-unit:write'])]
public ?string $comments = null;
#[Groups(['organizational-unit:write'])]
#[OrganizationalUnitType]
public ?string $type = null;
#[Groups(['organizational-unit:write'])]
#[Assert\Valid()]
public ?NetworkSettingsInput $networkSettings = null;
public function __construct(?OrganizationalUnit $organizationalUnit = null)
{
if (!$organizationalUnit) {
return;
}
$this->name = $organizationalUnit->getName();
if ($organizationalUnit->getParent()) {
$this->parent = new OrganizationalUnitOutput($organizationalUnit->getParent());
}
$this->description = $organizationalUnit->getDescription();
$this->location = $organizationalUnit->getLocation();
$this->projector = $organizationalUnit->isProjector();
$this->board = $organizationalUnit->isBoard();
$this->capacity = $organizationalUnit->getCapacity();
$this->comments = $organizationalUnit->getComments();
$this->type = $organizationalUnit->getType();
if ($organizationalUnit->getNetworkSettings()) {
$this->networkSettings = new NetworkSettingsInput($organizationalUnit->getNetworkSettings());
}
}
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->setLocation($this->location);
$organizationalUnit->setProjector($this->projector);
$organizationalUnit->setBoard($this->board);
$organizationalUnit->setCapacity($this->capacity);
$organizationalUnit->setComments($this->comments);
$organizationalUnit->setType($this->type);
if ($this->networkSettings) {
$organizationalUnit->setNetworkSettings($this->networkSettings->createOrUpdateEntity($organizationalUnit->getNetworkSettings()));
}
return $organizationalUnit;
}
}
10. **networkSettings**
- **Type**: `NetworkSettingsInput`
- **Validation**: Valid
- **Groups**: `organizational-unit:write`
```