public static 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 \n where idmovimentacao = (select max(idmovimentacao) from lda_movimentacao where idsolicitacao = {$idsolicitacao})\n 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 \n (\n idsolicitacao,\n idsecretariaorigem,\n idsecretariadestino,\n dataenvio,\n idusuarioenvio,\n despacho\n ) VALUES (\n {$idsolicitacao},\n " . getSession("idsecretaria") . ",\n {$secretariadestino},\n NOW(),\n " . getSession("uid") . ",\n '" . str_replace("'", "\\'", $despacho) . "'\n )\n "; 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 ""; }