Beispiel #1
0
        public async Task <IActionResult> UploadFile(IFormFile file)
        {
            try
            {
                var sr = new StreamReader(file.OpenReadStream());

                var dt = Util.ConvertCSVtoDataTable(sr);

                if (dt == null)
                {
                    TempData["Error"] = "Arquivo em branco";
                }
                else
                {
                    if (Util.validaColunas(Dicionario.RetornaColunasClientes(), dt.Columns))
                    {
                        var clientes = PopulaListaClientes(dt);

                        var mensagem = ValidaInformacoes(clientes);

                        if (Util.validaCampo(mensagem))
                        {
                            TempData["Error"] = mensagem;
                        }
                        else
                        {
                            foreach (var cliente in clientes)
                            {
                                try
                                {
                                    var result = await CadastrarCliente(cliente);

                                    if (!result.Succeeded)
                                    {
                                        TempData["Error"] = result.Errors;

                                        break;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    var user = await _userManager.FindByEmailAsync(cliente.Email);

                                    if (user != null)
                                    {
                                        await _userManager.DeleteAsync(user);
                                    }

                                    throw ex;
                                }
                            }
                        }
                    }
                    else
                    {
                        TempData["Error"] = "As colunas do arquivo estão inválidas";
                    }
                }
            }
            catch
            {
                TempData["Error"] = "Algum erro desconhecido ocorreu, tente novamente";
            }

            return(RedirectToAction(nameof(Index)));
        }