public async Task <IActionResult> GerarRemessa(int codigoBanco, [FromBody] BoletosViewModel model) { return(await Task.Run(() => { model.CodigoBanco = codigoBanco; var dataBytes = _gerenciador.GerarArquivoRemessa(model); var nomeArquivo = $"Boleto_{DateTime.Now.Year}{DateTime.Now.Month}{DateTime.Now.Day}{DateTime.Now.Hour}" + $"{DateTime.Now.Minute}{DateTime.Now.Second}"; HttpContext.Response.Headers.Add("Content-Type", "application/octet-stream"); HttpContext.Response.Headers.Add("Content-Filename", nomeArquivo); HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Filename"); HttpContext.Response.Headers.Add("Content-Disposition", $"attachment; filename=\"{nomeArquivo}.txt\""); return File(dataBytes.ToStream(), "application/pdf", $"{nomeArquivo}.txt"); })); }
public byte[] GerarArquivoRemessa(BoletosViewModel models) { var boletos = new Boletos(); var boletoViewModels = models.Boletos; boletos.AddRange(boletoViewModels.Select(Popula)); if (models.CodigoBanco != null) { boletos.Banco = Banco.Instancia(models.CodigoBanco.Value); } using (var ms = new MemoryStream()) { var remessa = new ArquivoRemessa(boletos.Banco, TipoArquivo.CNAB400, 1); remessa.GerarArquivoRemessa(boletos, ms); ms.Position = 0; using (var lerArquivo = new StreamReader(ms)) { var sbRefazArquivo = new StringBuilder(); string strTexto; int conta; while (lerArquivo.Peek() != -1) { strTexto = lerArquivo.ReadLine(); if (strTexto != null) { conta = strTexto.Length; if (conta < 240) { conta = 240 - conta; string strEspaco = null; for (int I = 1; I <= conta; I++) { strEspaco = strEspaco + " "; } sbRefazArquivo.AppendLine(strTexto + strEspaco); } else { sbRefazArquivo.AppendLine(strTexto); } } } return(sbRefazArquivo.ToString().ToBytes()); } } }