src/Controller/Componentes/ProgramaController.php line 114

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Componentes;
  3. use App\Controller\Customs\Custom2IMController;
  4. use App\Helper\ProgramaHelper;
  5. use App\Repository\Cliente\Modelagem\ModelagemRepository;
  6. use App\Entity\Cliente\Modelagem\Modelagem;
  7. use App\Repository\Cliente\Modelagem\ProgramaRepository;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * @Route("/programa")
  13.  */
  14. class ProgramaController extends Custom2IMController
  15. {
  16.     /**
  17.      * @var ModelagemRepository
  18.      */
  19.     private $modelagem;
  20.     /**
  21.      * @var ProgramaHelper
  22.      */
  23.     private $programaHelper;
  24.     /**
  25.      * @var ProgramaRepository
  26.      */
  27.     private $programaRepository;
  28.     /**
  29.      * @param ModelagemRepository $modelagem
  30.      * @param ProgramaHelper $programaHelper
  31.      * @param ProgramaRepository $programaRepository
  32.      */
  33.     public function __construct(
  34.         ModelagemRepository $modelagem,
  35.         ProgramaHelper $programaHelper,
  36.         ProgramaRepository $programaRepository
  37.     ) {
  38.         $this->modelagem $modelagem;
  39.         $this->programaHelper $programaHelper;
  40.         $this->programaRepository $programaRepository;
  41.     }
  42.     /**
  43.      * Processa o array de modelagem e programa para
  44.      * retornar o string que será utilizado nas querys.
  45.      *
  46.      * @param array $dados
  47.      * @return string
  48.      */
  49.     private function __processaWhere(Modelagem $modelagem): string
  50.     {
  51.         $idModelagem = (int) $modelagem->getIdModelagem();
  52.         $idPrograma = (int) $modelagem->getPrograma()->getIdPrograma();
  53.         return " AND id_programa = {$idPrograma} AND id_modelagem = {$idModelagem}";
  54.     }
  55.     /**
  56.      * Busca todos os programa e suas modelagem. Utiliza o critério
  57.      * de programa ativo e programa não seja deletado falso e o mesmo
  58.      * para a modelagem.
  59.      *
  60.      * @Route("/", name="programa_componente")
  61.      *
  62.      * @author
  63.      *
  64.      * @return render
  65.      */
  66.     public function index(Request $request)
  67.     {
  68.         // filtro padrao
  69.         $arrayModelagemCriteria = ['ativo' => true];
  70.         $gestor_permissoes $this->getSession()->get('gestor_permissoes');
  71.         // mostra somente as modelagens do avaliado
  72.         if ( 'ROLE_AVALIADO' === $this->getUser()->getPerfil()->getRole() ) {
  73.             $arrayModelagemCriteria['idModelagem'] = $this->getIdModelagemAvaliado();
  74.         }
  75.         
  76.         $modelagensInicial $this->modelagem->buscaModelagensPermissao($arrayModelagemCriteria$gestor_permissoes);
  77.         if ( 
  78.             'ROLE_AVALIADO' === $this->getUser()->getPerfil()->getRole() 
  79.             && $this->getSession()->get('cliente')->getDbname() == 'analytics_gvix'
  80.         ) { 
  81.             foreach($modelagensInicial AS $k => $mi) {
  82.                 if($mi['id_modelagem'] == 2) {
  83.                     unset($modelagensInicial[$k]);
  84.                 }
  85.             }
  86.         }
  87.         
  88.         if ( === count($modelagensInicial
  89.         //AND !$this->getSession()->has('modelagem') 
  90.         ) {
  91.             $modelagens $this->modelagem->find($modelagensInicial[0]['id_modelagem']);
  92.             
  93.             $modelagem $modelagens;
  94.             
  95.             $programaModelagem['modelagem'] = $modelagem->getIdModelagem();
  96.             $programaModelagem['modelagem_obj'] = $modelagem;
  97.             $programaModelagem['modelagem_nome'] = $modelagem->getTitulo();
  98.             $programaModelagem['modelagem_avaliacao_modelagem'] = $this->modelagem->getComAvaliacaoModelagem($programaModelagem['modelagem']);
  99.             $programaModelagem['programa'] = $this->programaRepository->buscaProgramaPorModelagem($programaModelagem['modelagem']);
  100.             $programaModelagem['where'] = $this->__processaWhere($modelagem); 
  101.             if ( $modelagem ) {
  102.                 $this->getSession()->set('modelagem'$modelagem);
  103.                 $this->getSession()->set('programa'$programaModelagem);
  104.             }
  105.         }
  106.         return $this->render('componentes/programa/componente.html.twig', ['modelagens' => $modelagensInicial]);
  107.     }
  108.     /**
  109.      * @Route("/processa", name="programa_processa")
  110.      *
  111.      * @param Request $request
  112.      * @return JsonResponse
  113.      */
  114.     public function processa(Request $request) :JsonResponse
  115.     {
  116.         $programaModelagem = [];
  117.         if (!$request->query->has('modelagem')) {
  118.             return new JsonResponse([
  119.                  'sucesso' => false
  120.                 ,'mensagem' => 'Erro no sistema de Períodos!'
  121.                 ,'codigo' => 'PRO.002'
  122.             ]);
  123.         }
  124.         $idModelagem = (int) $request->query->get('modelagem');
  125.         try {
  126.             $modelagem $this->modelagem->find($idModelagem);
  127.             $programaModelagem['modelagem'] = $idModelagem;
  128.             $programaModelagem['modelagem_obj'] = $modelagem;
  129.             $programaModelagem['modelagem_avaliacao_modelagem'] = $this->modelagem->getComAvaliacaoModelagem($idModelagem);
  130.             $programaModelagem['modelagem_nome'] = $this->modelagem->getNomeModelagem($idModelagem)['titulo'];
  131.             $programaModelagem['programa'] = $this->programaRepository->buscaProgramaPorModelagem($idModelagem);
  132.             $programaModelagem['where'] = $this->__processaWhere($modelagem);
  133.             if ( $modelagem ) {
  134.                 $this->getSession()->set('modelagem'$modelagem);
  135.                 $this->getSession()->set('programa'$programaModelagem);
  136.             }
  137.             if ($request->query->get('referer') != 'gestor_rede') {
  138.                 $this->limpaPeriodos();
  139.                 $this->limpaFiltros();
  140.             }
  141.             $return = ['sucesso' => true'mensagem' => 'Programa Configurado!''periodo' => $this->getSession()->has('periodo')];
  142.         } catch (\Throwable $ex) {
  143.             $return = ['sucesso' => false'mensagem' => 'Erro no sistema de Programas!''codigo' => 'PRO.001'];
  144.         }
  145.         return new JsonResponse($return);
  146.     }
  147. }