<?php
namespace App\Controller\Visao\Gestor\Componentes;
use App\Controller\Componentes\ComponenteAbstract;
use App\Entity\Cliente\Dimensao;
use App\Repository\Cliente\Dados\EvsRepository;
use App\Repository\Cliente\Modelagem\GrupoRepository;
use App\Service\DimensaoDeBuscaGestorService;
use App\Service\DimensaoService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class GraficoQualidadeCustoController extends ComponenteAbstract
{
const TEMPLATEBASE = 'visao/gestor/componentes/';
private $dimensaoServiceBusca;
private $dimensao;
private $grupoRepository;
private $evsRepository;
private $session;
public function __construct(DimensaoDeBuscaGestorService $dimensaoServiceBusca, GrupoRepository $grupoRepository, EvsRepository $evsRepository, DimensaoService $dimensao, SessionInterface $session)
{
$this->dimensaoServiceBusca = $dimensaoServiceBusca;
$this->grupoRepository = $grupoRepository;
$this->evsRepository = $evsRepository;
$this->dimensao = $dimensao;
$this->session = $session;
}
public function index(Request $request): Response
{
$tamanhoComponente = $this->getCurrentRequest()->query->get('tamanho', $request->query->get('tamanhoModal', 'col-12'));
$urReferer = $request->headers->get('referer');
$dimensao_nome = $request->query->get('dimensao');
$id_busca = $request->query->get('id_busca', null);
$dados = [];
$especialidade_selecionada = null;
$especialidades = [];
$gestor_permissoes = $this->session->get('gestor_permissoes');
$dimensao = (new Dimensao())
->setDimensao($dimensao_nome)
->setIdBusca($id_busca)
->setPrograma($this->getPrograma())
->setPeriodo($this->getPeriodo())
;
if (Dimensao::POR_ESPECIALIDADE == $dimensao->getDimensao()) {
$especialidade_selecionada = $this->grupoRepository->findOneBy(['idGrupo' => $id_busca]);
$especialidades = $this->evsRepository->buscarPerformanceDeTodasEspecialidades($dimensao->getPrograma(), $dimensao->getPeriodo(), $gestor_permissoes['where'] ?? '');
}
$dimensao->setTituloGraficoDistribuicaoEvs(
$this->dimensao->getClienteConfigTituloGraficoQualidadeCusteio($dimensao_nome, $especialidade_selecionada ? $especialidade_selecionada->getTitulo() : null)
);
$dados = $this->dimensaoServiceBusca->execute($dimensao);
return $this->render('grafico-qualidade-custo.html.twig', [
'tamanhoModal' => $tamanhoComponente,
'referer' => $urReferer,
'especialidade_selecionada' => $especialidade_selecionada,
'especialidades' => $especialidades,
'dados' => json_encode($dados, true),
'dimensao' => $dimensao,
'icones' => $this->getIcones(),
]);
}
}