Esempio n. 1
0
        /// <summary>
        /// Gera uma fatura a partir de um arquivo .csv válido
        /// </summary>
        /// <param name="Caminho">Caminho do arquivo .csv</param>
        public async Task <Fatura> GerarFatura(IFormFile file, DateTime dtInicial, DateTime dtFinal)
        {
            try
            {
                var stream = await ReadAsStringAsync(file);

                var lines = stream.Split(Environment.NewLine).Skip(1).ToList();
                lines.RemoveAt(lines.Count - 1);

                Fatura     fatura = new Fatura(dtInicial, dtFinal);
                Lancamento lancamento;

                foreach (string line in lines)
                {
                    var values = line.Split(',');

                    var data      = DateTime.Parse(values[0]);
                    var categoria = values[1];
                    var descricao = NubankToolBox.DefineDescricao(values[2]);
                    //int parcela = NubankToolBox.DefineParcela(descricao);
                    //int numParcelas = NubankToolBox.DefineNumParcelas(descricao);
                    var valor = NubankToolBox.FormataValor(values[3]);

                    Responsavel responsavel = _responsavelRepository.GetByNome(NubankToolBox.DefineResponsavel(descricao)) ?? new Responsavel("Casa");

                    lancamento = new Lancamento(data, categoria, descricao, 0, 0, valor, fatura, new Responsavel("Casa"));

                    fatura.Lancamentos.Add(lancamento);
                }

                return(fatura);
            }
            catch (Exception)
            {
                throw;
            }
        }