<?php
namespace App\Controller\Visao\Gestor\Componentes;
use App\Controller\Componentes\ComponenteAbstract;
use App\Entity\Cliente\Dimensao;
use App\Repository\Cliente\Modelagem\ModelagemRepository;
use App\Service\DimensaoDeBuscaGestorService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class RightMenuController extends ComponenteAbstract
{
const TEMPLATEBASE = 'visao/gestor/componentes/';
/**
* @var DimensaoDeBuscaGestorService
*/
private $dimensaoService;
private $modelagemRepository;
/**
* @param DimensaoDeBuscaGestorService $dimensaoService
*/
public function __construct(DimensaoDeBuscaGestorService $dimensaoService, ModelagemRepository $modelagemRepository)
{
$this->dimensaoService = $dimensaoService;
$this->modelagemRepository = $modelagemRepository;
}
/**
* @param Request $request
* @return Response
*/
public function index(Request $request): Response
{
$tamanhoComponente = $this->getCurrentRequest()->query->get('tamanho', $request->query->get('tamanhoModal', 'col-12'));
$urReferer = $request->headers->get('referer');
$dimensao = $request->query->get('dimensao');
$id_busca = $request->query->get('id_busca', null);
$id_avaliado = $request->query->get('id_filtro', null);
$dimensao = (new Dimensao())
->setDimensao($dimensao)
->setIdBusca($id_busca)
->setIdFiltro($id_avaliado)
->setPrograma($this->getPrograma())
->setPeriodo($this->getPeriodo());
;
$periodo['inicio'] = $dimensao->getPeriodo()['from']['ano'].$dimensao->getPeriodo()['from']['periodo'];
$periodo['fim'] = $dimensao->getPeriodo()['to']['ano'].$dimensao->getPeriodo()['to']['periodo'];
$dados = $this->dimensaoService->execute($dimensao);
$total_avaliados = $this->modelagemRepository->totalAvaliadosByPeriodo($periodo, $this->getPrograma()['modelagem']);
foreach($total_avaliados as $avaliados) {
if (($key = array_search($avaliados['id_grupo'], array_column($dados, 'id'))) !== false) {
$dados[$key]['total_avaliados'] = $avaliados['total_avaliados'];
}
}
return $this->render('right-menu.html.twig', [
' tamanhoModal' => $tamanhoComponente
,'referer' => $urReferer
,'dados' => json_encode($dados, true)
,'dimensao' => $dimensao
,'icones' => $this->getIcones()
,'id_filtro' => $id_avaliado
]);
}
}