src/Entity/Cliente/Dimensao.php line 5

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Cliente;
  3. class Dimensao
  4. {
  5.     const PROGRAMA 'programa';
  6.     const POR_AVALIADO 'avaliado';
  7.     const POR_ESPECIALIDADE 'especialidade';
  8.     const AVALIADO_DETALHES 'detalhes';
  9.     const ORDEM_DIMENSOES = [
  10.         => self::PROGRAMA,
  11.         => self::POR_ESPECIALIDADE,
  12.         => self::POR_AVALIADO,
  13.         => self::AVALIADO_DETALHES,
  14.     ];
  15.     const TEMPLATES = [
  16.         self::POR_AVALIADO => 'desempenho-por-avaliado.html.twig',
  17.         self::POR_ESPECIALIDADE => 'desempenho-por-especialidade.html.twig',
  18.         self::PROGRAMA => 'desempenho-por-programa.html.twig',
  19.         self::AVALIADO_DETALHES => 'avaliado-informacoes.html.twig',
  20.     ];
  21.     /**
  22.      * Id utilizado para a busca de dados.
  23.      *
  24.      * @var int
  25.      */
  26.     private $idBusca;
  27.     /**
  28.      * Id do avaliado para filtro
  29.      *
  30.      * @var int
  31.      */
  32.     private $idFiltro;
  33.     /**
  34.      * @var array
  35.      */
  36.     private $programa;
  37.     /**
  38.      * @var array
  39.      */
  40.     private $periodo;
  41.     /**
  42.      * @var string
  43.      */
  44.     private $dimensao;
  45.     private $titulo;
  46.     private $tituloGraficoDistruibuicaoEvs;
  47.     public function getPrograma(): ?array
  48.     {
  49.         return $this->programa;
  50.     }
  51.     public function setPrograma(?array $programa): self
  52.     {
  53.         $this->programa $programa;
  54.         return $this;
  55.     }
  56.     public function getPeriodo(): ?array
  57.     {
  58.         return $this->periodo;
  59.     }
  60.     public function setPeriodo(?array $periodo): self
  61.     {
  62.         $this->periodo $periodo;
  63.         return $this;
  64.     }
  65.     public function setDimensao(?string $dimensao): self
  66.     {
  67.         $this->dimensao $dimensao;
  68.         return $this;
  69.     }
  70.     public function getDimensao(): ?string
  71.     {
  72.         return $this->dimensao;
  73.     }
  74.     public function getIdBusca(): ?int
  75.     {
  76.         return $this->idBusca;
  77.     }
  78.     public function setIdBusca(?int $idBusca): self
  79.     {
  80.         $this->idBusca $idBusca;
  81.         return $this;
  82.     }
  83.     /**
  84.      * @param integer|null $idFiltro
  85.      * @return self
  86.      */
  87.     public function setIdFiltro(?int $idFiltro): self
  88.     {
  89.         $this->idFiltro $idFiltro;
  90.         return $this;
  91.     }
  92.     /**
  93.      * @return integer|null
  94.      */
  95.     public function getIdFiltro(): ?int
  96.     {
  97.         return $this->idFiltro;
  98.     }
  99.     /**
  100.      * Get the value of titulo.
  101.      */
  102.     public function getTitulo(): string
  103.     {
  104.         return $this->titulo;
  105.     }
  106.     /**
  107.      * Set the value of titulo.
  108.      */
  109.     public function setTitulo(string $titulo): self
  110.     {
  111.         $this->titulo $titulo;
  112.         return $this;
  113.     }
  114.     /**
  115.      * Define qual deverá ser a próxima dimensão
  116.      * acessada.
  117.      */
  118.     public function proximaDimensao(): string
  119.     {
  120.         $ordem self::ORDEM_DIMENSOES;
  121.         $key array_search($this->getDimensao(), $ordem);
  122.         return array_key_exists(($key 1), $ordem) ? $ordem[($key 1)] : $ordem[0];
  123.     }
  124.     public function getTemplate(): string
  125.     {
  126.         $templates self::TEMPLATES;
  127.         
  128.         return $templates[$this->getDimensao()];
  129.     }
  130.     public static function anteriorDimensao(?string $dimensao): string
  131.     {
  132.         $ordem self::ORDEM_DIMENSOES;
  133.         $key array_search($dimensao$ordem);
  134.         return array_key_exists(($key 1), $ordem) ? $ordem[($key 1)] : $ordem[0];
  135.     }
  136.     /**
  137.      * @param array|null $id_busca
  138.      * @param integer|null $id_avaliado
  139.      * @return array
  140.      */
  141.     public static function defineFiltro(?array $id_busca, ?int $id_avaliado NULL): array
  142.     {
  143.         $id_busca implode(','$id_busca);
  144.         $buscaAvaliado = ( $id_avaliado ) ? "AND id_avaliado = {$id_avaliado}NULL;
  145.         return $id_busca
  146.             ? ["AND id_grupo IN ({$id_busca}{$buscaAvaliado}""AND id_grupo IN ({$id_busca}{$buscaAvaliado}"]
  147.             : [];
  148.     }
  149.     /**
  150.      * @param string|null $dimensao
  151.      * @param array|null $id_filtro
  152.      * @param [type] $id_busca
  153.      * @return array
  154.      */
  155.     public static function atualizaFiltro(?string $dimensao, ?array $id_filtro$id_busca): array
  156.     {
  157.         $busca = [];
  158.         $id_filtro $id_filtro implode(','$id_filtro) : '';
  159.         if ( $dimensao ) {
  160.             switch ($dimensao) {
  161.                 case self::PROGRAMA:
  162.                     $busca[0] = $busca[1] = empty($id_filtro) ? '' "AND id_grupo IN ({$id_filtro})";
  163.                     break;
  164.                 case self::POR_ESPECIALIDADE:
  165.                     $busca[0] = "AND id_grupo = {$id_busca}";
  166.                     $busca[0] .= empty($id_filtro) ? '' " AND id_avaliado IN ({$id_filtro})";
  167.                     $busca[1] = "AND id_grupo = {$id_busca}";
  168.                     break;
  169.             }
  170.         }
  171.         return $busca;
  172.     }
  173.     /**
  174.      * Retorna a string do grafico de Distribuição do EVS com a dimensao.
  175.      */
  176.     public static function processaTituloGraficoDistribuicaoEvs(string $dimensao, ?string $filtro): string
  177.     {
  178.         if ($dimensao) {
  179.             switch ($dimensao) {
  180.                 case self::POR_ESPECIALIDADE:
  181.                     $retorno sprintf('DISTRIBUIÇÃO DOS AVALIADOS (%s) SEGUNDO O EVS'$filtro);
  182.                     break;
  183.                 default:
  184.                     break;
  185.             }
  186.         }
  187.         return $retorno;
  188.     }
  189.     public static function getFiltroVariavel($dimensao): ?array
  190.     {
  191.         switch ($dimensao) {
  192.             case self::PROGRAMA:
  193.                 $retorno['id'] = 'id_grupo';
  194.                 $retorno['nome'] = 'nome_grupo';
  195.                 break;
  196.             case self::POR_ESPECIALIDADE:
  197.                 $retorno['id'] = 'id_avaliado';
  198.                 $retorno['nome'] = 'nome_avaliado';
  199.                 break;
  200.             default:
  201.                 $retorno null;
  202.                 break;
  203.         }
  204.         return $retorno;
  205.     }
  206.     public function setTituloGraficoDistribuicaoEvs($tituloGraficoDistruibuicaoEvs): self
  207.     {
  208.         $this->tituloGraficoDistruibuicaoEvs $tituloGraficoDistruibuicaoEvs;
  209.         return $this;
  210.     }
  211.     public function getTituloGraficoDistribuicaoEvs(): string
  212.     {
  213.         return $this->tituloGraficoDistruibuicaoEvs;
  214.     }
  215. }