<?php
namespace App\Controller\Visao\GPS\Avaliado\Componentes;
use App\Controller\Componentes\ComponenteAbstract;
use App\Repository\Cliente\Dados\EvsRepository;
use App\Repository\Cliente\Dados\GpsRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
class EvsAvaliadoController extends ComponenteAbstract
{
const TEMPLATEBASE = 'visao/gps/avaliado/componentes/';
/**
* @var array
*/
private $dados_avaliado = [];
/**
* @param RequestStack $requestStack
* @param GpsRepository $gpsRepository
*/
public function __construct(RequestStack $requestStack, GpsRepository $gpsRepository)
{
$sess = $requestStack->getCurrentRequest()->getSession();
// parent request
$parentRequestController = $requestStack->getParentRequest()->attributes->get('_controller');
$this->dados_avaliado = ( 'App\Controller\Visao\GPS\Avaliado\AvaliadoController::anual' === $parentRequestController )
? $gpsRepository->buscarPerformance(['where' => "AND id_programa = {$sess->get('programa')['programa']['id_programa']} AND id_modelagem = {$sess->get('avaliado')['id_modelagem']}"], ['where' => " AND (periodo->>'ano')::integer = " . $sess->get('periodo')['from']['ano']], [' AND id_avaliado = ' . $sess->get('avaliado')['id_avaliado'], ' AND id_grupo = ' . $sess->get('avaliado')['id_grupo']])
: $gpsRepository->buscarPerformance(['where' => "AND id_programa = {$sess->get('programa')['programa']['id_programa']} AND id_modelagem = {$sess->get('avaliado')['id_modelagem']}"], $sess->get('periodo'), [' AND id_avaliado = ' . $sess->get('avaliado')['id_avaliado'], ' AND id_grupo = ' . $sess->get('avaliado')['id_grupo']]);
unset($sess);
}
/**
* @param Request $request
* @return Response
*/
public function index(Request $request): Response
{
return $this->render('evs-avaliado.html.twig', [
'referer' => $request->headers->get('referer'),
'localizacao' => $request->query->get('relacionamento'),
'programa' => $this->getPrograma()['programa']['titulo'],
'modelagem' => $this->getAvaliado()['nome_modelagem'],
'retorno' => ['dados' => $this->dados_avaliado],
'icones' => $this->getIcones(),
'avaliado' => $this->getAvaliado()
]);
}
/**
* @return Response
*/
public function indiceQualidade() :Response
{
return $this->render('indice-qualidade.html.twig', [
'indice_qualidade' => $this->dados_avaliado['performance_qualidade'],
'peso_qualidade' => $this->dados_avaliado['peso_qualidade'],
]);
}
/**
* @return Response
*/
public function indiceCusteio() :Response
{
return $this->render('indice-custeio.html.twig', [
'indice_custeio' => $this->dados_avaliado['performance_custo'],
'peso_custo' => $this->dados_avaliado['peso_custo'],
]);
}
}