/** * Método com o formulário para substituir documento do PRONAC * @access public * @param void * @return void */ public function substituirdocumentosAction() { // autenticação scriptcase (AMBIENTE PROPONENTE) parent::perfil(2); // combo com os tipos de documentos $this->view->combotipodocumento = TipoDocumentoDAO::buscar(); // caso o formulário seja enviado via post // realiza a substituição do documento if ($this->getRequest()->isPost()) { // recebe os dados via post $post = Zend_Registry::get('post'); $pronac = $post->pronac; $idPronac = (int) $post->idPronac; $doc = (int) $post->idComprovante; $idComprovanteAnterior = (int) $post->idComprovanteAnterior; $idArquivo = (int) $post->idArquivo; $tipoDocumento = (int) $post->tipoDocumento; $titulo = $post->titulo; $descricao = $post->descricao; $justificativa = $post->justificativa; $justificativaCoordenador = $post->justificativaCoordenador; // pega as informações do arquivo $arquivoNome = $_FILES['arquivo']['name']; // nome $arquivoTemp = $_FILES['arquivo']['tmp_name']; // nome temporário $arquivoTipo = $_FILES['arquivo']['type']; // tipo $arquivoTamanho = $_FILES['arquivo']['size']; // tamanho if (!empty($arquivoNome) && !empty($arquivoTemp)) { $arquivoExtensao = Upload::getExtensao($arquivoNome); // extensão $arquivoBinario = Upload::setBinario($arquivoTemp); // binário $arquivoHash = Upload::setHash($arquivoTemp); // hash } try { // integração MODELO e VISÃO // busca o PRONAC no banco $resultadoPronac = ProjetoDAO::buscar($pronac); // busca o Comprovante de acordo com o id no banco $resultadoComprovante = ComprovanteExecucaoFisicaDAO::buscar($resultadoPronac[0]->IdPRONAC, $doc); // caso o PRONAC ou o Comprovante não estejam cadastrados if (!$resultadoPronac || !$resultadoComprovante) { parent::message("Registro não encontrado!", "execucaofisicadoprojeto/buscarpronac", "ERROR"); } else { $this->view->buscarPronac = $resultadoPronac; $this->view->buscarDoc = $resultadoComprovante; } // valida os campos vazios if (empty($tipoDocumento)) { throw new Exception("Por favor, informe o tipo de documento!"); } else { if (empty($titulo)) { throw new Exception("Por favor, informe o título do documento!"); } else { if (strlen($titulo) < 2 || strlen($titulo) > 100) { throw new Exception("O título do documento é inválido! A quantidade mínima é de 2 caracteres!"); } else { if (empty($descricao)) { throw new Exception("Por favor, informe a descrição do documento!"); } else { if (strlen($descricao) < 20 || strlen($descricao) > 500) { throw new Exception("A descrição do documento é inválida! São permitidos entre 20 e 500 caracteres!"); } else { if (empty($justificativa) || $justificativa == "Digite a justificativa...") { throw new Exception("Por favor, informe a justificativa do documento!"); } else { if (strlen($justificativa) < 20 || strlen($justificativa) > 500) { throw new Exception("A justificativa do documento é inválida! São permitidos entre 20 e 500 caracteres!"); } else { if (!empty($arquivoTemp) && ($arquivoExtensao == 'exe' || $arquivoExtensao == 'bat' || $arquivoTipo == 'application/exe' || $arquivoTipo == 'application/x-exe' || $arquivoTipo == 'application/dos-exe' || strlen($arquivoExtensao) > 5)) { throw new Exception("A extensão do arquivo é inválida!"); } else { if (!empty($arquivoTemp) && $arquivoTamanho > 10485760) { throw new Exception("O arquivo não pode ser maior do que 10MB!"); } else { if (!empty($arquivoTemp) && ArquivoDAO::verificarHash($arquivoHash)) { throw new Exception("O arquivo enviado já está cadastrado na base de dados! Por favor, informe outro!"); } else { // cadastra o arquivo caso o mesmo tenha sido enviado if (!empty($arquivoTemp)) { // altera dados do arquivo $dadosArquivo = array('nmArquivo' => $arquivoNome, 'sgExtensao' => $arquivoExtensao, 'dsTipoPadronizado' => $arquivoTipo, 'nrTamanho' => $arquivoTamanho, 'dtEnvio' => new Zend_Db_Expr('GETDATE()'), 'dsHash' => $arquivoHash, 'stAtivo' => 'A'); $substituirArquivo = ArquivoDAO::cadastrar($dadosArquivo); // pega o id do último arquivo cadastrado $idUltimoArquivo = ArquivoDAO::buscarIdArquivo(); $idUltimoArquivo = (int) $idUltimoArquivo[0]->id; // cadastrar o binário do arquivo $dadosBinario = array('idArquivo' => $idUltimoArquivo, 'biArquivo' => $arquivoBinario); $substituirBinario = ArquivoImagemDAO::cadastrar($dadosBinario); // cadastra dados do comprovante $dadosComprovante = array('idPRONAC' => $idPronac, 'idTipoDocumento' => $tipoDocumento, 'nmComprovante' => $titulo, 'dsComprovante' => $descricao, 'dsJustificativaAlteracao' => $justificativa, 'dsJustificativaCoordenador' => $justificativaCoordenador, 'idArquivo' => $idUltimoArquivo, 'idSolicitante' => 9997, 'dtEnvioComprovante' => new Zend_Db_Expr('GETDATE()'), 'stParecerComprovante' => 'AG', 'stComprovante' => 'A', 'idComprovanteAnterior' => $idComprovanteAnterior); $substituirComprovante = ComprovanteExecucaoFisicaDAO::cadastrar($dadosComprovante, $doc); } else { // cadastra dados do comprovante $dadosComprovante = array('idPRONAC' => $idPronac, 'idTipoDocumento' => $tipoDocumento, 'nmComprovante' => $titulo, 'dsComprovante' => $descricao, 'dsJustificativaAlteracao' => $justificativa, 'dsJustificativaCoordenador' => $justificativaCoordenador, 'idArquivo' => $idArquivo, 'idSolicitante' => 9997, 'dtEnvioComprovante' => new Zend_Db_Expr('GETDATE()'), 'stParecerComprovante' => 'AG', 'stComprovante' => 'A', 'idComprovanteAnterior' => $idComprovanteAnterior); $substituirComprovante = ComprovanteExecucaoFisicaDAO::cadastrar($dadosComprovante, $doc); } if ($substituirComprovante) { parent::message("Solicitação de substituição realizada com sucesso!", "execucaofisicadoprojeto/buscardocumentos?pronac=" . $pronac, "CONFIRM"); } else { parent::message("Erro ao realizar solicitação de substituição!", "execucaofisicadoprojeto/buscardocumentos?pronac=" . $pronac, "ERROR"); } } } } } } } } } } } // fecha else } catch (Exception $e) { $this->view->message = $e->getMessage(); $this->view->message_type = "ERROR"; $this->view->tipoDocumento = $tipoDocumento; $this->view->titulo = $titulo; $this->view->descricao = $descricao; $this->view->justificativa = $justificativa; $this->view->justificativaCoordenador = $justificativaCoordenador; } } else { // recebe o pronac via get $get = Zend_Registry::get('get'); $pronac = $get->pronac; $doc = (int) $get->doc; try { // verifica se o pronac ou o id do comprovante vieram vazios if (empty($pronac) || empty($doc)) { throw new Exception("Por favor, informe o PRONAC e o Comprovante!"); } else { // integração MODELO e VISÃO // busca o PRONAC no banco $resultadoPronac = ProjetoDAO::buscar($pronac); // busca o Comprovante de acordo com o id no banco $resultadoComprovante = ComprovanteExecucaoFisicaDAO::buscar($resultadoPronac[0]->IdPRONAC, $doc); // caso o PRONAC ou o Comprovante não estejam cadastrados if (!$resultadoPronac || !$resultadoComprovante) { throw new Exception("Registro não encontrado!"); } else { $this->view->buscarPronac = $resultadoPronac; $this->view->buscarDoc = $resultadoComprovante; } } // fecha else } catch (Exception $e) { parent::message($e->getMessage(), "execucaofisicadoprojeto/buscarpronac", "ERROR"); } } // fecha else }