Exemplo n.º 1
0
        public async Task <IActionResult> CadastroAutonomo(Autonomo autonomo, int drpCategorias, List <string> diasSemana, IFormFile fupImagem)
        {
            ViewBag.Categorias = new SelectList(_categoriaDAO.ListarTodos(), "CategoriaId", "Nome");

            if (ModelState.IsValid)
            {
                UsuarioLogado uLogado = new UsuarioLogado
                {
                    UserName = autonomo.Email,
                    Email    = autonomo.Email
                };
                IdentityResult result = await _userManager.CreateAsync(uLogado, autonomo.Senha);

                if (_userManager.GetUserName(User) != null)
                {
                    if (fupImagem != null)
                    {
                        string arquivo = Guid.NewGuid().ToString() + Path.GetExtension(fupImagem.FileName);
                        string caminho = Path.Combine(_hosting.WebRootPath, "DijjImagens", arquivo);
                        fupImagem.CopyTo(new FileStream(caminho, FileMode.Create));
                        autonomo.Imagem = arquivo;
                    }
                    else
                    {
                        autonomo.Imagem = "semautonomo.png";
                    }

                    foreach (string dia in diasSemana)
                    {
                        if (autonomo.Agenda.Semana != null)
                        {
                            autonomo.Agenda.Semana += dia.ToString() + ", ";
                        }
                        else
                        {
                            autonomo.Agenda.Semana = dia.ToString() + ", ";
                        }
                    }

                    autonomo.Servico.Categoria = _categoriaDAO.BuscarId(drpCategorias);

                    if (_usuarioDAO.Alterar(autonomo))
                    {
                        ModelState.AddModelError("", "Dados atualizados!");
                    }
                    else
                    {
                        ModelState.AddModelError("", "Não foi possível atualizar os dados.");
                    }
                }
                else
                {
                    if (result.Succeeded)
                    {
                        string codigo = await _userManager.GenerateEmailConfirmationTokenAsync(uLogado);

                        await _signInManager.SignInAsync(uLogado, isPersistent : false);

                        if (fupImagem != null)
                        {
                            string arquivo = Guid.NewGuid().ToString() + Path.GetExtension(fupImagem.FileName);
                            string caminho = Path.Combine(_hosting.WebRootPath, "DijjImagens", arquivo);
                            fupImagem.CopyTo(new FileStream(caminho, FileMode.Create));
                            autonomo.Imagem = arquivo;
                        }
                        else
                        {
                            autonomo.Imagem = "semautonomo.png";
                        }

                        foreach (string dia in diasSemana)
                        {
                            if (autonomo.Agenda.Semana != null)
                            {
                                autonomo.Agenda.Semana += dia.ToString() + ", ";
                            }
                            else
                            {
                                autonomo.Agenda.Semana = dia.ToString() + ", ";
                            }
                        }

                        autonomo.Servico.Categoria = _categoriaDAO.BuscarId(drpCategorias);
                        if (_usuarioDAO.Cadastrar(autonomo))
                        {
                            return(RedirectToAction("PerfilAutonomo"));
                        }
                        else
                        {
                            ModelState.AddModelError("", "Email já cadastrado no sistema! Por favor informe um novo email.");
                            return(View(autonomo));
                        }
                    }
                    else
                    {
                        AdicionarErros(result);
                    }
                }
            }
            ModelState.AddModelError("", "É necessario preencher todos os dados.");
            return(View(autonomo));
        }