<?php
namespace App\Controller;
use App\Entity\Solicitacao;
use App\Repository\SolicitacaoRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Knp\Component\Pager\PaginatorInterface;
#[Route('/aprovador')]
class AprovadorController extends AbstractController
{
#[Route('/pendentes/empresa/{empresaId}', name: 'app_aprovador_pendentes', methods: ['GET'])]
public function pendentes(SolicitacaoRepository $solicitacaoRepository, Request $request, PaginatorInterface $paginator, int $empresaId): Response
{
$user = $this->getUser();
$solicitacaoStatus = null;
$hasAccess = false;
if ($this->isGranted('ROLE_SUPER')) {
$hasAccess = true;
$solicitacaoStatus = Solicitacao::STATUS_APROVADOR_OK;
} else {
// Verifica se o usuário tem acesso à empresa
$empresasUsuario = $user->getEmpresas();
$hasAccess = false;
foreach ($empresasUsuario as $empresa) {
if ($empresa->getId() === $empresaId) {
$hasAccess = true;
$solicitacaoStatus = Solicitacao::STATUS_PENDENTE;
}
}
}
if (!$hasAccess) {
throw $this->createAccessDeniedException('Você não tem permissão para acessar as solicitações desta empresa.');
}
$solicitacoes = $solicitacaoRepository->findAllByEmpresaStatus($empresaId, $solicitacaoStatus);
$pagination = $paginator->paginate($solicitacoes, $request->query->getInt('page', 1), 10);
return $this->render('aprovador/index.html.twig', [
'solicitacoes' => $pagination,
'nav_active' => "Solicitação"
]);
}
#[Route('/pendentes/subempresa/{subEmpresaId}', name: 'app_aprovador_subempresa_pendentes', methods: ['GET'])]
public function subEmpresaPendentes(SolicitacaoRepository $solicitacaoRepository, Request $request, PaginatorInterface $paginator, int $subEmpresaId): Response
{
$user = $this->getUser();
$solicitacaoStatus = null;
$hasAccess = false;
$subEmpresas = $user->getSubEmpresas();
$hasAccess = false;
foreach ($subEmpresas as $subEmpresa) {
if ($subEmpresa->getId() === $subEmpresaId) {
$hasAccess = true;
}
}
if (!$hasAccess) {
throw $this->createAccessDeniedException('Você não tem permissão para acessar as solicitações desta empresa.');
}
$solicitacoes = $solicitacaoRepository->findAllBySubEmpresaStatus($subEmpresaId, Solicitacao::STATUS_PENDENTE);
$pagination = $paginator->paginate($solicitacoes, $request->query->getInt('page', 1), 10);
return $this->render('aprovador/index.html.twig', [
'solicitacoes' => $pagination,
'nav_active' => "Solicitação"
]);
}
}