public async Task <ResultDto <UserDto> > SalvarUsuario(UserDto userDto) { var userDtoValidate = new UserDtoValidate(userDto); if (!userDtoValidate.Validate()) { return(ResultDto <UserDto> .Validation(userDtoValidate.Mensagens)); } var usuarioJaCadastrado = await _userManager.Users.FirstOrDefaultAsync(c => c.Email == userDto.Email); if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsGoogle) { return(ResultDto <UserDto> .Validation("Email já cadastrado via google!")); } else if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsFacebook) { return(ResultDto <UserDto> .Validation("Email já cadastrado via facebook!")); } else if (usuarioJaCadastrado != null) { return(ResultDto <UserDto> .Validation("Email já cadastrado!")); } var user = new User(userDto); if (userDto.Role != "Administrador") { var userEstabelecimentos = new List <UserEstabelecimento> { new UserEstabelecimento() { EstabelecimentoId = userDto.EstabelecimentoId } }; user.VincularEstabelecimento(userEstabelecimentos); } var result = await _userManager.CreateAsync(user, userDto.Senha); userDto.Id = user.Id; if (result.Succeeded && !string.IsNullOrWhiteSpace(userDto.Role)) { var userDB = await _userManager.Users .Include(x => x.UserEstabelecimentos) .ThenInclude(x => x.Estabelecimento) .FirstOrDefaultAsync(u => u.Id == userDto.Id); var estabelecimento = userDB.UserEstabelecimentos.FirstOrDefault().Estabelecimento; userDto.EstabelecimentoNomeUrl = estabelecimento.Url; userDto.EstabelecimentoNome = estabelecimento.Nome; await _userManager.AddToRoleAsync(userDB, userDto.Role); _emailService.Send(userDto.Email, "Confirmação de cadastro", userDto.EstabelecimentoNome, EmailTemplate.ConfirmacaoCadastro(_configuration, userDto)); } return(await Task.FromResult(ResultDto <UserDto> .Success(userDto))); }
public async Task <ResultDto <UserDto> > Salvar(UserDto userDto) { var userDtoValidate = new UserDtoValidate(userDto); if (!userDtoValidate.Validate()) { return(ResultDto <UserDto> .Validation(userDtoValidate.Mensagens)); } var usuarioJaCadastrado = await _userManager.Users.FirstOrDefaultAsync(c => c.Email == userDto.Email); if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsGoogle) { return(ResultDto <UserDto> .Validation("Email já cadastrado via google!")); } else if (usuarioJaCadastrado != null && usuarioJaCadastrado.IsFacebook) { return(ResultDto <UserDto> .Validation("Email já cadastrado via facebook!")); } else if (usuarioJaCadastrado != null) { return(ResultDto <UserDto> .Validation("Email já cadastrado!")); } var userEstabelecimentos = new List <UserEstabelecimento> { new UserEstabelecimento() { EstabelecimentoId = userDto.EstabelecimentoId } }; var user = new User(userDto); user.VincularEstabelecimento(userEstabelecimentos); var result = await _userManager.CreateAsync(user, userDto.Senha); userDto.Id = user.Id; if (result.Succeeded && !string.IsNullOrWhiteSpace(userDto.Role)) { var userDB = await _userManager.Users .Include(x => x.UserEstabelecimentos) .ThenInclude(x => x.Estabelecimento) .FirstOrDefaultAsync(u => u.Id == userDto.Id); var estabelecimento = userDB.UserEstabelecimentos.FirstOrDefault().Estabelecimento; userDto.EstabelecimentoNomeUrl = estabelecimento.Url; userDto.EstabelecimentoNome = estabelecimento.Nome; await _userManager.AddToRoleAsync(userDB, userDto.Role); } else if (result.Errors.Any(x => x.Code == "PasswordTooShort")) { return(ResultDto <UserDto> .Validation("senha deve ter no minimo 6 caracteres!")); } else { return(ResultDto <UserDto> .Validation("Cadastro inválido!")); } return(await Task.FromResult(ResultDto <UserDto> .Success(userDto))); }