/**
  * M?todo responsavel por validar as datas do formulario
  * @param void
  * @return objeto
  */
 public function validaDatasAction()
 {
     $this->_helper->layout->disableLayout();
     // desabilita o Zend_Layout
     //recupera parametros
     $get = Zend_Registry::get('get');
     $dtInicio = $get->dtInicio;
     $dtFim = $get->dtFim;
     $bln = "true";
     $script = "";
     $mensagem = "";
     $objData = new Data();
     //VERIFICA SE DATA INICIO E MAIOR QUE DATA FINAL
     if (!empty($get->dtInicio) && !empty($get->dtFim) && strlen($get->dtInicio) == 10 && strlen($get->dtFim) == 10) {
         $dtTemp = explode("/", $get->dtInicio);
         $dtInicio = $dtTemp[2] . $dtTemp[1] . $dtTemp[0];
         $dtTemp = null;
         $dtTemp = explode("/", $get->dtFim);
         $dtFim = $dtTemp[2] . $dtTemp[1] . $dtTemp[0];
         if ($dtInicio > $dtFim) {
             $mensagem = "<br><font color='red'>Data de in&iacute;cio n&atilde;o pode ser maior que a data final</font>";
             $bln = "false";
         }
         if (!$objData->validarData($get->dtInicio)) {
             $mensagem = "<br><font color='red'>Data de in&iacute;cio inv&aacute;lida</font>";
             $bln = "false";
         }
         if (!$objData->validarData($get->dtFim)) {
             $mensagem = "<br><font color='red'>Data final inv&aacute;lida</font>";
             $bln = "false";
         }
         if (!$objData->validarData($get->dtInicio)) {
             $mensagem = "<br><font color='red'>O período de execução de projetos de plano anual dever ser posterior ao ano vigente</font>";
             $bln = "false";
         }
     }
     //VERIFICA SE DATA INICIO E MAIOR QUE 90 DIAS DA DATA ATUAL
     if (!empty($get->dtInicio) && strlen($get->dtInicio) == 10) {
         $dtTemp = explode("/", $get->dtInicio);
         $dtInicio = $dtTemp[2] . $dtTemp[1] . $dtTemp[0];
         $diffEmDias = $objData->CompararDatas(date("Ymd"), $dtInicio);
         if ($diffEmDias < 0 || $diffEmDias < 90) {
             $mensagem = "<br><font color='red'>A data inicial de realiza&ccedil;&atilde;o dever&aacute; ser no m&iacute;nimo 90 dias ap&oacute;s a data atual.</font>";
             $bln = "false";
         }
         if (!$objData->validarData($get->dtInicio)) {
             $mensagem = "<br><font color='red'>Data de in&iacute;cio inv&aacute;lida</font>";
             $bln = "false";
         }
         //verifica se a data inicio esta entre 01 de Fevereiro e 30 de Novembro
         //if($dtInicio >= date("Y")."0201" && $dtInicio <= date("Y")."1130"){
     }
     //VERIFICA SE DATA DO ATO E VALIDA, CASO ELA TENHA SIDO INFORMADA
     if (!empty($get->dtAto) && strlen($get->dtAto) == 10) {
         if (!$objData->validarData(trim($get->dtAto))) {
             $mensagem = "<br><font color='red'>Data tombamento inv&aacute;lida</font>";
             $bln = "false";
         }
     }
     $script = "\$('#blnDatasValidas').val(" . $bln . ");\n";
     $this->montaTela("manterpropostaincentivofiscal/mensagem.phtml", array("mensagem" => $mensagem, "script" => $script));
 }
 /**
  * Método para buscar projetos com comprovantes aguardando aprovação
  * @access public
  * @param void
  * @return void
  */
 public function aguardandoaprovacaoAction()
 {
     // autenticação e permissões zend (AMBIENTE MINC)
     // define as permissões
     $PermissoesGrupo = array();
     $PermissoesGrupo[] = 122;
     // Coordenador de Acompanhamento
     $PermissoesGrupo[] = 123;
     // Coordenador - Geral de Acompanhamento
     parent::perfil(1, $PermissoesGrupo);
     // caso o formulário seja enviado via post
     // realiza a busca de acordo com os parâmetros enviados
     if ($this->getRequest()->isPost()) {
         // recebe o pronac via post
         $post = Zend_Registry::get('post');
         $pronac = $post->pronac == 'Digite o Pronac...' ? '' : $post->pronac;
         $status = $post->status;
         if ($post->dt_inicio == '00/00/0000') {
             $post->dt_inicio = "";
         }
         if ($post->dt_fim == '00/00/0000') {
             $post->dt_fim = "";
         }
         $dt_inicio = !empty($post->dt_inicio) ? Data::dataAmericana($post->dt_inicio) . " 00:00:00" : $post->dt_inicio;
         $dt_fim = !empty($post->dt_fim) ? Data::dataAmericana($post->dt_fim) . " 23:59:59" : $post->dt_fim;
         // data a ser validada
         $dt_begin = $dt_inicio;
         $dt_end = $dt_fim;
         $dt_begin = explode(" ", $dt_begin);
         $dt_end = explode(" ", $dt_end);
         try {
             // valida o número do pronac
             if (!empty($pronac) && strlen($pronac) > 20) {
                 throw new Exception("O Nº do PRONAC é inválido!");
             } else {
                 if (!empty($dt_inicio) && !Data::validarData(Data::dataBrasileira($dt_begin[0]))) {
                     throw new Exception("A data inicial é inválida!");
                 } else {
                     if (!empty($dt_fim) && !Data::validarData(Data::dataBrasileira($dt_end[0]))) {
                         throw new Exception("A data final é inválida!");
                     } else {
                         // busca os projetos com comprovantes
                         $resultado = ComprovanteExecucaoFisicaDAO::buscarProjetos($pronac, $status, $dt_inicio, $dt_fim);
                     }
                 }
             }
         } catch (Exception $e) {
             parent::message($e->getMessage(), "execucaofisicadoprojeto/aguardandoaprovacao", "ERROR");
         }
     } else {
         $resultado = ComprovanteExecucaoFisicaDAO::buscarProjetos();
     }
     // fecha else
     // ========== INÍCIO PAGINAÇÃO ==========
     //criando a paginaçao
     Zend_Paginator::setDefaultScrollingStyle('Sliding');
     Zend_View_Helper_PaginationControl::setDefaultViewPartial('paginacao/paginacao.phtml');
     $paginator = Zend_Paginator::factory($resultado);
     // dados a serem paginados
     // página atual e quantidade de ítens por página
     $currentPage = $this->_getParam('page', 1);
     $paginator->setCurrentPageNumber($currentPage)->setItemCountPerPage(20);
     // ========== FIM PAGINAÇÃO ==========
     // manda para a visão
     $this->view->paginacao = $paginator;
     $this->view->qtd = count($resultado);
     // quantidade
 }
 /**
  * Método para enviar o arquivo txt do banco do brasil
  * @access public
  * @param void
  * @return void
  */
 public function uploadAction()
 {
     if ($this->getIdGrupo != 121 && $this->getIdGrupo != 122 && $this->getIdGrupo != 129) {
         parent::message('Você não tem permissão para acessar essa área do sistema!', 'principal/index', 'ALERT');
     }
     // caso o formulário seja enviado via post
     if ($this->getRequest()->isPost()) {
         // configuração o php.ini para 100MB
         @set_time_limit(0);
         @ini_set('mssql.textsize', 10485760000);
         @ini_set('mssql.textlimit', 10485760000);
         @ini_set('mssql.timeout', 10485760000);
         @ini_set('upload_max_filesize', '100M');
         // 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 = strtolower(Upload::getExtensao($arquivoNome));
             // extensão
         }
         // caminho do arquivo txt
         $so = stripos($_SERVER['SERVER_SOFTWARE'], 'win32') != FALSE ? 'WINDOWS' : 'LINUX';
         // sistema operacional
         $bar = $so == 'WINDOWS' ? '\\' : '/';
         // configura a barra de acordo com o SO
         $this->arquivoTXT = getcwd() . $bar . 'public' . $bar . 'txt' . $bar . $this->arquivoTXT;
         // diretório interno do arquivo
         $dir = $this->arquivoTXT;
         // diretório onde se encontram os arquivos do banco
         try {
             // integração MODELO e VISÃO
             if (empty($arquivoTemp)) {
                 throw new Exception('Por favor, informe o arquivo!');
             } else {
                 if ($arquivoExtensao != 'ret' && $arquivoExtensao != 'txt' || $arquivoTipo != 'text/plain' && $arquivoTipo != 'application/octet-stream') {
                     throw new Exception('A extensão do arquivo é inválida, envie somente arquivos <strong>.txt</strong>!');
                 } else {
                     $this->tbDepositoIdentificadoMovimentacao = new tbDepositoIdentificadoMovimentacao();
                     // verifica se existe algum dado na tabela
                     $buscar = $this->tbDepositoIdentificadoMovimentacao->buscar()->toArray();
                     if (count($buscar) > 0) {
                         throw new Exception('Aguarde um momento, pois, já existe um arquivo sendo processado!');
                     } else {
                         if (file_exists($dir . '/' . $arquivoNome)) {
                             throw new Exception('O arquivo <strong>' . $arquivoNome . '</strong> já existe!');
                         } else {
                             // envia o arquivo
                             if (move_uploaded_file($arquivoTemp, $dir . '/' . $arquivoNome)) {
                                 // abre o diretório
                                 if (($abrir = opendir($dir)) === false) {
                                     throw new Exception('Não foi possível abrir o diretório <strong>' . $dir . '</strong>!');
                                 }
                                 // busca todos os arquivos do diretório
                                 $i = 0;
                                 while (($arq = readdir($abrir)) !== false) {
                                     // verifica se a extensão do arquivo é .txt ou .ret
                                     if (substr(strtolower($arq), -4) == '.txt' || substr(strtolower($arq), -4) == '.ret') {
                                         // array contendo o caminho/nome completo de cada arquivo
                                         $arquivos[] = $dir . $bar . $arq;
                                         if ($i == 0) {
                                             // abre o arquivo para leitura
                                             $abrir_arquivo_header = fopen($arquivos[0], 'r');
                                             // pega a linha do arquivo
                                             $linha_header = fgets($abrir_arquivo_header, 4096);
                                             // faz a validação do arquivo de acordo com o layout
                                             $nr_banco = substr($linha_header, 76, 3);
                                             // NÚMERO DO BANCO
                                             $nm_arquivo = substr($linha_header, 11, 15);
                                             // NOME DO ARQUIVO
                                             $dt_arquivo = substr($linha_header, 181, 8);
                                             // DATA DA GERAÇÃO DO ARQUIVO
                                             //										$dt_inicio_movimentacao = substr($linha_header, 52, 8); // DATA DE INÍCIO DA MOVIMENTAÇÃO BANCÁRIA
                                             //										$dt_fim_movimentacao    = substr($linha_header, 60, 8); // DATA FINAL DA MOVIMENTAÇÃO BANCÁRIA
                                             // faz a validação do arquivo pelo header
                                             // verifica pelo header se o arquivo já existe
                                             if (substr($linha_header, 0, 1) == 0) {
                                                 //											if (!is_numeric($nr_banco) || !Data::validarData($dt_arquivo) || !Data::validarData($dt_inicio_movimentacao) || !Data::validarData($dt_fim_movimentacao))
                                                 if (!is_numeric($nr_banco) || !Data::validarData($dt_arquivo)) {
                                                     // fecha o arquivo
                                                     fclose($abrir_arquivo_header);
                                                     // exclui o arquivo
                                                     unlink($arquivos[0]);
                                                     throw new Exception('O layout do arquivo enviado é inválido!');
                                                 }
                                                 // busca a data de geração do arquivo para evitar inserção de registros duplicados
                                                 $dataGeracaoArquivo = Data::dataAmericana(Mascara::addMaskDataBrasileira($dt_arquivo));
                                                 // verifica se o arquivo já está cadastrado no banco de dados
                                                 $this->tbMovimentacaoBancaria = new tbMovimentacaoBancaria();
                                                 $buscarArquivoCadastrado = $this->tbMovimentacaoBancaria->buscar(array('dtArquivo = ?' => $dataGeracaoArquivo));
                                                 if (count($buscarArquivoCadastrado) > 0) {
                                                     // fecha o arquivo
                                                     fclose($abrir_arquivo_header);
                                                     // exclui o arquivo
                                                     unlink($arquivos[0]);
                                                     throw new Exception('Esse arquivo já foi enviado!');
                                                 }
                                                 $i++;
                                             }
                                             // fecha o arquivo
                                             fclose($abrir_arquivo_header);
                                             // exclui o arquivo
                                             unlink($arquivos[$i]);
                                         }
                                         // fecha if ($i == 0)
                                     }
                                     // fecha if
                                 }
                                 // fecha while
                                 // caso exista arquivo(s) .txt ou .ret no diretório:
                                 // 	1. Varre o conteúdo de cada arquivo
                                 // 	2. Grava o conteúdo de cada linha no banco
                                 // 	3. Deleta o arquivo do diretório
                                 if (isset($arquivos) && count($arquivos) > 0) {
                                     // ========== INÍCIO - VARRE O ARQUIVO DETALHADAMENTE ==========
                                     foreach ($arquivos as $arquivoTXT) {
                                         // abre o arquivo para leitura
                                         $abrir_arquivo = fopen($arquivoTXT, 'r');
                                         // início while de leitura do arquivo linha por linha
                                         $i = 0;
                                         $dsInformacao = array();
                                         while (!feof($abrir_arquivo)) {
                                             // pega a linha do arquivo
                                             $linha = fgets($abrir_arquivo, 4096);
                                             // caso a linha não seja vazia e o primeiro caractere for numérico
                                             if (!empty($linha) && is_numeric(substr($linha, 0, 1))) {
                                                 // armazena as linhas do arquivo em um array
                                                 $dsInformacao[$i] = trim($linha);
                                             }
                                             $i++;
                                         }
                                         // fim while de leitura do arquivo linha por linha
                                         // fecha o arquivo
                                         fclose($abrir_arquivo);
                                         // exclui o arquivo
                                         unlink($arquivoTXT);
                                         $auth = Zend_Auth::getInstance();
                                         // pega a autenticação
                                         // grava linha por linha do arquivo no banco
                                         foreach ($dsInformacao as $ds) {
                                             if (!$this->tbDepositoIdentificadoMovimentacao->inserir(array('dsInformacao' => $ds, 'idUsuario' => $auth->getIdentity()->usu_codigo))) {
                                                 throw new Exception('Erro ao enviar arquivo!');
                                             }
                                         }
                                     }
                                     // ========== FIM - VARRE O ARQUIVO DETALHADAMENTE ==========
                                     //$this->tbDepositoIdentificadoMovimentacao->DepositoIdentificadoMovimentacao();
                                 }
                                 // fecha if
                                 parent::message('Arquivo enviado com sucesso!', 'controlarmovimentacaobancaria/upload', 'CONFIRM');
                             } else {
                                 parent::message('Erro ao enviar arquivo!', 'controlarmovimentacaobancaria/upload', 'ERROR');
                             }
                         }
                     }
                     // fecha else
                 }
             }
         } catch (Exception $e) {
             $this->view->message = $e->getMessage();
             $this->view->message_type = 'ERROR';
         }
     }
     // fecha if post
 }
 public function cadastrarLocalRealizacaoAction()
 {
     $linkFinal = '';
     if (filter_input(INPUT_POST, 'relatorofinal')) {
         $linkFinal = '-final';
     }
     //** Verifica se o usuário logado tem permissão de acesso **//
     $this->verificarPermissaoAcesso(false, true, false);
     $idpronac = $this->_request->getParam("idpronac");
     if (strlen($idpronac) > 7) {
         $idpronac = Seguranca::dencrypt($idpronac);
     }
     $redirectUrl = "comprovarexecucaofisica/local-de-realizacao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac);
     try {
         $Projetos = new Projetos();
         $dadosProj = $Projetos->buscar(array('IdPRONAC = ?' => $idpronac))->current();
         $idProjeto = $dadosProj->idProjeto;
         if (empty($idProjeto)) {
             parent::message('Não existe idProjeto.', $redirectUrl, 'ERROR');
         }
         $AbrangenciaDAO = new AbrangenciaDAO();
         foreach ($_POST['siAbrangencia'] as $valores) {
             list($abragenciaSituacao, $abrangenciaId) = explode(':', $valores);
             $dt = null;
             if (filter_input(INPUT_POST, 'dtRealizacao' . $abrangenciaId)) {
                 $dt = Data::dataAmericana(filter_input(INPUT_POST, 'dtRealizacao' . $abrangenciaId));
                 $validacao = Data::validarData(filter_input(INPUT_POST, 'dtRealizacao' . $abrangenciaId));
                 if (!$validacao) {
                     parent::message('Data inválida.', $redirectUrl, 'ERROR');
                 }
             }
             $abragenciaRow = $AbrangenciaDAO->find($abrangenciaId)->current();
             if ($abragenciaRow) {
                 if (2 != $abragenciaRow->siAbrangencia && 2 == $abragenciaSituacao) {
                     $abragenciaRow->dtRealizacao = $dt;
                 } elseif (2 != $abragenciaSituacao) {
                     $abragenciaRow->dtRealizacao = null;
                 }
                 if (1 == $abragenciaSituacao) {
                     $justificativa = filter_input(INPUT_POST, 'justificativa' . $abrangenciaId);
                     if (!empty($justificativa)) {
                         $abragenciaRow->dsJustificativa = $justificativa;
                     }
                 }
                 $abragenciaRow->siAbrangencia = $abragenciaSituacao;
                 $abragenciaRow->Usuario = $this->IdUsuario;
                 $abragenciaRow->save();
             }
         }
         if (filter_input(INPUT_POST, 'novoPais')) {
             if (31 == \filter_input(\INPUT_POST, 'novoPais')) {
                 //31=Brasil
                 $idPais = filter_input(INPUT_POST, 'novoPais');
                 $idUF = filter_input(INPUT_POST, 'novoUf');
                 $idMunicipio = filter_input(INPUT_POST, 'novoMunicipio');
                 $dsJustificativa = filter_input(INPUT_POST, 'justificativaNovo');
                 //se for Brasil, o usuario deve informar a cidade e o municipio
                 if (empty($idPais) || empty($idUF) || empty($idMunicipio)) {
                     parent::message("Não foi possível cadastrar o novo local de realização do Projeto!", "comprovarexecucaofisica/local-de-realizacao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
                 }
             } else {
                 $idPais = filter_input(INPUT_POST, 'novoPais');
                 $idUF = 0;
                 $idMunicipio = 0;
                 $dsJustificativa = filter_input(INPUT_POST, 'justificativaNovo');
             }
             $Abrangencia = new Abrangencia();
             $abrangencias = $Abrangencia->verificarIgual($idPais, $idUF, $idMunicipio, $idProjeto);
             if (0 == count($abrangencias)) {
                 $dtNovo = null;
                 if (filter_input(INPUT_POST, 'novoDtRealizacao')) {
                     $dtNovo = Data::dataAmericana(filter_input(INPUT_POST, 'novoDtRealizacao'));
                     $validacaoNova = Data::validarData(filter_input(INPUT_POST, 'novoDtRealizacao'));
                     if (!$validacaoNova) {
                         parent::message('Data inválida.', $redirectUrl, 'ERROR');
                     }
                 }
                 $dados = array('idProjeto' => $idProjeto, 'idPais' => $idPais, 'idUF' => $idUF, 'idMunicipioIBGE' => $idMunicipio, 'Usuario' => $this->IdUsuario, 'stAbrangencia' => 1, 'siAbrangencia' => filter_input(INPUT_POST, 'novoRealizado'), 'dsJustificativa' => $dsJustificativa, 'dtRealizacao' => $dtNovo);
                 $AbrangenciaDAO->cadastrar($dados);
             } else {
                 parent::message('Não é possível salvar o mesmo local mais de uma vez. ' . '(País, Uf, Município)', $redirectUrl, 'ERROR');
             }
         }
         parent::message('Dados salvos com sucesso!', $redirectUrl, 'CONFIRM');
     } catch (Exception $e) {
         parent::message('Erro ao salvar os dados.', $redirectUrl, 'ERROR');
     }
 }
 /**
  * Método para enviar o arquivo txt do banco do brasil
  * @access public
  * @param void
  * @return void
  */
 public function uploadAction()
 {
     /*if ($this->getIdGrupo != 121 && $this->getIdGrupo != 129) // só Técnico de Acompanhamento que pode acessar
     		{
     			parent::message('Você não tem permissão para acessar essa área do sistema!', 'principal/index', 'ALERT');
     		}*/
     // caso o formulário seja enviado via post
     if ($this->getRequest()->isPost()) {
         // configuração o php.ini para 100MB
         @set_time_limit(0);
         @ini_set('mssql.textsize', 10485760000);
         @ini_set('mssql.textlimit', 10485760000);
         @ini_set('mssql.timeout', 10485760000);
         @ini_set('upload_max_filesize', '100M');
         // 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 = strtolower(Upload::getExtensao($arquivoNome));
             // extensão
         }
         // caminho do arquivo txt
         $so = stripos($_SERVER['SERVER_SOFTWARE'], 'win32') != FALSE ? 'WINDOWS' : 'LINUX';
         // sistema operacional
         $bar = $so == 'WINDOWS' ? '\\' : '/';
         // configura a barra de acordo com o SO
         $this->arquivoTXT = getcwd() . $bar . 'public' . $bar . 'txt' . $bar . $this->arquivoTXT;
         // diretório interno do arquivo
         $dir = $this->arquivoTXT;
         // diretório onde se encontram os arquivos do banco
         if (!is_dir($dir)) {
             if (!mkdir($dir, 0755, true)) {
                 throw new RuntimeException("Não foi possível criar a pasta para salvar o arquivo");
             }
         }
         try {
             // integração MODELO e VISÃO
             if (empty($arquivoTemp)) {
                 throw new Exception('Por favor, informe o arquivo!');
             } else {
                 if ($arquivoExtensao != 'ret' && $arquivoExtensao != 'txt' || $arquivoTipo != 'text/plain' && $arquivoTipo != 'application/octet-stream' && $arquivoTipo != '') {
                     throw new Exception('A extensão do arquivo é inválida, envie somente arquivos <strong>.txt</strong> ou <strong>.ret</strong>!');
                 } else {
                     if ($arquivoTamanho > 14680064) {
                         throw new Exception('O arquivo não pode ser maior do que <strong>14MB</strong>!');
                     } else {
                         if ($arquivoTamanho <= 150) {
                             throw new Exception('O layout do arquivo enviado é inválido!');
                         } else {
                             $this->tbDepositoIdentificadoCaptacao = new tbDepositoIdentificadoCaptacao();
                             $this->tbTmpDepositoIdentificado = new tbTmpDepositoIdentificado();
                             // verifica se existe algum dado na tabela
                             $buscar = $this->tbDepositoIdentificadoCaptacao->buscar()->toArray();
                             if (count($buscar) > 0) {
                                 throw new Exception('Aguarde um momento, pois, já existe um arquivo sendo processado!');
                             } else {
                                 if (file_exists($dir . '/' . $arquivoNome)) {
                                     throw new Exception('O arquivo <strong>' . $arquivoNome . '</strong> já existe!');
                                 } else {
                                     // envia o arquivo
                                     if (move_uploaded_file($arquivoTemp, $dir . '/' . $arquivoNome)) {
                                         // abre o diretório
                                         if (($abrir = opendir($dir)) === false) {
                                             throw new Exception('Não foi possível abrir o diretório <strong>' . $dir . '</strong>!');
                                         }
                                         // busca todos os arquivos do diretório
                                         $i = 0;
                                         while (($arq = readdir($abrir)) !== false) {
                                             // verifica se a extensão do arquivo é .txt ou .ret
                                             if (substr(strtolower($arq), -4) == '.txt' || substr(strtolower($arq), -4) == '.ret') {
                                                 // array contendo o caminho/nome completo de cada arquivo
                                                 $arquivos[] = $dir . $bar . $arq;
                                                 if ($i == 0) {
                                                     // abre o arquivo para leitura
                                                     $abrir_arquivo_header = fopen($arquivos[0], 'r');
                                                     // pega a linha do arquivo
                                                     $linha_header = fgets($abrir_arquivo_header, 4096);
                                                     // faz a validação do arquivo de acordo com o layout
                                                     $sequencial = substr($linha_header, 1, 4);
                                                     // SEQUENCIAL
                                                     $cliente = substr($linha_header, 5, 5);
                                                     // CLIENTE: MINC
                                                     $data_geracao = substr($linha_header, 10, 8);
                                                     // DATA DE GERAÇÃO DO ARQUIVO
                                                     $referencia = substr($linha_header, 18, 6);
                                                     // MÊS E ANO DE REFERÊNCIA DOS DEPÓSITOS
                                                     // faz a validação do arquivo pelo header
                                                     // verifica pelo header se o arquivo já existe
                                                     if (substr($linha_header, 0, 1) == 1) {
                                                         if (!is_numeric($sequencial) || trim(strtoupper($cliente)) != 'MINC' || !Data::validarData($data_geracao) || !Data::validarData('01' . $referencia)) {
                                                             // fecha o arquivo
                                                             fclose($abrir_arquivo_header);
                                                             // exclui o arquivo
                                                             unlink($arquivos[0]);
                                                             throw new Exception('O layout do arquivo enviado é inválido!');
                                                         }
                                                         // busca a data de geração do arquivo para evitar inserção de registros duplicados
                                                         //$dataGeracaoArquivo = Data::dataAmericana(Mascara::addMaskDataBrasileira($data_geracao));
                                                         // verifica se o arquivo já está cadastrado no banco de dados
                                                         $buscarArquivoCadastrado = $this->tbTmpDepositoIdentificado->buscar(array('dtGeracao = ?' => $data_geracao));
                                                         if (count($buscarArquivoCadastrado) > 0) {
                                                             // fecha o arquivo
                                                             fclose($abrir_arquivo_header);
                                                             // exclui o arquivo
                                                             unlink($arquivos[0]);
                                                             throw new Exception('Esse arquivo já foi enviado!');
                                                         }
                                                         $i++;
                                                     }
                                                     if (!is_numeric($sequencial) || trim(strtoupper($cliente)) != 'MINC' || !Data::validarData($data_geracao) || !Data::validarData('01' . $referencia)) {
                                                         // fecha o arquivo
                                                         fclose($abrir_arquivo_header);
                                                         // exclui o arquivo
                                                         unlink($arquivos[0]);
                                                         throw new Exception('O layout do arquivo enviado é inválido!');
                                                     }
                                                     // fecha o arquivo
                                                     fclose($abrir_arquivo_header);
                                                     // exclui o arquivo
                                                     if (isset($arquivos[$i])) {
                                                         unlink($arquivos[$i]);
                                                     }
                                                 }
                                                 // fecha if ($i == 0)
                                             }
                                             // fecha if
                                         }
                                         // fecha while
                                         // caso exista arquivo(s) .txt ou .ret no diretório:
                                         // 	1. Varre o conteúdo de cada arquivo
                                         // 	2. Grava o conteúdo de cada linha no banco
                                         // 	3. Deleta o arquivo do diretório
                                         if (isset($arquivos) && count($arquivos) > 0) {
                                             // ========== INÍCIO - VARRE O ARQUIVO DETALHADAMENTE ==========
                                             foreach ($arquivos as $arquivoTXT) {
                                                 // abre o arquivo para leitura
                                                 $abrir_arquivo = fopen($arquivoTXT, 'r');
                                                 // início while de leitura do arquivo linha por linha
                                                 $i = 0;
                                                 $dsInformacao = array();
                                                 while (!feof($abrir_arquivo)) {
                                                     // pega a linha do arquivo
                                                     $linha = fgets($abrir_arquivo, 4096);
                                                     // caso a linha não seja vazia e o primeiro caractere for numérico
                                                     if (!empty($linha) && is_numeric(substr($linha, 0, 1))) {
                                                         // armazena as linhas do arquivo em um array
                                                         $dsInformacao[$i] = trim($linha);
                                                     }
                                                     $i++;
                                                 }
                                                 // fim while de leitura do arquivo linha por linha
                                                 // fecha o arquivo
                                                 fclose($abrir_arquivo);
                                                 // exclui o arquivo
                                                 unlink($arquivoTXT);
                                                 // grava linha por linha do arquivo no banco
                                                 foreach ($dsInformacao as $ds) {
                                                     if (!$this->tbDepositoIdentificadoCaptacao->cadastrarDados(array('dsInformacao' => $ds, 'idUsuario' => $this->getIdUsuario))) {
                                                         throw new Exception('Erro ao enviar arquivo!');
                                                     }
                                                 }
                                             }
                                             $this->tbDepositoIdentificadoCaptacao->DepositoIdentificadoCaptacao();
                                             $where = "SUBSTRING(dsInformacao,1,1)!='1'";
                                             $this->tbTmpDepositoIdentificado->deletar($where);
                                             // ========== FIM - VARRE O ARQUIVO DETALHADAMENTE ==========
                                         }
                                         // fecha if
                                         parent::message('Arquivo enviado com sucesso!', 'movimentacaodeconta/upload', 'CONFIRM');
                                     } else {
                                         parent::message('Erro ao enviar arquivo!', 'movimentacaodeconta/upload', 'ERROR');
                                     }
                                 }
                             }
                             // fecha else
                         }
                     }
                 }
             }
         } catch (Exception $e) {
             $this->view->message = $e->getMessage();
             $this->view->message_type = 'ERROR';
         }
     }
     // fecha if post
 }
예제 #6
0
 public function buscalembreteAction()
 {
     // caso o formulário seja enviado via post
     if ($this->getRequest()->isPost()) {
         // recebe o pronac e data do lembrete via post
         $post = Zend_Registry::get('post');
         $pronac = (int) $post->pronac;
         $dtlembrete = $post->dtlembrete;
         try {
             // verifica se a data dolembrete veio vazio
             if (empty($dtlembrete) && !Data::validarData($dtlembrete)) {
                 throw new Exception("A Data é inválida!");
             } else {
                 // integração MODELO e VISÃO
                 $resultado = LembretesDAO::pesquisaLembrete($pronac, $dtlembrete);
                 // caso o Lembrete não esteja cadastrado
                 if (!$resultado) {
                     throw new Exception("Registro não encontrado!");
                 } else {
                     // redireciona a data para o lembrete
                     $this->_redirect("lembretes/index?pronac=" . $pronac . "&databusca=" . $dtlembrete);
                 }
             }
             // fecha else
         } catch (Exception $e) {
             parent::message($e->getMessage(), "lembretes/buscalembrete?pronac=" . $pronac, "ERROR");
         }
     }
     // fecha if
     $get = Zend_Registry::get('get');
     $pronac = $get->pronac;
     $dtlembrete = $get->dtlembrete;
     $mens = new LembretesDAO();
     $tblembretesprojeto = $mens->buscaProjeto($pronac);
     $this->view->lembretesprojeto = $tblembretesprojeto;
     $tblembretes = $mens->buscaLembrete($pronac);
     $this->view->lembretes = $tblembretes;
 }