<?php
namespace App\Application\Internit\TipoSolicitacaoBundle\Controller;
use App\Application\Internit\TipoSolicitacaoBundle\Entity\Assunto;
use App\Application\Internit\TipoSolicitacaoBundle\Entity\TipoSolicitacao;
use App\Application\Project\ContentBundle\Attributes\Acl as ACL;
use App\Application\Project\ContentBundle\Controller\Base\BaseAdminController;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
#[ACL\Admin(enable: true, title: 'Assunto', description: 'Permissões modulo Assunto')]
class AssuntoAdminController extends BaseAdminController
{
#[ACL\Admin(enable: true, title: 'Listar', description: 'Listar Assunto')]
public function listAction(Request $request): Response
{
$this->validateAccess("listAction");
return parent::listAction($request);
}
#[ACL\Admin(enable: true, title: 'Visualizar', description: 'Visualizar Assunto')]
public function showAction(Request $request): Response
{
$this->validateAccess("showAction");
return parent::showAction($request);
}
#[ACL\Admin(enable: true, title: 'Criar', description: 'Criar Assunto')]
public function createAction(Request $request): Response
{
$this->validateAccess("createAction");
return parent::createAction($request);
}
#[ACL\Admin(enable: true, title: 'Editar', description: 'Editar Assunto')]
public function editAction(Request $request): Response
{
$this->validateAccess("editAction");
return parent::editAction($request);
}
#[ACL\Admin(enable: true, title: 'Excluir', description: 'Excluir Assunto')]
public function deleteAction(Request $request): Response
{
$this->validateAccess("deleteAction");
return parent::deleteAction($request);
}
#[ACL\Admin(enable: true, title: 'Excluir em Lote', description: 'Excluir Assunto em lote')]
public function batchActionDelete(ProxyQueryInterface $query): Response
{
$this->validateAccess("batchActionDelete");
return parent::batchActionDelete($query);
}
public function batchAction(Request $request): Response
{
$this->validateAccess("batchActionDelete");
return parent::batchAction($request);
}
#[ACL\Admin(enable: true, title: 'Exportar', description: 'Exportar Assunto')]
public function exportAction(Request $request): Response
{
$this->validateAccess("exportAction");
return parent::exportAction($request);
}
#[ACL\Admin(enable: true, title: 'Auditoria', description: 'Auditar Assunto')]
public function historyAction(Request $request): Response
{
$this->validateAccess("historyAction");
return parent::historyAction($request);
}
public function historyViewRevisionAction(Request $request, string $revision): Response
{
$this->validateAccess("historyAction");
return parent::historyViewRevisionAction($request, $revision);
}
public function historyCompareRevisionsAction(Request $request, string $baseRevision, string $compareRevision): Response
{
$this->validateAccess("historyAction");
return parent::historyCompareRevisionsAction($request, $baseRevision, $compareRevision);
}
public function apiAssuntosAction(Request $request)
{
$this->validateAccess("createAction");
$tipo = $request->get('tipoSolicitacao');
$tipo = $this->managerRegistry->getRepository(TipoSolicitacao::class)->findOneBy(['id' => $tipo]);
if(!$tipo)
return $this->json(['status' => false, 'message' => 'Tipo não encontrado'], 400);
$assuntos = $this->managerRegistry->getRepository(Assunto::class)->findBy(['tipoSolicitacao' => $tipo]);
$response = [];
/** @var $assunto Assunto */
foreach ($assuntos as $assunto) {
$response[] = [
'id' => $assunto->getId(),
'assunto' => $assunto->getAssunto(),
];
}
return $this->json($response);
}
public function apiTipoAssuntosAction(Request $request)
{
$this->validateAccess("createAction");
$assunto = $request->get('assunto');
$assunto = $this->managerRegistry->getRepository(Assunto::class)->findOneBy(['id' => $assunto]);
return new JsonResponse($assunto->getTipoSolicitacao()->getId());
}
}