/** * 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}"); } }
/** * 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; }