예제 #1
0
     * Necessidade PG/PR SNAS
     */
    if (!empty($_REQUEST['DIGITAL_REFERENCIA'])) {
        $persist->associarDocumentos($idDocumentoPai->ID, $lastId, $usuario->ID, $usuario->ID_UNIDADE, $usuario->NOME, $usuario->DIRETORIA, 'XXXXX', 'XXXXX');
    }
    //tratar PRIORIDADES
    if (isset($_REQUEST['extras']['PRIORIDADES'])) {
        $prioridades = $_REQUEST['extras']['PRIORIDADES'];
        if (is_array($prioridades)) {
            //desabilitar todos os vinculos do documento com as campos extras
            CFModelDocumentoCamposDemanda::factory()->disassociateAllByDigital($_REQUEST['DIGITAL'], "PR");
            for ($i = 0; $i < count($prioridades["id"]); $i++) {
                if (CFModelDocumentoCamposDemanda::factory()->isExists($_REQUEST['DIGITAL'], $prioridades["id_campo"][$i], "PR")) {
                    //Se existir atualiza
                    CFModelDocumentoCamposDemanda::factory()->updateAssociationWithDigital($_REQUEST['DIGITAL'], $prioridades["id_campo"][$i], 1, "PR");
                } else {
                    //Se não cria
                    CFModelDocumentoCamposDemanda::factory()->createAssociationWithDigital($_REQUEST['DIGITAL'], $prioridades["id_campo"][$i], "PR");
                }
            }
        }
    }
    //Fim da funcionalidade
    $persist->commit();
    $response = array('success' => true, 'message' => sprintf('Monitoramento %s cadastrado com sucesso!', current($documento)->DIGITAL));
} catch (Exception $e) {
    $factory->garbageCollection();
    $persist->rollback();
    $response = array('success' => false, 'message' => $e->getMessage());
}
print json_encode($response);
 public static function alterarDocumento(Documento $documento)
 {
     try {
         $usuario = Controlador::getInstance()->usuario;
         Controlador::getInstance()->getConnection()->connection->beginTransaction();
         $documento->documento->fg_prazo = $documento->documento->fg_prazo == 'true' ? 1 : 0;
         $stmt = Controlador::getInstance()->getConnection()->connection->prepare("\n                UPDATE TB_DOCUMENTOS_CADASTRO \n                SET \n                    DT_DOCUMENTO = ?, DT_ENTRADA = ?, TIPO = ?, NUMERO = ?,  ORIGEM = ?, \n                    INTERESSADO = ?, ID_ASSUNTO = ?,  ASSUNTO_COMPLEMENTAR = ?, CARGO = ?,  \n                    ASSINATURA = ?,  DESTINO = ?, RECIBO = ?,  TECNICO_RESPONSAVEL = ?, \n                    PROCEDENCIA = ?, DT_PRAZO = ?, FG_PRAZO = ?, PRIORIDADE = ? \n                WHERE DIGITAL = ?\n            ");
         //Trata a prioridade quando for do tipo PAUTA para se ter múltiplas
         if ($documento->documento->tipo == "ATA" && ($prioridade == 'null' || strlen(trim($prioridade)) == 0)) {
             $prioridade = NULL;
             $prioridadeType = PDO::PARAM_NULL;
         }
         #10491
         if ($documento->documento->conteudo != '') {
             $sqDocumentoDemanda = current(CFModelDocumento::factory()->findByParam(array('DIGITAL' => $documento->documento->digital)))->ID;
             $stff = Controlador::getInstance()->getConnection()->connection->prepare("SELECT 1 FROM SGDOC.ext__snas__tb_documentos_conteudo WHERE id = ? LIMIT 1");
             $stff->bindParam(1, $sqDocumentoDemanda, PDO::PARAM_INT);
             $stff->execute();
             if (false == $stff->fetch(PDO::FETCH_ASSOC)) {
                 //inserir conteudo...
                 $stff = Controlador::getInstance()->getConnection()->connection->prepare("insert into SGDOC.ext__snas__tb_documentos_conteudo (id,conteudo) values (?,?)");
                 $stff->bindParam(1, $sqDocumentoDemanda, PDO::PARAM_INT);
                 $stff->bindParam(2, $documento->documento->conteudo, PDO::PARAM_STR);
                 $stff->execute();
             } else {
                 //atualizar conteudo...
                 $stff = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE sgdoc.ext__snas__tb_documentos_conteudo set conteudo = ? WHERE id = ?");
                 $stff->bindParam(1, $documento->documento->conteudo, PDO::PARAM_STR);
                 $stff->bindParam(2, $sqDocumentoDemanda, PDO::PARAM_INT);
                 $stff->execute();
             }
         }
         $stmt->bindParam(1, Util::formatDate($documento->documento->dt_documento), PDO::PARAM_STR);
         //DATA_DOCUMENTO' ,
         $stmt->bindParam(2, Util::formatDate($documento->documento->dt_entrada), PDO::PARAM_STR);
         //DATA_ENTRADA' ,
         $stmt->bindParam(3, $documento->documento->tipo, PDO::PARAM_STR);
         //TIPO' ,
         $stmt->bindParam(4, $documento->documento->numero, PDO::PARAM_STR);
         //NUMERO' ,
         $stmt->bindParam(5, $documento->documento->origem, PDO::PARAM_STR);
         //ORIGEM' ,
         $stmt->bindParam(6, $documento->documento->interessado, PDO::PARAM_STR);
         //INTERESSADO' ,
         $stmt->bindParam(7, $documento->documento->assunto, PDO::PARAM_INT);
         //ID_ASSUNTO' ,
         $stmt->bindParam(8, $documento->documento->assunto_complementar, PDO::PARAM_STR);
         //ASSUNTO_COMPLEMENTAR' ,
         $stmt->bindParam(9, $documento->documento->cargo, PDO::PARAM_STR);
         //CARGO' ,
         $stmt->bindParam(10, $documento->documento->assinatura, PDO::PARAM_STR);
         //ASSINATURA' ,
         $stmt->bindParam(11, $documento->documento->destino, PDO::PARAM_STR);
         //DESTINO' ,
         $stmt->bindParam(12, $documento->documento->recibo, PDO::PARAM_STR);
         //RECIBO' ,
         $stmt->bindParam(13, $documento->documento->tecnico_responsavel, PDO::PARAM_STR);
         //TECNICO_RESPONSAVEL' ,
         $stmt->bindParam(14, $documento->documento->procedencia, PDO::PARAM_STR);
         //PROCEDENCIA' ,
         $stmt->bindParam(15, Util::formatDate($documento->documento->dt_prazo), PDO::PARAM_STR);
         //PRAZO' ,
         $stmt->bindParam(16, $documento->documento->fg_prazo, PDO::PARAM_STR);
         //FG_PRAZO' ,
         $stmt->bindParam(17, $prioridade, $prioridadeType);
         //PRIORIDADE' ,
         $stmt->bindParam(18, $documento->documento->digital, PDO::PARAM_STR);
         //DIGITAL' ,
         $stmt->execute();
         $acao = "Cadastrado complementado.";
         $destino = "XXXXX";
         $origem = "XXXXX";
         /* Atualiza prioridade e participantes */
         //tratar PRIORIDADES
         if (isset($documento->documento->extras[PRIORIDADES])) {
             $prioridades = $documento->documento->extras[PRIORIDADES];
             if (is_array($prioridades)) {
                 //desabilitar todos os vinculos do documento com as campos extras
                 CFModelDocumentoCamposDemanda::factory()->disassociateAllByDigital($documento->documento->digital, "PR");
                 for ($i = 0; $i < count($prioridades["id"]); $i++) {
                     if (CFModelDocumentoCamposDemanda::factory()->isExists($documento->documento->digital, $prioridades["id_campo"][$i], "PR")) {
                         //Se existir atualiza
                         CFModelDocumentoCamposDemanda::factory()->updateAssociationWithDigital($documento->documento->digital, $prioridades["id_campo"][$i], 1, "PR");
                     } else {
                         //Se não cria
                         CFModelDocumentoCamposDemanda::factory()->createAssociationWithDigital($documento->documento->digital, $prioridades["id_campo"][$i], "PR");
                     }
                 }
             }
         }
         //tratar PARTICIPANTES
         if (isset($documento->documento->extras[PARTICIPANTES])) {
             $participantes = $documento->documento->extras[PARTICIPANTES];
             if (is_array($participantes)) {
                 //desabilitar todos os vinculos do documento com as campos extras
                 CFModelDocumentoCamposDemanda::factory()->disassociateAllByDigital($documento->documento->digital, "PA");
                 for ($i = 0; $i < count($participantes["id"]); $i++) {
                     if (CFModelDocumentoCamposDemanda::factory()->isExists($documento->documento->digital, $participantes["id_campo"][$i], "PA")) {
                         //Se existir atualiza
                         CFModelDocumentoCamposDemanda::factory()->updateAssociationWithDigital($documento->documento->digital, $participantes["id_campo"][$i], 1, "PA");
                     } else {
                         //Se não cria
                         CFModelDocumentoCamposDemanda::factory()->createAssociationWithDigital($documento->documento->digital, $participantes["id_campo"][$i], "PA");
                     }
                 }
             }
         }
         /**
          * BugFix : Lancava Notice
          */
         $id_usuario = $usuario->ID;
         $nome_usuario = Zend_Auth::getInstance()->getIdentity()->NOME;
         $id_unidade = $usuario->ID_UNIDADE;
         $diretoria = DaoUnidade::getUnidade($id_unidade, 'nome');
         $stmm = Controlador::getInstance()->getConnection()->connection->prepare("\n                INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS \n                    (DIGITAL, ID_USUARIO, USUARIO, ID_UNIDADE, DIRETORIA, \n                    ACAO, ORIGEM, DESTINO, DT_TRAMITE) \n                VALUES \n                    ( ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP(0) )\n            ");
         $stmm->bindParam(1, $documento->documento->digital, PDO::PARAM_STR);
         $stmm->bindParam(2, $id_usuario, PDO::PARAM_INT);
         $stmm->bindParam(3, $nome_usuario, PDO::PARAM_STR);
         $stmm->bindParam(4, $id_unidade, PDO::PARAM_INT);
         $stmm->bindParam(5, $diretoria, PDO::PARAM_STR);
         $stmm->bindParam(6, $acao, PDO::PARAM_STR);
         $stmm->bindParam(7, $origem, PDO::PARAM_STR);
         $stmm->bindParam(8, $destino, PDO::PARAM_STR);
         $stmm->execute();
         Controlador::getInstance()->getConnection()->connection->commit();
         return new Output(array('success' => 'true'));
     } catch (PDOException $e) {
         Controlador::getInstance()->getConnection()->connection->rollback();
         return new Output(array('success' => 'false', 'error' => $e->getMessage()));
     }
 }
예제 #3
0
function adicionaDemanda($inputData, $usuario)
{
    $response = array();
    try {
        $persist = CFModelDocumentoDemanda::factory();
        $persist->beginTransaction();
        $factory = TPDocumentoDemanda::factory();
        $digital = CFModelDigital::factory()->next($usuario->ID_UNIDADE);
        if (!$digital) {
            throw new Exception('Não existe digitais disponíveis!');
        }
        $inputData['NUMERO'] = $digital;
        $inputData['DIGITAL'] = $digital;
        $lastId = $factory->create($inputData);
        $documento = $persist->find($lastId);
        $idDocumentoPai = current($persist->findByParam(array('DIGITAL' => $inputData['DIGITAL_REFERENCIA'])));
        $inputData['DIGITAL_PAI'] = $idDocumentoPai->DIGITAL;
        if (empty($documento)) {
            throw new Exception('Ocorreu um erro ao tentar registrar o novo monitoramento!');
        }
        $inputData['ID'] = $lastId;
        $factory->generatePDF($inputData)->convertPDFToPng($inputData['DIGITAL'])->garbageCollection()->registerPNGDB($inputData['DIGITAL'], Controlador::getInstance()->getConnection()->connection)->registerDeadlines($inputData);
        //Cria o histórico do documento para encaminhamento
        $inputData['ULTIMO_TRAMITE'] = sprintf('Encaminhado por %s - %s para %s em %s', $usuario->NOME, $usuario->DIRETORIA, $inputData['DESTINO'], date('d/m/Y - H:i:s'));
        $factory->transact($inputData);
        /**
         * @author Bruno Pedreira
         * Data: 11/12/2013
         * Funcionalidade adicionada para associar documentos.
         * Necessidade PG/PR SNAS
         */
        if (!empty($inputData['DIGITAL_REFERENCIA'])) {
            $persist->associarDocumentos($idDocumentoPai->ID, $lastId, $usuario->ID, $usuario->ID_UNIDADE, $usuario->NOME, $usuario->DIRETORIA, 'XXXXX', 'XXXXX');
        }
        //tratar PRIORIDADES
        if (isset($inputData['PRIORIDADES'])) {
            $prioridades = $inputData['PRIORIDADES'];
            if (count($prioridades) > 1) {
                //desabilitar todos os vinculos do documento com as campos extras
                CFModelDocumentoCamposDemanda::factory()->disassociateAllByDigital($inputData['DIGITAL'], "PR");
                foreach ($prioridades as $prioridade) {
                    if (CFModelDocumentoCamposDemanda::factory()->isExists($inputData['DIGITAL'], $prioridade, "PR")) {
                        //Se existir atualiza
                        CFModelDocumentoCamposDemanda::factory()->updateAssociationWithDigital($inputData['DIGITAL'], $prioridade, 1, "PR");
                    } else {
                        //Se não cria
                        CFModelDocumentoCamposDemanda::factory()->createAssociationWithDigital($inputData['DIGITAL'], $prioridade, "PR");
                    }
                }
            }
        }
        //Fim da funcionalidade
        $persist->commit();
        $response = array('success' => true, 'message' => sprintf('Monitoramento %s cadastrado com sucesso!', current($documento)->DIGITAL), 'digital' => current($documento)->DIGITAL);
    } catch (Exception $e) {
        $factory->garbageCollection();
        $persist->rollback();
        $response = array('success' => false, 'message' => $e->getMessage(), 'digital' => current($documento)->DIGITAL);
    }
    return $response;
}