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); } }
public async Task <Result <ClienteDTO> > RegistrarNovoClienteAsync(CadastroDeClienteViewModel viewModel) { var result = Cliente.RegistrarNovoCliente(viewModel.Nome, viewModel.DataDeNascimento, viewModel.Salario); if (result.IsFailure) { return(result.ToResult <ClienteDTO>()); } var cliente = result.Value; await _clienteRepository.AdicionarAsync(cliente).ConfigureAwait(false); await _unitOfWork.SaveChangesAsync().ConfigureAwait(false); return(result.ToResult(new ClienteDTO { Id = cliente.Id, Nome = cliente.Nome, DataDeNascimento = cliente.DataDeNascimento, Salario = cliente.Salario })); }
public async Task <IActionResult> FinalizarPedido(ClienteViewModel viewModel) { var pedido = await _pedidoRepository.ObterPedidoEmRascunhoAsync(); var cliente = await _clienteRepository.ObterPorEmailAsync(viewModel.Email); if (cliente is null) { cliente = new Cliente(viewModel.Nome, viewModel.Email, viewModel.Telefone); await _clienteRepository.AdicionarAsync(cliente); } if (pedido is null) { return(BadRequest("Pedido não encontrado")); } pedido.FinalizarPedido(cliente); _pedidoRepository.Atualizar(pedido); try { await _unitOfWork.CommitAsync(); } catch (Exception) { return(BadRequest("Ocorreu um erro ao finalizar o produto")); } return(Ok(new { PedidoId = pedido.Id.ToString() })); }