Ejemplo n.º 1
0
 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");
     }));
 }
Ejemplo n.º 2
0
        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());
                }
            }
        }