コード例 #1
0
        public async Task ImportarArquivoAsync(IFormFile arquivo)
        {
            double progresso          = 0;
            int    clientesImportados = 0;
            int    clientesTotal      = 0;
            Tarefa tarefa             = null;

            try
            {
                IList <Cliente> clientes = new List <Cliente>();

                using (var reader = new StreamReader(arquivo.OpenReadStream()))
                {
                    var data   = reader.ReadToEnd();
                    var linhas = data.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
                    clientesTotal = linhas.Count();

                    tarefa = await _tarefaService.IniciarTarefaAsync(arquivo.FileName);

                    foreach (var linha in linhas)
                    {
                        progresso = (clientesImportados * 100 / clientesTotal);

                        var clienteLinha = linha.Split(',');
                        var cliente      = new Cliente()
                        {
                            Telefone       = long.Parse(clienteLinha[0]),
                            Nome           = clienteLinha[1],
                            DataNascimento = DateTime.Parse(clienteLinha[2])
                        };

                        await _repositorio.AdicionarAsync(cliente);

                        await _tarefaService.AtualizarProgressoAsync(tarefa, progresso);

                        clientesImportados++;
                    }

                    _tarefaService.FinalizarTarefaAsync(tarefa);
                }
            }
            catch (Exception ex)
            {
                _tarefaService.AtualizarStatusAsync(tarefa, StatusTarefaEnum.Erro);
            }
        }