src\Controller\AprovadorController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Solicitacao;
  4. use App\Repository\SolicitacaoRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Knp\Component\Pager\PaginatorInterface;
  10. #[Route('/aprovador')]
  11. class AprovadorController extends AbstractController
  12. {
  13.     #[Route('/pendentes/empresa/{empresaId}'name'app_aprovador_pendentes'methods: ['GET'])]
  14.     public function pendentes(SolicitacaoRepository $solicitacaoRepositoryRequest $requestPaginatorInterface $paginatorint $empresaId): Response
  15.     {
  16.         $user $this->getUser();
  17.         $solicitacaoStatus null;
  18.         $hasAccess false;
  19.         if ($this->isGranted('ROLE_SUPER')) {
  20.             $hasAccess true;
  21.             $solicitacaoStatus Solicitacao::STATUS_APROVADOR_OK;
  22.         } else {
  23.             // Verifica se o usuário tem acesso à empresa
  24.             $empresasUsuario $user->getEmpresas();
  25.             $hasAccess false;
  26.             foreach ($empresasUsuario as $empresa) {
  27.                 if ($empresa->getId() === $empresaId) {
  28.                     $hasAccess true;
  29.                     $solicitacaoStatus Solicitacao::STATUS_PENDENTE;
  30.                 }
  31.             }
  32.         }
  33.         if (!$hasAccess) {
  34.             throw $this->createAccessDeniedException('Você não tem permissão para acessar as solicitações desta empresa.');
  35.         }
  36.         $solicitacoes $solicitacaoRepository->findAllByEmpresaStatus($empresaId$solicitacaoStatus);
  37.         $pagination $paginator->paginate($solicitacoes$request->query->getInt('page'1), 10);
  38.         return $this->render('aprovador/index.html.twig', [
  39.             'solicitacoes' => $pagination,
  40.             'nav_active' => "Solicitação"
  41.         ]);
  42.     }
  43.     #[Route('/pendentes/subempresa/{subEmpresaId}'name'app_aprovador_subempresa_pendentes'methods: ['GET'])]
  44.     public function subEmpresaPendentes(SolicitacaoRepository $solicitacaoRepositoryRequest $requestPaginatorInterface $paginatorint $subEmpresaId): Response
  45.     {
  46.         $user $this->getUser();
  47.         $solicitacaoStatus null;
  48.         $hasAccess false;
  49.       
  50.             $subEmpresas $user->getSubEmpresas();
  51.             $hasAccess false;
  52.             foreach ($subEmpresas as $subEmpresa) {
  53.                 if ($subEmpresa->getId() === $subEmpresaId) {
  54.                     $hasAccess true;
  55.                 }
  56.             }
  57.         if (!$hasAccess) {
  58.             throw $this->createAccessDeniedException('Você não tem permissão para acessar as solicitações desta empresa.');
  59.         }
  60.         $solicitacoes $solicitacaoRepository->findAllBySubEmpresaStatus($subEmpresaIdSolicitacao::STATUS_PENDENTE);
  61.         $pagination $paginator->paginate($solicitacoes$request->query->getInt('page'1), 10);
  62.         return $this->render('aprovador/index.html.twig', [
  63.             'solicitacoes' => $pagination,
  64.             'nav_active' => "Solicitação"
  65.         ]);
  66.     }
  67. }