/**
 * @todo Refatorar...
 * @deprecated
 */
function processosApenso($processo, $idUsuario)
{
    $id = getIdProcesso($processo);
    $sql = "SELECT MAX(BLOCO_IMPRESSAO) AS BLOCO \r\n              FROM TB_PROCESSOS_VINCULACAO \r\n             WHERE ID_PROCESSO_PAI = ? \r\n               AND ID_VINCULACAO = 2";
    $stmt = Controlador::getInstance()->getConnection()->connection->prepare($sql);
    $stmt->bindParam(1, $id);
    $stmt->execute();
    $bloco = $stmt->fetch(PDO::FETCH_ASSOC);
    $sql = "SELECT A.ID_PROCESSO_FILHO\r\n                 , P.NUMERO_PROCESSO AS NU_PROCESSO\r\n                 , C.NUMERO_PROCESSO AS NM_APENSO\r\n                 , U.NOME AS SETOR\r\n              FROM TB_PROCESSOS_VINCULACAO AS A\r\n        INNER JOIN TB_PROCESSOS_CADASTRO AS P \r\n                ON A.ID_PROCESSO_PAI = P.ID\r\n        INNER JOIN TB_PROCESSOS_CADASTRO AS C \r\n                ON A.ID_PROCESSO_FILHO = C.ID\r\n        INNER JOIN TB_UNIDADES AS U \r\n                ON A.ID_SOLICITANTE = U.ID\r\n             WHERE A.ID_PROCESSO_PAI = ? \r\n               AND A.FG_ATIVO = 0 \r\n               AND A.BLOCO_IMPRESSAO = ? \r\n               AND ID_VINCULACAO = 2 \r\n               AND ID_USUARIO =  ?\r\n          GROUP BY A.ID_PROCESSO_FILHO, P.NUMERO_PROCESSO, C.NUMERO_PROCESSO, U.NOME";
    $stmt = Controlador::getInstance()->getConnection()->connection->prepare($sql);
    $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $bloco['BLOCO']);
    $stmt->bindParam(3, $idUsuario);
    $stmt->execute();
    $resul = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $resul;
}
         $out['message'] = $stringOut['AP_ERROR_APENSO_PROC'];
     } else {
         vincularProcessos($_POST);
         $out = array('success' => 'true', 'processo' => $_POST['numero_processo'] . "&tipo_acao=" . $_POST['acao']);
     }
     /* acao - desapensar processos */
 } else {
     if ($_POST['acao'] == "desapensar") {
         desvincularProcesso($_POST);
         $out = array('success' => 'true', 'processo' => $_POST['numero_processo']);
     } else {
         if ($_POST['acao'] == "anexar") {
             /* verifica se os processos á anexar já esta anexado em outro processo */
             $iterator = new ArrayIterator($processos);
             while ($iterator->valid()) {
                 $current = getIdProcesso($iterator->current());
                 $resul = validarProcesso($current);
                 if (!empty($resul)) {
                     if (in_array($current, $resul)) {
                         $out[] = $iterator->current();
                     }
                 }
                 $iterator->next();
             }
             /* fim */
             if (!empty($out)) {
                 $out['success'] = 'false';
                 $out['message'] = $stringOut['AP_ERROR_ANEXO_PROC'];
             } else {
                 vincularProcessos($_POST);
                 $out = array('success' => 'true', 'processo' => $_POST['numero_processo'] . "&tipo_acao=" . $_POST['acao']);
/**
 * 
 */
function desvincularProcesso($arrayData)
{
    $usuario = Controlador::getInstance()->usuario;
    /* recupera id do processo */
    $numero_processo = getIdProcesso($arrayData['numero_processo']);
    /* mensagem padrão do historico de tramite do tipo desanexar */
    $mensagem_tramite_pai = "O processo <?> foi desapensado deste processo.";
    $mensagem_tramite_filho = "O processo foi desapensado do processo <?>.";
    /* sequencial para controle de impressão do termo. */
    $bloco_impressao = getLastBloc($numero_processo, 2);
    $anexos = array_unique(explode(',', $arrayData['processos']));
    $data_acao = date('Y-m-d h:m:s');
    $id_usuario = $usuario->ID;
    $nome_usuario = $usuario->NOME;
    $id_unidade = $usuario->ID_UNIDADE;
    $oDiretoria = DaoUnidade::getUnidade($id_unidade);
    $diretoria = $oDiretoria['nome'];
    $tx_diretoria = $oDiretoria['nome'] . ' - ' . $oDiretoria['sigla'];
    Controlador::getInstance()->getConnection()->connection->beginTransaction();
    try {
        $iterator = new ArrayIterator($anexos);
        while ($iterator->valid()) {
            $numero_apenso = getIdProcesso($iterator->current());
            /*             * ************************* TRAMITE PAI ************************* */
            $stmt = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_PROCESSOS\n                (NUMERO_PROCESSO, ID_USUARIO, USUARIO, ID_UNIDADE, DIRETORIA, ACAO, ORIGEM, DESTINO, DT_TRAMITE)\n                 VALUES(?,?,?,?,?,?,?,?,CLOCK_TIMESTAMP())");
            $stmt->bindParam(1, $arrayData['numero_processo'], PDO::PARAM_STR);
            $stmt->bindParam(2, $id_usuario, PDO::PARAM_INT);
            $stmt->bindParam(3, $nome_usuario, PDO::PARAM_STR);
            $stmt->bindParam(4, $id_unidade, PDO::PARAM_INT);
            $stmt->bindParam(5, $diretoria, PDO::PARAM_STR);
            $stmt->bindValue(6, str_replace("<?>", $iterator->current(), $mensagem_tramite_pai));
            $stmt->bindParam(7, $tx_diretoria);
            $stmt->bindValue(8, "XXXXX");
            $stmt->execute();
            $id_tramite_pai = Controlador::getInstance()->getConnection()->connection->lastInsertId('TB_HISTORICO_TRAMITE_PROCESSOS_ID_SEQ');
            /*             * **************************************************************** */
            /*             * ************************* TRAMITE FILHO ************************ */
            $stmt = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_PROCESSOS\n                (NUMERO_PROCESSO, ID_USUARIO, USUARIO, ID_UNIDADE, DIRETORIA, ACAO, ORIGEM, DESTINO, DT_TRAMITE)\n                 VALUES(?,?,?,?,?,?,?,?,CLOCK_TIMESTAMP())");
            $stmt->bindParam(1, $iterator->current(), PDO::PARAM_STR);
            $stmt->bindParam(2, $id_usuario, PDO::PARAM_INT);
            $stmt->bindParam(3, $nome_usuario, PDO::PARAM_STR);
            $stmt->bindParam(4, $id_unidade, PDO::PARAM_INT);
            $stmt->bindParam(5, $diretoria, PDO::PARAM_STR);
            $stmt->bindValue(6, str_replace("<?>", $arrayData['numero_processo'], $mensagem_tramite_filho));
            $stmt->bindParam(7, $tx_diretoria);
            $stmt->bindValue(8, "XXXXX");
            $stmt->execute();
            $id_tramite_filho = Controlador::getInstance()->getConnection()->connection->lastInsertId('TB_HISTORICO_TRAMITE_PROCESSOS_ID_SEQ');
            /*             * ************************** ATUALIZAR MOVIMENTAÇÃO ************** */
            $stmt = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_PROCESSOS_CADASTRO SET ULTIMO_TRAMITE = ? WHERE ID = ?");
            $data = date("d/m/Y " . " - " . "H:i:s");
            $ultimo_tramite = str_replace(".", " ", $mensagem_tramite_filho);
            $ultimo_tramite .= "por {$nome_usuario} em {$data}.";
            $stmt->bindParam(1, str_replace("<?>", $arrayData['numero_processo'], $ultimo_tramite), PDO::PARAM_STR);
            $stmt->bindParam(2, $numero_apenso, PDO::PARAM_INT);
            $stmt->execute();
            /*             * **************************************************************** */
            $stmt = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_PROCESSOS_VINCULACAO\n                                    SET DT_EXCLUSAO_FORM = ?, ID_SOLICITANTE = ?, FG_ATIVO = ?, BLOCO_IMPRESSAO = ?, ID_HISTORICO_TRAMITE_PAI = ?, ID_HISTORICO_TRAMITE_FILHO = ? , DT_ACAO = ?\n                                    WHERE ID_PROCESSO_PAI = ? AND ID_PROCESSO_FILHO = ? AND ST_ATIVO = 1 AND ID_VINCULACAO = 2");
            $stmt->bindParam(1, format($arrayData['data_exclusao']), PDO::PARAM_STR);
            $stmt->bindParam(2, $arrayData['diretoria'], PDO::PARAM_STR);
            $stmt->bindValue(3, 0, PDO::PARAM_INT);
            $stmt->bindParam(4, $bloco_impressao, PDO::PARAM_STR);
            $stmt->bindParam(5, $id_tramite_pai, PDO::PARAM_INT);
            $stmt->bindParam(6, $id_tramite_filho, PDO::PARAM_INT);
            $stmt->bindParam(7, $data_acao, PDO::PARAM_STR);
            $stmt->bindParam(8, $numero_processo, PDO::PARAM_STR);
            $stmt->bindParam(9, $numero_apenso, PDO::PARAM_INT);
            $stmt->execute();
            $iterator->next();
        }
        Controlador::getInstance()->getConnection()->connection->commit();
    } catch (PDOException $e) {
        throw $e;
    }
}