Exemplo n.º 1
0
<?php

include_once __BASE_PATH__ . '/extensoes/pr_snas/1.2/classes/CFModelDocumentoDemanda.php';
include_once __BASE_PATH__ . '/extensoes/pr_snas/1.2/classes/TPDocumentoDemanda.php';
include_once __BASE_PATH__ . '/extensoes/pr_snas/1.2/classes/CFModelDocumentoCamposDemanda.php';
$response = array();
try {
    $persist = CFModelDocumentoDemanda::factory();
    $persist->beginTransaction();
    $factory = TPDocumentoDemanda::factory();
    $priority = current(CFModelPrioridade::factory()->find($_REQUEST['PRIORIDADE']));
    $usuario = Zend_Auth::getInstance()->getStorage()->read();
    $digital = CFModelDigital::factory()->next($usuario->ID_UNIDADE);
    if (!$digital) {
        throw new Exception('Não existe digitais disponíveis!');
    }
    $_REQUEST['SOLICITACAO'] = $_REQUEST['SOLICITACAO'];
    $_REQUEST['PROCEDENCIA'] = 'I';
    $_REQUEST['TIPO'] = 'MONITORAMENTO';
    # MONITORAMENTO! @todo parametrizar...
    $_REQUEST['NUMERO'] = $digital;
    $_REQUEST['DT_DOCUMENTO'] = Util::formatDate($_REQUEST['DT_DOCUMENTO']);
    $_REQUEST['DT_PRAZO'] = Util::formatDate($_REQUEST['DT_PRAZO']);
    $_REQUEST['DIRETORIA'] = $usuario->DIRETORIA;
    $_REQUEST['ORIGEM'] = $usuario->DIRETORIA;
    $_REQUEST['DT_CADASTRO'] = date('Y-m-d');
    $_REQUEST['DIGITAL'] = $digital;
    $_REQUEST['ULTIMO_TRAMITE'] = sprintf('Área de Trabalho - %s', $usuario->DIRETORIA);
    $_REQUEST['ID_UNIDADE'] = $usuario->ID_UNIDADE;
    $_REQUEST['ID_USUARIO'] = $usuario->ID;
    $_REQUEST['ID_UNID_CAIXA_SAIDA'] = $usuario->ID_UNIDADE;
Exemplo n.º 2
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;
}