Untitled
unknown
plain_text
2 years ago
2.2 kB
9
Indexable
<?php
declare(strict_types=1);
namespace App\Controller\RequestTransferPerson;
use App\Domain\Acl\Enum\Module;
use App\Domain\Acl\Enum\Permission;
use App\Domain\Manager\Enum\Role;
use App\Domain\PersonalJournal\Action\CreateAction;
use App\Domain\PersonalJournal\Api\Request\RequestOnTransferPerson;
use App\Domain\PersonalJournal\Api\Response\RequestTransferPerson;
use App\Service\CommandQuery\ActionCommand;
use App\Domain\Core\Context\ActionContext;
use App\Domain\Manager\Entity\Manager;
use App\Tool\ControllerHelper;
use League\Tactician\CommandBus;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Attributes as OA;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[OA\Tag('person: request transfer')]
class CreateRequestEndpoint extends AbstractController
{
use ControllerHelper;
/**
* Создать запрос на передачу дел о персоне.
*/
#[Route('/request/transfer', name: CreateRequestEndpoint::class, methods: ['POST'])]
#[OA\RequestBody(
description: 'Запрос на перевод персоны ',
content: new OA\JsonContent(ref: new Model(type: RequestOnTransferPerson::class, groups: ['post']))
)
]
#[OA\Response(
response: 200,
description: 'new transfer entity',
content: new OA\JsonContent(ref: new Model(type: RequestTransferPerson::class, groups: ['get', 'short']))
)
]
public function __invoke(ActionContext $context, Manager $manager, RequestOnTransferPerson $data, CreateAction $createAction, CommandBus $bus): \Symfony\Component\HttpFoundation\JsonResponse
{
$context->setCustomChecker(fn () => !$manager->hasRole(Role::EDITOR) && !$manager->hasRole(Role::ADMIN));
$transfer = $bus->handle(new ActionCommand(
static fn (ActionContext $context) => ($createAction)($context, $manager, $data),
$manager,
Module::PERSONAL_FILE_TRANSFER_LOG,
Permission::ADD,
isCustomCheck: true,
));
return $this->jsonGroups($transfer, ['get', 'short']);
}
}Editor is loading...