/**
  * Método que busca todos os parametros referente a solicitações.
  * @return Array Retorna todos os parametros referente a solicitações.
  */
 public static function get_parametros()
 {
     $ci =& get_instance();
     $parametros = $ci->cache->apc->get(PARAMETROS);
     if (empty($parametros['VISUALIZAR_SOLICITACAO']) || empty($parametros['CORES_SOLICITACOES']) || empty($parametros['DIRECIONAR_CHAMADO']) || empty($parametros['REDIRECIONAR_CHAMADO']) || empty($parametros['EDITAR_SOLICITACAO']) || empty($parametros['ATENDER_SOLICITACAO']) || empty($parametros['ENCERRAR_SOLICITACAO']) || empty($parametros['EXCLUIR_SOLICITACAO'])) {
         $ci->cache->apc->delete(PARAMETROS);
         unset($parametros['VISUALIZAR_SOLICITACAO']);
         unset($parametros['CORES_SOLICITACOES']);
         unset($parametros['DIRECIONAR_CHAMADO']);
         unset($parametros['REDIRECIONAR_CHAMADO']);
         unset($parametros['EDITAR_SOLICITACAO']);
         unset($parametros['ATENDER_SOLICITACAO']);
         unset($parametros['ENCERRAR_SOLICITACAO']);
         unset($parametros['EXCLUIR_SOLICITACAO']);
         $parametros['VISUALIZAR_SOLICITACAO'] = Parametros_solicitacoes::get_dados_parametros('VISUALIZAR_SOLICITACAO');
         $parametros['DIRECIONAR_CHAMADO'] = Parametros_solicitacoes::get_dados_parametros('DIRECIONAR_CHAMADO');
         $parametros['REDIRECIONAR_CHAMADO'] = Parametros_solicitacoes::get_dados_parametros('REDIRECIONAR_CHAMADO');
         $parametros['EDITAR_SOLICITACAO'] = Parametros_solicitacoes::get_dados_parametros('EDITAR_SOLICITACAO');
         $parametros['ATENDER_SOLICITACAO'] = Parametros_solicitacoes::get_dados_parametros('ATENDER_SOLICITACAO');
         $parametros['ENCERRAR_SOLICITACAO'] = Parametros_solicitacoes::get_dados_parametros('ENCERRAR_SOLICITACAO');
         $parametros['EXCLUIR_SOLICITACAO'] = Parametros_solicitacoes::get_dados_parametros('EXCLUIR_SOLICITACAO');
         $query = $ci->db->select('prioridade.nome, prioridade.cor')->from('openmycall.prioridade')->order_by('prioridade.id')->get();
         $result = $query->result_array();
         foreach ($result as $values) {
             $parametros['CORES_SOLICITACOES'][$values['nome']] = $values['cor'];
         }
         $ci->cache->apc->save(PARAMETROS, $parametros, TTL_CACHE);
     }
     return $parametros;
 }
Ejemplo n.º 2
0
 /**
  * Finaliza um solicitação que esta em atendimento.
  */
 public function encerrar()
 {
     $perfil = $_SESSION['perfil'];
     $usuario = $_SESSION['id'];
     $id_solicitacao = filter_input(INPUT_POST, 'solicitacao', FILTER_SANITIZE_NUMBER_INT);
     $resolucao = filter_input(INPUT_POST, 'resolucao_solicitacao', FILTER_DEFAULT, FILTER_FLAG_EMPTY_STRING_NULL);
     $parametros = Parametros_solicitacoes::get_parametros();
     $solicitacao = $this->model->get_dados_solicitacao($id_solicitacao, $perfil, $usuario);
     /*
      * Verifica se usuário tem permissão para encerra solicitação e
      * se o usuário é o técnico responsavel pelo projeto e se a solicitação não esta encerrada.
      */
     if (array_search($perfil, $parametros['ENCERRAR_SOLICITACAO']) !== FALSE && $solicitacao['id_tecnico'] == $usuario && !empty($solicitacao['atendimento']) && empty($solicitacao['encerramento'])) {
         $hoje = new DateTime();
         $hoje = $hoje->format('Y-m-d H:i:s');
         /*
          * Passa os dados referente ao encerramento da solicitação
          */
         $dados = array('encerramento' => $hoje, 'resolucao' => $resolucao);
         /*
          * Realização o encerramento da solicitação e informa o resultado da execução
          */
         if ($this->model->encerrar($id_solicitacao, $dados)) {
             $_SESSION['msg_sucesso'] = $this->translate['info_success_terminate_request'];
         } else {
             $_SESSION['msg_erro'] = $this->translate['info_error_terminate_request'];
         }
         /*
          * Gera dados para gravação de log.
          */
         $log = array('dados' => $dados, 'aplicacao' => "solicitacao/encerrar", 'msg' => empty($_SESSION['msg_sucesso']) ? $_SESSION['msg_erro'] : $_SESSION['msg_sucesso']);
         /*
          * Grava dados da operação realizada
          */
         Logs::gravar($log, $_SESSION['id']);
         redirect("solicitacao/visualizar/{$id_solicitacao}");
     } else {
         $_SESSION['msg_erro'] = $this->translate['info_error_user_not_terminate_request'];
         redirect("solicitacao/visualizar/{$id_solicitacao}");
     }
 }
Ejemplo n.º 3
0
 /**
  * Busca dados de um solicitação
  * @param int $solicitacao <b>ID</b> da solicitação
  * @param int $usuario <b>ID</b> do usuário que deseja visualizar dados
  * @param string $perfil <b>perfil</b> do usuário.
  * @return Array Retorna um <b>Array</b> com dados referentes a solicitação.
  */
 public function get_solicitacao($solicitacao, $usuario, $perfil)
 {
     $config = Parametros_solicitacoes::get_parametros();
     $select = "projeto_tipo_problema.id AS projeto_problema,\n                    projeto.id AS projeto,\n                    tipo_problema.id AS problema,\n                    solicitacao.id AS solicitacao,\n                    solicitacao.prioridade AS prioridade,\n                    solicitacao.solicitante AS solicitante,\n                    solicitacao.atendente AS atendente,\n                    solicitacao.tecnico AS tecnico,\n                    solicitacao.solicitacao_origem AS solicitacao_origem,\n                    solicitacao.descricao AS descricao";
     $this->db->select($select);
     $this->db->from('openmycall.solicitacao');
     $this->db->join('openmycall.projeto_tipo_problema', 'solicitacao.projeto_problema = projeto_tipo_problema.id', 'inner');
     $this->db->join('openmycall.projeto', 'projeto_tipo_problema.projeto = projeto.id', 'inner');
     $this->db->join('openmycall.tipo_problema', 'projeto_tipo_problema.problema = tipo_problema.id', 'inner');
     $this->db->join('openmycall.projeto_responsaveis', 'projeto.id = projeto_responsaveis.projeto', 'inner');
     $this->db->where(array('solicitacao.id' => $solicitacao, 'projeto_responsaveis.usuario' => $usuario));
     if (array_search($perfil, $config['VISUALIZAR_SOLICITACAO']) === FALSE) {
         $this->db->group_start();
         $this->db->or_where(array('solicitacao.solicitante' => $usuario, 'solicitacao.atendente' => $usuario, 'solicitacao.tecnico' => $usuario));
         $this->db->group_end();
     }
     /*
      * Dados referente a solicitação
      */
     $result = $this->db->get()->row_array();
     /*
      * Dados referentes aos arquivos anexos
      */
     $this->db->select('id, nome')->from('openmycall.arquivos');
     $result['arquivos'] = $this->db->where(array('solicitacao' => $solicitacao))->get()->result_array();
     return $result;
 }