/** * @return boolean * @param array $array */ public function create($array) { try { $lastId = CFModelDocumento::factory()->insert($array); if ($lastId) { CFModelDigital::factory()->mark($array['DIGITAL'], $array['ID_UNIDADE'], $array['ID_USUARIO']); CFModelDocumentoHistoricoTramite::factory()->insert(array('DIGITAL' => $array['DIGITAL'], 'ID_USUARIO' => $array['ID_USUARIO'], 'USUARIO' => $array['USUARIO'], 'ID_UNIDADE' => $array['ID_UNIDADE'], 'DIRETORIA' => $array['DIRETORIA'], 'ACAO' => 'Documento Cadastrado', 'ORIGEM' => $array['ORIGEM'], 'DESTINO' => 'XXXXX', 'DT_TRAMITE' => date('Y-m-d H:i:s'), 'ST_ATIVO' => 1)); } return $lastId; } catch (Exception $e) { throw $e; } }
<?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;
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; }