Ejemplo n.º 1
0
        private string[] DownloadListLink(string _filepath, ref PedidoImportacao newPedidoEntity, IIdentityContext _systemContext)
        {
            var index = newPedidoEntity.Arquivos.FirstOrDefault().Index;

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao()
            {
                Descricao       = "Encontrado arquivo de listagem de links...",
                IndicadorStatus = "I"
            });
            _systemContext.SaveChanges();

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao()
            {
                Descricao       = "Lendo Links para download...",
                IndicadorStatus = "I"
            });
            _systemContext.SaveChanges();

            var           links = File.ReadAllLines(_filepath);
            List <string> files = new List <string>()
            {
            };

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao()
            {
                Descricao       = "Realizando Download dos arquivos listados na lista de links...",
                IndicadorStatus = "I"
            });
            _systemContext.SaveChanges();

            for (var i = 0; i < links.Count(); i++)
            {
                var arquivo = new ArquivoBase
                {
                    Index     = index,
                    Nome      = $"Arquivo{i}",
                    UrlOrigem = links[i]
                };

                newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao()
                {
                    Descricao       = $"Realizando download do link {links[i]} da lista de links...",
                    IndicadorStatus = "I"
                });
                newPedidoEntity.Arquivos.Add(arquivo);
                _systemContext.SaveChanges();

                this.DownloadOnDisk(arquivo, newPedidoEntity, _systemContext);
            }

            var path      = Path.Combine(Configuration.DefaultTempBaseFiles, newPedidoEntity.PastaTemp);
            var filesList = Directory.GetFiles(path);

            files.AddRange(filesList);

            return(files.ToArray());
        }
Ejemplo n.º 2
0
        public void DownloadOnDisk(ArquivoBase arquivo, PedidoImportacao newPedidoEntity, IIdentityContext _context)
        {
            var index = arquivo.Index;

            var destineBase    = Path.Combine(Configuration.DefaultTempBaseFiles, index.Name);
            var destineExtract = Path.Combine(Configuration.DefaultTempBaseFiles, newPedidoEntity.PastaTemp);

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao
            {
                Descricao       = "Criando diretorio de extração...",
                IndicadorStatus = "I"
            });

            try
            {
                _context.SaveChanges();
            }
            catch (Exception erro)
            {
                throw erro;
            }

            //LinuxHelpers.Exec($"chmod 777 {Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")}");
            Directory.CreateDirectory(destineExtract);
            Directory.CreateDirectory(destineBase);
            var fileBaseName = Path.Combine(destineBase, arquivo.Nome);

            var uri = new Uri(arquivo.UrlOrigem);

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao
            {
                Descricao       = $"Realizando download do arquivo {arquivo.Nome}...",
                IndicadorStatus = "I"
            });

            try
            {
                _context.SaveChanges();
            }
            catch (Exception erro)
            {
                throw erro;
            }

            var webClient = new WebClient();

            Debug.WriteLine("--------------------------------------------------");
            Debug.WriteLine("Iniciando Download");
            this._importacaoWebClient = newPedidoEntity;
            this._identityWebClient   = _context;

            webClient.DownloadProgressChanged += WebClient_DownloadProgressChanged;
            webClient.DownloadFileCompleted   += WebClient_DownloadFileCompleted;
            try
            {
                webClient.DownloadFileTaskAsync(uri, $"{fileBaseName}").GetAwaiter().GetResult();
                newPedidoEntity = this._importacaoWebClient;
                _context        = this._identityWebClient;
            }
            catch (Exception erro)
            {
                newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao
                {
                    Descricao       = $"Erro ao registrar a importação: {erro.Message}...",
                    IndicadorStatus = "E"
                });
                newPedidoEntity.Estado = "E";
                _context.SaveChanges();

                throw erro;
            }

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao
            {
                Descricao       = $"Extraindo arquivo {arquivo.Nome}...",
                IndicadorStatus = "I"
            });
            _context.SaveChanges();

            //if(Directory.Exists(destineExtract))
            //{
            //    Directory.Delete()
            //}

            using (ZipFile zip1 = ZipFile.Read(fileBaseName))
            {
                foreach (ZipEntry zip in zip1)
                {
                    zip.Extract(destineExtract, ExtractExistingFileAction.OverwriteSilently);
                }
            }

            //     ZipFile.ExtractToDirectory(fileBaseName, destineExtract);

            newPedidoEntity.LogPedidoImportacao.Add(new LogPedidoImportacao
            {
                Descricao       = $"Arquivos extraidos e sendo encaminhados para a fase de analise",
                IndicadorStatus = "I"
            });
            _context.SaveChanges();
        }