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()); }
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(); }