instancia; } //dataprevisaoresposta public function getDataPrevisaoResposta(){ return $this->dataprevisaoresposta; } public function setDataPrevisaoResposta($valor){ $this->dataprevisaoresposta = $valor; } //dataprorrogaca public function getDataProrrogacao(){ return $this->dataprorrogacao; } public function setDataProrrogacao($valor){ $this->dataprorrogacao = $valor; } //motivoprorrogacao public function getMotivoProrrogacao(){ return $this->motivoprorrogacao; } public function setMotivoProrrogacao($valor){ $this->motivoprorrogacao = str_replace("'","\'",$valor); } //idsolicitacaoorigem public function getUsuarioProrrogacao(){ return $this->usuarioprorrogacao; } public function setUsuarioProrrogacao($valor){ $this->usuarioprorrogacao = $valor; } //dataresposta public function getDataResposta(){ return $this->dataresposta; } public function setDataResposta($valor){ $this->dataresposta = $valor; } //resposta public function getResposta(){ return $this->resposta; } public function setResposta($valor){ $this->resposta = $valor; } //usuarioresposta public function getUsuarioResposta(){ return $this->usuarioresposta; } public function setUsuarioResposta($valor){ $this->usuarioresposta = $valor; } //idsecretariaresposta public function getIdSecretariaResposta(){ return $this->idsecretariaresposta; } public function setIdSecretariaResposta($valor){ $this->idsecretariaresposta = $valor; } //usuariorecebimento public function getUsuarioRecebimento(){ return $this->usuariorecebimento; } public function setUsuarioRecebimento($valor){ $this->usuariorecebimento = $valor; } //idsolicitacao public function getIdSolicitacao(){ return $this->idsolicitacao; } public function setIdSolicitacao($valor){ $this->idsolicitacao = $valor; } //datasolicitacao public function getDataSolicitacao(){ return $this->datasolicitacao; } public function setDataSolicitacao($valor){ $this->datasolicitacao = $valor; } //datarecebimentosolicitacao public function getDataRecebimentoSolicitacao(){ return $this->datarecebimentosolicitacao; } public function setDataRecebimentoSolicitacao($valor){ $this->datarecebimentosolicitacao = $valor; } //idsolicitacaoorigem public function getIdSolicitacaoOrigem(){ return $this->idsolicitacaoorigem; } public function setIdSolicitacaoOrigem($valor){ $this->idsolicitacaoorigem = $valor; } //idtiposolicitacao public function getIdTipoSolicitacao(){ return $this->idtiposolicitacao; } public function setIdTipoSolicitacao($valor){ $this->idtiposolicitacao = $valor; } //descrição tipo solicitação public static function getDescricaoTipoSolicitacao($idtiposolicitacao){ $rs = execQuery("select nome from lda_tiposolicitacao where idtiposolicitacao = $idtiposolicitacao"); if(mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); return $row["nome"]; } else return "Tipo de solicitação não encontrado"; } //textosolicitacao public function getTextoSolicitacao(){ return $this->textosolicitacao; } public function setTextoSolicitacao($valor){ $this->textosolicitacao = str_replace("'","\'",$valor); } //numprotocolo public function getNumeroProtocolo(){ return $this->numeroprotocolo; } public function setNumeroProtocolo($numero,$ano){ $this->numeroprotocolo = $numero."/".$ano; } //secretaria selecionada (pelo usuario na hora de fazer a solicitação) public function getIdSecretariaSelecionada(){ return $this->idsecretariaselecionada; } public function setIdSecretariaSelecionada($valor){ $this->idsecretariaselecionada = $valor; } //formaretorno public function getFormaRetorno(){ return $this->formaretorno; } public function setFormaRetorno($valor){ $this->formaretorno = $valor; } //descrição tipo retorno public static function getDescricaoFormaRetorno($formaretorno){ switch($formaretorno) { case "E": return "E-mail"; break; case "F": return "Fax"; break; case "C": return "Correio"; break; default: return "Forma de retorno inexistente"; } } //descrição tipo de instancia public static function getDescricaoTipoInstancia($instancia){ switch($instancia) { case "I": return "Inicial"; break; case "S": return "Seguimento"; break; case "U": return "Última"; break; default: return "Instancia inexistente"; } } //situacao public function getSituacao(){ return $this->situacao; } public function setSituacao($valor){ $this->situacao = $valor; } //descrição situacao public static function getDescricaoSituacao($situacao){ switch($situacao) { case "A": return "Aberto"; break; case "T": return "Em tramitacao"; break; case "N": return "Negado"; break; case "R": return "Solicitação Respondida"; break; default: return "Situação inexistente"; } } //idsolicitante public function getIdSolicitante(){ return $this->idsolicitante; } public function setIdSolicitante($valor){ $this->idsolicitante = $valor; } //erro public function getErro(){ return $this->erro; } public function getSolicitante(){ return $this->solicitante; } //--------CONSTRUTOR--------------------------- function Solicitacao($idsolicitacao=null) { if(!empty($idsolicitacao)) { $this->getDados($idsolicitacao); } } //--------------------------------------------- function getDados($idsolicitacao) { $sql = "select t.*, c.nome as solicitante, urec.nome as usuariorecebimento, upro.nome as usuarioprorrogacao, ures.nome as usuarioresposta, ts.instancia from lda_solicitacao t join lda_solicitante c on c.idsolicitante = t.idsolicitante join lda_tiposolicitacao ts on ts.idtiposolicitacao = t.idtiposolicitacao left join sis_usuario urec on urec.idusuario = t.idusuariorecebimento left join sis_usuario upro on upro.idusuario = t.idusuarioprorrogacao left join sis_usuario ures on ures.idusuario = t.idusuarioresposta where idsolicitacao = $idsolicitacao"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $this->idsolicitacao = $row["idsolicitacao"]; $this->idsolicitacaoorigem = $row["idsolicitacaoorigem"]; $this->textosolicitacao = $row["textosolicitacao"]; $this->situacao = $row["situacao"]; $this->formaretorno = $row["formaretorno"]; $this->idsolicitante = $row["idsolicitante"]; $this->solicitante = $row["solicitante"]; $this->idtiposolicitacao = $row["idtiposolicitacao"]; $this->instancia = $row["instancia"]; $this->setNumeroProtocolo($row["numprotocolo"],$row["anoprotocolo"]); $this->datasolicitacao = bdToDate($row["datasolicitacao"]); $this->datarecebimentosolicitacao = bdToDate($row["datarecebimentosolicitacao"]); $this->usuariorecebimento = $row["usuariorecebimento"]; $this->dataprevisaoresposta = bdToDate($row["dataprevisaoresposta"]); $this->dataprorrogacao = bdToDate($row["dataprorrogacao"]); $this->motivoprorrogacao = $row["motivoprorrogacao"]; $this->usuarioprorrogacao = $row["usuarioprorrogacao"]; $this->dataresposta = bdToDate($row["dataresposta"]); $this->resposta = $row["resposta"]; $this->usuarioresposta = $row["usuarioresposta"]; $this->idsecretariaselecionada = $row["idsecretariaselecionada"]; $this->idsecretariaresposta = $row["idsecretariaresposta"]; } else die("Solicitação nao informada"); } public static function getParametrosConfiguracao() { //recupera parametros de configuracao $sql = "select * from lda_configuracao"; $rs = execQuery($sql); return mysql_fetch_array($rs); } //recupera a instancia do tipo de solicitação passado: [I]inicial - [S]eguimento - [U]ltima public static function getInstaciaTipoSolicitacao($idtiposolicitacao) { //recupera a instancia do tipo de solicitação $sql = "select instancia from lda_tiposolicitacao where idtiposolicitacao = $idtiposolicitacao"; $rs = execQuery($sql); $row = mysql_fetch_array($rs); return $row['instancia']; } //recupera o proximo tipo de solicitação para uma solicitação informada public function getProximoTipoSolicitacao($idsolicitacao="",&$idtiposolicitacao, &$erro="") { $erro=""; //se for passado uma solicitação if(!empty($idsolicitacao)) { //recupera o proximo tipo de solicitacao $sql = "select idtiposolicitacao_seguinte from lda_tiposolicitacao where idtiposolicitacao = (select idtiposolicitacao from lda_solicitacao where idsolicitacao = $idsolicitacao)"; $rs = execQuery($sql); if (mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $idtiposolicitacao = $row['idtiposolicitacao_seguinte']; //se não for encontrado novo tipo de solicitação if(empty($idtiposolicitacao)) { $erro = "Não é possível inserir novo recurso para essa solicitação, pois essa solicitação já está na última instância."; return false; } } else { $erro = "Não foi encontrado tipo de solicitação para essa solicitação"; return false; } } else { //recupera a solicitação inicial $sql = "select idtiposolicitacao from lda_tiposolicitacao where instancia = 'I'"; $rs = execQuery($sql); if (mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $idtiposolicitacao = $row['idtiposolicitacao']; } else { $erro = "Não foi encontrado instância inicial cadastrada no sistema."; return false; } } return true; } function validaDados($instancia="I") { if($instancia != "I") { if (empty($this->idsolicitacaoorigem)) { $this->erro = "Processo não informado."; return false; } } if (empty($this->textosolicitacao)) { $this->erro = "Especificação da solicitação não informada."; return false; } elseif (empty($this->formaretorno)) { $this->erro = "Forma de retorno não informado"; return false; } elseif (empty($this->idsolicitante)) { $this->erro = "Solicitante não informado"; return false; } if ($this->formaretorno == "C" or $this->formaretorno == "F") { $rs = execQuery("select logradouro, uf, cidade, telefone, dddtelefone from lda_solicitante where idsolicitante = $this->idsolicitante"); $row = mysql_fetch_array($rs); //se a forma de retorno for correio, verifica se existe endereço cadastrado if($this->formaretorno == "C" and (empty($row['logradouro']) or empty($row['uf']) or empty($row['cidade']))) { $this->erro = "Para forma de retorno via correio é necessário atualizar o endereço no seu cadastro."; return false; } //se a forma de retorno for telefone elseif($this->formaretorno == "F" and (empty($row['telefone']) or empty($row['dddtelefone']))) { $this->erro = "Para forma de retorno via correio é necessário atualizar o telefone no seu cadastro."; return false; } } //verifica se ja existe registro cadastrado com a informaçao passada --- if (!empty($this->idsolicitacao)) $sql = "select * from lda_solicitacao where textosolicitacao = '$this->textosolicitacao' and formaretorno = '$this->formaretorno' and idsolicitante = $this->idsolicitante and idsolicitacao <> $this->idsolicitacao"; else $sql = "select * from lda_solicitacao where textosolicitacao = '$this->textosolicitacao' and formaretorno = '$this->formaretorno' and idsolicitante = $this->idsolicitante "; if(mysql_num_rows(execQuery($sql)) > 0) { $this->erro = "Essa solicitação já está cadastrada."; return false; } //----------------------------------------------------------------------- return true; } //envia email de aviso de nova solicitação para o SIC //secretaria -> recebe o idsecretaria ou sigla //tipomsg -> identifica o tipo de mensagem: [M]ovimentação - [N]ova solicitação - [R]ecurso public static function enviaEmailSic($secretaria, $tipomsg="M") { //recupera o email do SIC $sql = "select emailsic from sis_secretaria where sigla = '$secretaria' or idsecretaria = '$secretaria'"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $emailsic = $row["emailsic"]; } //se houver email cadastrado, faz o envio if(!empty($emailsic)) { //se for movimentação if($tipomsg == "M") { $titulo = "Movimentação de solicitação de informação"; $body="Prezado(a) colaborador(a),

Foi movimentada uma solicitação de informação para o seu órgão. Favor verificar a demanda no sistema ".SISTEMA_NOME." no endereço: ".URL_BASE_SISTEMA."

Mensagem Automática do Sistema ".SISTEMA_NOME; } //se for nova solicitação else if($tipomsg == "N") { $titulo = "Nova solicitação de informação - "; $body="Prezado(a) colaborador(a),

Foi aberta uma solicitação de informação. Favor verificar a demanda no sistema ".SISTEMA_NOME." no endereço: ".URL_BASE_SISTEMA."

Mensagem Automática do Sistema ".SISTEMA_NOME; /*$titulo = "Nova de solicitação de informação - ".$demanda->getNumeroProtocolo().""; $body = "Prezado(a) colaborador(a),

Foi aberta uma solicitação de informação com número de protocolo ".$demanda->getNumeroProtocolo().", com a seguinte descrição:
" . '"' .$demanda->getTextoSolicitacao(). '"' . "

Favor verificar a solicitação e dar encaminahmentos necessários através do ".URL_BASE_SISTEMA.".
Mensagem Automática do Sistema ".SISTEMA_NOME.".";*/ } //se for novo recurso else if($tipomsg == "R") { $titulo = "Novo recurso de solicitação de informação"; $body="Prezado(a) colaborador(a),

Foi aberta uma solicitação de informação. Favor verificar a demanda no sistema ".SISTEMA_NOME." no endereço: ".URL_BASE_SISTEMA."

Mensagem Automática do Sistema ".SISTEMA_NOME; } else { $titulo = "Solicitação de informação"; $body="Prezado(a) colaborador(a),

Foi aberta uma solicitação de informação. Favor verificar a demanda no sistema ".SISTEMA_NOME." no endereço: ".URL_BASE_SISTEMA."

Mensagem Automática do Sistema ".SISTEMA_NOME; } if (!sendmail($emailsic,$titulo,$body)) { //caso de erro loga o erro logger("Lei de acesso - Não foi possível enviar e-mail para o SIC: $emailsic"); } } } //envia email de aviso para o solicitante //secretaria -> recebe o idsecretaria ou sigla //tipomsg -> identifica o tipo de mensagem: [N]ova solicitação - [P]rorrogada - [R]esposta da solicitação public static function enviaEmailSolicitante($idsolicitacao, $tipomsg="N") { //recupera o email do solicitante $sql = "select pes.email, pes.nome, sol.dataprevisaoresposta, sol.numprotocolo, sol.anoprotocolo from lda_solicitacao sol, lda_solicitante pes where sol.idsolicitante = pes.idsolicitante and sol.idsolicitacao = $idsolicitacao"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $email = $row["email"]; $nome = $row["nome"]; $processo = $row["numprotocolo"]."/".$row["anoprotocolo"]; $dataprevisaoresposta = bdToDate($row['dataprevisaoresposta']); } //se houver email cadastrado, faz o envio if(!empty($email)) { //se for nova solicitação if($tipomsg == "N") { $titulo = "Solicitação cadastrada"; $body="Prezado(a) $nome,

Sua solicitação $processo foi cadastrada com sucesso.

Data prevista para resposta: $dataprevisaoresposta

Para acompanhar o andamento, acesse o sistema ".SISTEMA_NOME." no endereço: ".SITELNK.".

Mensagem Automática do Sistema ".SISTEMA_NOME; } //se for resposta else if($tipomsg == "R") { $titulo = "Sua solicitação foi respondida"; $body="Prezado(a) $nome,

Sua solicitação $processo foi respondida. Para mais informações acesse o sistema ".SISTEMA_NOME." no endereço: ".SITELNK.".

Mensagem Automática do Sistema ".SISTEMA_NOME; } //se for prorrogada else if($tipomsg == "P") { $titulo = "A resposta a sua solicitação foi prorrogada"; $body="Prezado(a) $nome,

O atendimento a sua solicitação $processo foi prorrogado, data de previsão de resposta: $dataprevisaoresposta.

Para mais informações acesse o sistema ".SISTEMA_NOME.".

Mensagem Automática do Sistema ".SISTEMA_NOME; } if (!sendmail($email,$titulo,$body)) { //caso de erro loga o erro logger("Lei de acesso - Não foi possível enviar e-mail para o solicitante: $email"); } } } public function cadastra() { if($this->validaDados()) { $configuracao = $this->getParametrosConfiguracao(); $prazoresposta = $configuracao['prazoresposta']; //recupera o proximo tipo de solicitação, caso retorne falso, deu erro if(!$this->getProximoTipoSolicitacao("",$idtiposolicitacao,$this->erro)) return false; $sql="INSERT INTO lda_solicitacao ( textosolicitacao, formaretorno, idsolicitante, datasolicitacao, dataprevisaoresposta, idtiposolicitacao, idsecretariaselecionada ) VALUES ( '$this->textosolicitacao', '$this->formaretorno', '$this->idsolicitante', NOW(), date_add(NOW(), interval $prazoresposta DAY ), $idtiposolicitacao, ".(!empty($this->idsecretariaselecionada)?$this->idsecretariaselecionada:"null")." )"; $con = db_open(); //verificacao de upload global $upload; $upload = verificadados(); if ($upload == 1){ return false; } //----------------------- if (!mysql_query($sql,$con)) { $this->erro = "Erro ao inserir solicitação".$sql; $sucesso = false; } else { $this->idsolicitacao = mysql_insert_id(); //recupera o numero do protocolo $sql = "select numprotocolo, anoprotocolo from lda_solicitacao t where idsolicitacao = $this->idsolicitacao"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { $row = mysql_fetch_array($rs); $this->setNumeroProtocolo($row["numprotocolo"],$row["anoprotocolo"]); } //se tiver sido selecionado um SIC if(!empty($this->idsecretariaselecionada)) { //envia email de aviso de nova solicitação ao SIC centralizador Solicitacao::enviaEmailSic($rec['idsecretaria'],"N"); } else { //envia email para os SIC's centralizadores $sql = "select idsecretaria from sis_secretaria where siccentral = 1"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { while($rec = mysql_fetch_array($rs)) { //envia email de aviso de nova solicitação ao SIC centralizador Solicitacao::enviaEmailSic($rec['idsecretaria'],"N"); } } } //envia email de aviso de cadastro de solicitação ao solicitante Solicitacao::enviaEmailSolicitante($this->idsolicitacao,"N"); $this->erro = ""; $sucesso = true; } //db_close($con); return $sucesso; } else return false; } public function cadastraRecurso($idtiposolicitacao) { if($this->validaDados($tiposolicitacao)) { $configuracao = Solicitacao::getParametrosConfiguracao(); $prazoresposta = $configuracao['prazorespostarecurso']; $sql="INSERT INTO lda_solicitacao ( textosolicitacao, formaretorno, idsolicitante, datasolicitacao, dataprevisaoresposta, idtiposolicitacao, idsolicitacaoorigem, idsecretariaselecionada ) VALUES ( '$this->textosolicitacao', '$this->formaretorno', '$this->idsolicitante', NOW(), date_add(NOW(), interval $prazoresposta DAY ), '$idtiposolicitacao', $this->idsolicitacaoorigem, ".(!empty($this->idsecretariaselecionada)?$this->idsecretariaselecionada:"null")." )"; $con = db_open(); if (!mysql_query($sql,$con)) { $this->erro = "Erro ao inserir solicitação".$sql; $sucesso = false; } else { $this->erro = ""; $sucesso = true; //se tiver sido selecionado um SIC if(!empty($this->idsecretariaselecionada)) { //envia email de aviso de nova solicitação ao SIC centralizador Solicitacao::enviaEmailSic($rec['idsecretaria'],"N"); } else { //envia email para os SIC's centralizadores $sql = "select idsecretaria from sis_secretaria where siccentral = 1"; $rs = execQuery($sql); if(mysql_num_rows($rs)>0) { while($rec = mysql_fetch_array($rs)) { //envia email de aviso de nova solicitação ao SIC centralizador Solicitacao::enviaEmailSic($rec['idsecretaria'],"N"); } } } //envia email de aviso de cadastro de solicitação ao solicitante Solicitacao::enviaEmailSolicitante($this->idsolicitacaoorigem,"N"); } //db_close($con); return $sucesso; } else return false; } static public function movimenta($idsolicitacao, $secretariadestino, $despacho, $arquivo) { if(empty($secretariadestino)) { return "O campo secretaria de destino deve ser preenchido"; } if(empty($despacho)) { return "O campo despacho deve ser preenchido"; } //verifica se existe alguma movimentacao $sql="select count(*) as tot from lda_movimentacao where idsolicitacao = $idsolicitacao"; $row = mysql_fetch_array(execQuery($sql)); //se existir movimentação if($row["tot"] > 0) { //nao permite movimentar se a ultima movimentação não tiver sido dado o recebimento $sql="select count(*) from lda_movimentacao where idmovimentacao = (select max(idmovimentacao) from lda_movimentacao where idsolicitacao = $idsolicitacao) and datarecebimento is null"; $row = mysql_fetch_array(execQuery($sql)); //se ultima movimentação nao tiver sido recebida if($row["tot"] > 0) return "Não é possível movimentar solicitação que ainda não foi recebida!"; } //recupera o status da demanda $sql="select situacao from lda_solicitacao where idsolicitacao = $idsolicitacao"; $row = mysql_fetch_array(execQuery($sql)); $status = $row["situacao"]; $con = db_open_trans(); $all_query_ok=true; $sql="INSERT INTO lda_movimentacao ( idsolicitacao, idsecretariaorigem, idsecretariadestino, dataenvio, idusuarioenvio, despacho ) VALUES ( $idsolicitacao, ".getSession("idsecretaria").", $secretariadestino, NOW(), ".getSession("uid").", '".str_replace("'","\'",$despacho)."' ) "; if (!$con->query($sql)) { $con->rollback(); return "Erro na movimentação da solicitação."; } else { //se houver arquivo faz upload if(!empty($arquivo["tmp_name"])) { $idmovimentacao = $con->insert_id; $dir = getDiretorio("lda")."/"; $ext = getExtensaoArquivo($arquivo['name']); $fullArquivo = "lda_".$idsolicitacao."_mov_".$idmovimentacao.".".$ext; if (!@move_uploaded_file($arquivo["tmp_name"], $dir.$fullArquivo)) { $erro = "Ocorreu um erro ao efetuar o upload do arquivo ".$dir.$fullArquivo."; nome:".$arquivo["tmp_name"]; $all_query_ok=false; break; } else { $sql = "update lda_movimentacao set arquivo = '$fullArquivo' where idmovimentacao = $idmovimentacao"; if (!$con->query($sql)) { $erro = "Ocorreu um erro ao efetuar atualizar nome do arquivo"; $all_query_ok=false; break; } } } //se o status da demanda for "aberto" altera para "em tramitação" if($status == "A") { $sql = "update lda_solicitacao set situacao = 'T' where idsolicitacao=$idsolicitacao"; if (!$con->query($sql)) { $con->rollback(); return "Ocorreu um erro ao atualizar a situação da solicitação"; } } $con->commit(); //envia email de aviso de nova solicitação ao SIC de destino Solicitacao::enviaEmailSic($secretariadestino,"M"); } return ""; } static public function recebe($idsolicitacao) { $sql = "select situacao from lda_solicitacao where idsolicitacao = $idsolicitacao"; $row = mysql_fetch_array(execQuery($sql)); $situacao = $row['situacao']; //se a situação for aberta (não houve tramitação), da o recebimento inicial da solicitação if ($situacao == "A") { $sql="UPDATE lda_solicitacao SET datarecebimentosolicitacao = NOW(), idusuariorecebimento = ".getSession("uid")." WHERE idsolicitacao = $idsolicitacao"; if (!execQuery($sql)) //die($sql); return "Erro no recebimento da solicitação"; } else { //verifica se já houve recebimento $sql="select count(*) as tot from lda_movimentacao where idmovimentacao = (select max(idmovimentacao) from lda_movimentacao where idsolicitacao = $idsolicitacao) and datarecebimento is null"; $row = mysql_fetch_array(execQuery($sql)); //se a ultima movimentação nao tiver sido recebida, executa o recebimento if($row["tot"] > 0) { //verifica se o usuario é da unidade de destino $sql="select count(*) as tot from lda_movimentacao where idmovimentacao = (select max(idmovimentacao) from lda_movimentacao where idsolicitacao = $idsolicitacao) and idsecretariadestino = ".getSession("idsecretaria"); $row = mysql_fetch_array(execQuery($sql)); //se o ususario pertencer a unidade de destino, da o recebimento if($row["tot"] > 0) { $sql="UPDATE lda_movimentacao SET datarecebimento = NOW(), idusuariorecebimento = ".getSession("uid")." WHERE idsolicitacao = $idsolicitacao and datarecebimento is null"; if (!execQuery($sql)) return "Erro no recebimento da solicitação"; } else { return "Usuário não pertence a secretaria de destino"; } } } return ""; } //retorna se existe sic centralizador public static function existeSicCentralizador(){ $sql = "select count(*) as tot from sis_secretaria where ativado = 1 and siccentral = 1"; $rs = execQuery($sql); $row = mysql_fetch_array($rs); return ($row['tot']>0); } //retorna consulta de movimentações da solicitação public static function getMovimentacao($idsolicitacao) { $sql = "select m.*, sOri.sigla as origem, sDes.sigla as destino, usrDes.nome as usuariorecebimento, usrOri.nome as usuarioenvio from lda_movimentacao m join sis_secretaria sOri on sOri.idsecretaria = m.idsecretariaorigem join sis_secretaria sDes on sDes.idsecretaria = m.idsecretariadestino join sis_usuario usrOri on usrOri.idusuario = m.idusuarioenvio left join sis_usuario usrDes on usrDes.idusuario = m.idusuariorecebimento where idsolicitacao=$idsolicitacao "; $sql .= " order by idmovimentacao"; //ordena return execQuery($sql); } //retorna consulta com os recursos da solicitação public static function getRecursos($idsolicitacao) { $sql = "select sol.*, tip.nome as tiposolicitacao from lda_solicitacao sol, lda_tiposolicitacao tip where sol.idtiposolicitacao = tip.idtiposolicitacao and sol.idsolicitacaoorigem=$idsolicitacao order by sol.idsolicitacao"; return execQuery($sql); } //retorna se ainda cabe recurso para a solicitação public static function getPodeRecurso($idsolicitacao, $idsolicitacaoorigem) { //recupera o id do tipo de solicitação seguinte a atual $sql = "select idtiposolicitacao_seguinte from lda_tiposolicitacao where idtiposolicitacao = (select idtiposolicitacao from lda_solicitacao where idsolicitacao= $idsolicitacao)"; $result = execQuery($sql); $row = mysql_fetch_array($result); $idtiposolicitacaoseguinte = $row['idtiposolicitacao_seguinte']; //se não houver solicitação seguinte, é a de ultima instancia, portanto não cabe mais recurso if(empty($idtiposolicitacaoseguinte)) return false; else { //verifica se existe recurso pedido para a solicitação passada $sql = "select * from lda_solicitacao where idsolicitacaoorigem = $idsolicitacaoorigem and idtiposolicitacao = $idtiposolicitacaoseguinte "; //se nao encontrar recurso, pode solicitar return (mysql_num_rows(execQuery($sql))==0); } } static public function finaliza($idsolicitacao,$tiporesposta,$resposta, $arquivos) { if(empty($tiporesposta)) { return "O campo Tipo de Resposta deve ser preenchido"; } if(empty($resposta)) { return "O campo Observação deve ser preenchido"; } $sql="UPDATE lda_solicitacao SET situacao = '$tiporesposta', idusuarioresposta = ".getSession("uid").", dataresposta = NOW(), resposta = '".str_replace("'","\'",$resposta)."', idsecretariaresposta = ".getSession("idsecretaria")." WHERE idsolicitacao = '$idsolicitacao'"; $con = db_open_trans(); $all_query_ok=true; $erro=""; if (!$con->query($sql)) { $erro = "Ocorreu um erro ao atualizar solicitação"; $all_query_ok = false; } else { if(!empty($arquivos)) { $numeroCampos = 3; //numero de campos de arquivo $dir = getDiretorio("lda")."/"; for($i=0;$i<$numeroCampos;$i++) { if(!empty($arquivos["tmp_name"][$i])) { //insere arquivos $sql="INSERT INTO lda_anexo ( idsolicitacao, nome, idusuarioinclusao, datainclusao ) VALUES ( '$idsolicitacao', null, ".getSession("uid").", NOW() )"; if ($con->query($sql)) { $idarquivo = $con->insert_id; $ext = getExtensaoArquivo($arquivos["name"][$i]); $fullArquivo = "lda_".$idsolicitacao."_file_".$idarquivo.".".$ext; if (!@move_uploaded_file($arquivos["tmp_name"][$i], $dir.$fullArquivo)) { $erro = "Ocorreu um erro ao efetuar o upload do arquivo ".$dir.$fullArquivo."; nome:".$arquivos["tmp_name"][$i]; $all_query_ok=false; break; } else { $sql = "update lda_anexo set nome = '$fullArquivo' where idanexo = $idarquivo"; if (!$con->query($sql)) { $erro = "Ocorreu um erro ao efetuar atualizar nome do arquivo"; $all_query_ok=false; break; } } } else { $erro = "Erro ao inserir arquivo"; $all_query_ok = false; break; } } } } } if (!$all_query_ok) { $con->rollback(); return $erro; } else { $con->commit(); //envia email de aviso de cadastro de solicitação ao solicitante Solicitacao::enviaEmailSolicitante($idsolicitacao,"R"); return ""; } } static public function prorrogar($idsolicitacao,$motivo) { if(empty($motivo)) { return "O campo motivo deve ser preenchido"; } $configuracao = Solicitacao::getParametrosConfiguracao(); $sql = "select t.instancia from lda_solicitacao s, lda_tiposolicitacao t where s.idtiposolicitacao = t.idtiposolicitacao and s.idsolicitacao = $idsolicitacao"; $rs = execQuery($sql); $row = mysql_fetch_array($rs); //se não for prorrogação de primeira instancia if($row['instancia'] != "I") $prazoresposta = $configuracao['qtdeprorrogacaorecurso']; else $prazoresposta = $configuracao['qtdprorrogacaoresposta']; $sql="UPDATE lda_solicitacao SET idusuarioprorrogacao = ".getSession("uid").", dataprorrogacao = NOW(), motivoprorrogacao = '".str_replace("'","\'",$motivo)."', dataprevisaoresposta = date_add(dataprevisaoresposta, interval $prazoresposta DAY ) WHERE idsolicitacao = '$idsolicitacao'"; if (!execQuery($sql)) { return "Erro na prorrogação da solicitação"; } else { //envia email de aviso de cadastro de solicitação ao solicitante Solicitacao::enviaEmailSolicitante($idsolicitacao,"P"); } return ""; } } //fecha a classe ?>