Esempio 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;
Esempio n. 2
0
                    if ($key != 'acao' && ($value && $value != 'null') && $key != 'dt_inicial' && $key != 'dt_final' && $key != 'tp_periodo' && $key != 'tp_pesquisa') {
                        $_SESSION['PESQUISAR_DOCUMENTOS'][$key] = $value;
                    } else {
                        if ($value != '') {
                            $_SESSION['PESQUISAR_DOCUMENTOS_QUERY_PEDIODO'][$key] = $value;
                        }
                    }
                }
                $out = array('success' => 'true');
                break;
            case 'listar-extras':
                $extras = current(CFModelDocumento::factory()->findByParam(array('DIGITAL' => $_REQUEST['id'])));
                $prioridades = CFModelDocumentoDemanda::factory()->retrieveCamposExtraPrioridadeByDigital($_REQUEST['id']);
                $participantes = CFModelDocumentoDemanda::factory()->retrieveCamposExtraParticipantesByDigital($_REQUEST['id']);
                $extras->PARTICIPANTES = $participantes;
                $extras->PRIORIDADES = $prioridades;
                $extras->CONTEUDO = CFModelDocumentoDemanda::factory()->retrieveConteudoDocumentoById($extras->ID);
                $out = array('success' => 'true', 'extras' => $extras);
                break;
            case 'exportar':
                $documento = new Documento($_REQUEST);
                $out = DaoDocumento::uniqueDocumento($documento)->toArray();
                break;
            default:
                $out = array('success' => 'false', 'error' => 'Opção Inválida!');
                break;
        }
        print json_encode($out);
    } catch (Exception $e) {
    }
}
Esempio n. 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;
}