Untitled
plain_text
a month ago
2.2 kB
2
Indexable
Never
<?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']); } }