Ejemplo n.º 1
0
        private void DownloadInspecaoAutomatica(IntegracaoInfos ftpInfo, IEnumerable <string> diretorios)
        {
            var diretorioLocal    = string.Empty;
            var diretoriosValidos = new List <string>();
            var inspecao          = new InspecaoCsvModel();

            if (diretorios != null)
            {
                diretoriosValidos = ObterSomenteDiretoriosValidos(diretorios);
            }
            foreach (var item in diretoriosValidos)
            {
                try
                {
                    diretorioLocal = ObterDiretorioLocal(ftpInfo.DiretorioInspecaoLocal, item);

                    _descompactar.ExcluirArquivoCasoExista(diretorioLocal, item);
                    DeletarDiretorioLocalInspecao(diretorioLocal);
                    if (!DownloadArquivo(item, diretorioLocal, ftpInfo))
                    {
                        continue;
                    }
                    if (!_descompactar.DescompactarArquivo(diretorioLocal, item))
                    {
                        continue;
                    }
                    inspecao = _csv.ObterDadosInspecao(diretorioLocal, ftpInfo);
                    if (inspecao.Excecao == null)
                    {
                        if (GravarInspecaoObtidaNoArquivoCsv(inspecao, diretorioLocal))
                        {
                            if (!GravarHistoricoDownload(item, "Rotina Automática"))
                            {
                                continue;
                            }
                        }
                    }

                    ExcluirArquivoCompactadoECsv(diretorioLocal, item);
                    if (inspecao.Excecao != null)
                    {
                        _listLog.Add(inspecao.Excecao.Mensagem);
                        _listExcecao.Add(inspecao.Excecao.Mensagem);
                    }
                }
                catch (Exception e)
                {
                    if (inspecao.Excecao == null)
                    {
                        var erro = new InspecoesGravadasModelServico
                        {
                            Excecao = new ExcecaoService
                            {
                                ExisteExcecao = true,
                                Mensagem      = string.Format(e.Message)
                            }
                        };
                        _listLog.Add(inspecao.Excecao.Mensagem);
                        _listExcecao.Add(erro.Excecao.Mensagem);
                    }
                    else
                    {
                        _listLog.Add(e.Message);
                        _listExcecao.Add(e.Message);
                    }
                }
            }

            if (_listLog.Any())
            {
                try
                {
                    if (ftpInfo.TipoIntegracao == 1)
                    {
                        _ftp.CreateDirectory(ftpInfo);
                    }
                    else
                    {
                        _sftp.CreateDirectory(ftpInfo);
                    }

                    EscreverArquivoDeLog(_listLog, ftpInfo);
                    _listLog.Clear();
                }
                catch (Exception e)
                {
                    _listExcecao.Add(e.Message);
                    _listLog.Clear();
                }
            }
        }