public IActionResult DownloadArquivoSaida(int idFila) { string pathSaidaAplicacao = string.Empty; string arquivoSaida = string.Empty; Models.SessionUsuarioLogado sessionUsuarioLogado = new Models.SessionUsuarioLogado(); Enriquecimento.Models.SqlServer.Enriquecimento.HistoricoDownload historicoDownload = new Enriquecimento.Models.SqlServer.Enriquecimento.HistoricoDownload(); Enriquecimento.Models.SqlServer.Enriquecimento.Fila fila = new Enriquecimento.Models.SqlServer.Enriquecimento.Fila(); fila = Enriquecimento.Service.Fila.RetornarJob((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp, idFila); //pathSaidaAplicacao = $"{this._hostingEnvironment.WebRootPath}/"; pathSaidaAplicacao = fila.CaminhoSaidaAplicacao; arquivoSaida = fila.ArquivoSaida; var provider = new FileExtensionContentTypeProvider(); string contentType; if (!provider.TryGetContentType(pathSaidaAplicacao + arquivoSaida, out contentType)) { contentType = "application/octet-stream"; } byte[] fileBytes = System.IO.File.ReadAllBytes(pathSaidaAplicacao + arquivoSaida); //Inserir na tabela HistoricoDownload sessionUsuarioLogado = HttpContext.Session.Get <Models.SessionUsuarioLogado>("UsuarioLogado"); historicoDownload = new Enriquecimento.Models.SqlServer.Enriquecimento.HistoricoDownload(); historicoDownload.ArquivoEntrada = false; historicoDownload.ArquivoSaida = true; historicoDownload.Inclusao = DateTime.Now; historicoDownload.IdAcesso = sessionUsuarioLogado.IdAcesso; historicoDownload.IdCliente = sessionUsuarioLogado.IdCliente; historicoDownload.IdFila = idFila; historicoDownload.IdUsuario = sessionUsuarioLogado.IdUsuario; historicoDownload = Enriquecimento.Service.Fila.InserirDownloadArquivoEntrada((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp, historicoDownload); return(File(fileBytes, contentType, arquivoSaida)); }
public async Task <IActionResult> UploadFile(List <IFormFile> files) { string extensaoArquivo = ""; string loginCliente = ""; string pathEntradaAplicacao = ""; string pathEntradaBanco = ""; string pathSaidaAplicacao = ""; string pathSaidaBanco = ""; Models.Class.ArquivoTipo arquivoTipo = new Models.Class.ArquivoTipo(); Models.SessionJobProcessar sessionJobProcessar = null; Models.SessionUsuarioLogado sessionUsuarioLogado = null; Enriquecimento.Models.SqlServer.Enriquecimento.Fila fila = new Enriquecimento.Models.SqlServer.Enriquecimento.Fila(); List <Models.Class.ArquivoTipo> listArquivoTipo = new List <Models.Class.ArquivoTipo>(); List <Models.SessionClientes.Cliente> listSessionCliente = new List <Models.SessionClientes.Cliente>(); try { ViewBag.MensagemProcessar = ""; if ((files != null) && (files.Count > 0)) { foreach (var file in files) { arquivoTipo = new Models.Class.ArquivoTipo(); extensaoArquivo = ""; extensaoArquivo = file.FileName; extensaoArquivo = (string.IsNullOrEmpty(extensaoArquivo) == false ? extensaoArquivo : ""); if (extensaoArquivo.Contains(".") == true) { extensaoArquivo = Utils.Funcoes.Reverse(extensaoArquivo); extensaoArquivo = extensaoArquivo.Substring(0, extensaoArquivo.IndexOf('.')); extensaoArquivo = Utils.Funcoes.Reverse(extensaoArquivo); } arquivoTipo.Arquivo = file; arquivoTipo.ExtensaoArquivo = extensaoArquivo; listArquivoTipo.Add(arquivoTipo); } sessionJobProcessar = HttpContext.Session.Get <Models.SessionJobProcessar>("JobProcessar"); sessionUsuarioLogado = HttpContext.Session.Get <Models.SessionUsuarioLogado>("UsuarioLogado"); listSessionCliente = HttpContext.Session.Get <List <Models.SessionClientes.Cliente> >("Clientes"); foreach (var item001 in listArquivoTipo) { pathEntradaAplicacao = $"{this._hostingEnvironment.WebRootPath}/"; pathEntradaAplicacao = Utils.AppConfiguration.GetAppConfiguration((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp).GetSection("AppConfiguration")["CaminhoEntradaAplicacao"]; pathEntradaBanco = Utils.AppConfiguration.GetAppConfiguration((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp).GetSection("AppConfiguration")["CaminhoEntradaBanco"]; pathSaidaAplicacao = $"{this._hostingEnvironment.WebRootPath}/"; pathSaidaAplicacao = Utils.AppConfiguration.GetAppConfiguration((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp).GetSection("AppConfiguration")["CaminhoSaidaAplicacao"]; pathSaidaBanco = Utils.AppConfiguration.GetAppConfiguration((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp).GetSection("AppConfiguration")["CaminhoSaidaBanco"]; if ((item001.ExtensaoArquivo.ToLower().Equals("txt")) || (item001.ExtensaoArquivo.ToUpper().Equals("csv"))) { fila = new Enriquecimento.Models.SqlServer.Enriquecimento.Fila(); fila.Inclusao = DateTime.Now; fila.IdCliente = sessionJobProcessar.IdCliente; loginCliente = ""; var resultCliente = (from t1 in listSessionCliente where t1.IdCliente == fila.IdCliente select t1).ToList(); if ((resultCliente != null) && (resultCliente.Count > 0)) { loginCliente = resultCliente.First().NomeCliente; } fila.LoginCliente = loginCliente; fila.IdUsuario = sessionUsuarioLogado.IdUsuario; fila.LoginUsuario = sessionUsuarioLogado.LoginUsuario; fila.IdAcesso = sessionUsuarioLogado.IdAcesso; fila.NomeJob = Enriquecimento.Service.Fila.GerarNomeJob(item001.Arquivo.FileName); fila.NomeTabela = Enriquecimento.Service.Fila.GerarNomeTabela(item001.Arquivo.FileName, fila.Inclusao); fila.NomeArquivo = fila.NomeTabela; fila.CaminhoEntradaAplicacao = pathEntradaAplicacao; fila.CaminhoEntradaBanco = pathEntradaBanco; fila.ArquivoEntrada = fila.NomeTabela + "_ORIGINAL" + "." + item001.ExtensaoArquivo.ToLower(); fila.ArquivoEntradaOriginal = item001.Arquivo.FileName; fila.CaminhoSaidaAplicacao = pathSaidaAplicacao; fila.CaminhoSaidaBanco = pathSaidaBanco; fila.ArquivoSaida = fila.NomeTabela + "_PROCESSADO" + "." + "zip"; //Fazer o upload do arquivo using (var stream = new FileStream(fila.CaminhoEntradaAplicacao + fila.ArquivoEntrada, FileMode.Create)) { await item001.Arquivo.CopyToAsync(stream); } fila.IdStatusJob = (long)Enriquecimento.Models.Enumeradores.StatusJob.EmFila; fila.IdProcedimento = sessionJobProcessar.IdProcedimento; fila.IdLayoutEntrada = sessionJobProcessar.IdLayoutEntrada; fila.IdLayoutSaida = sessionJobProcessar.IdLayoutSaida; fila.QuantidadeRegistrosEntrada = 0; fila.QuantidadeRegistrosSaida = 0; fila.Finalizacao = null; //Inserir o Job na Fila fila = await Enriquecimento.Service.Fila.InserirJob((int)Enriquecimento.Models.Enumeradores.OrigemAppsettingsJson.WebApp, fila); } else { ViewBag.MensagemProcessar = "Só é aceito arquivo com extesão txt ou csv."; } } } else { ViewBag.MensagemProcessar = "Selecione um arquivo para ser processado."; } } catch (System.Exception ex) { ViewBag.MensagemProcessar = ex.Message.ToString(); } finally { } return(this.Ok()); }