/**
  * 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
 }