private async Task AdicionaNaOrganizacaoDoConvite(Guid idOrganizacao, Usuario usuario, Guid responsavelCriacao, Guid idPessoaCriada) { try { var usuarioOrganizacaoExistente = await _organizacaoPessoaRepository.BuscarPorOrganizacao(idOrganizacao, usuario.Login); if (usuarioOrganizacaoExistente == null) { var usuarioOrganizacao = new OrganizacaoUsuario(); usuarioOrganizacao.IdOrganizacao = idOrganizacao; usuarioOrganizacao.IdUsuario = usuario.Id; usuarioOrganizacao.IdPessoa = idPessoaCriada; usuarioOrganizacao.UsuarioPlataforma = true; usuarioOrganizacao.Ativo = true; usuarioOrganizacao.DataCriacao = DateTime.Now; usuarioOrganizacao.ResponsavelCriacao = responsavelCriacao; _organizacaoPessoaRepository.Add(usuarioOrganizacao); _organizacaoPessoaRepository.Save(); } } catch (Exception e) { throw e; } }
private async Task <UsuarioLogadoViewModel> AutenticaComGoogle(UsuarioSocialViewModel login) { if (login != null) { var usuario = await _loginServico.VerificaLoginGoogle(login); if (usuario == null) { return(null); } if (!usuario.Ativo) { return(null); } if (!usuario.ContaGoogle) { return(null); } try { var organizacoes = await _organizacaoService.ListarOrganizacoesUsuarioEmail(usuario.Login); OrganizacaoUsuario organizacaoUsuario = null; if (organizacoes.Any(x => x.UltimaAcessada)) { organizacaoUsuario = organizacoes.FirstOrDefault(x => x.UsuarioPlataforma && x.UltimaAcessada); } else { organizacaoUsuario = organizacoes.FirstOrDefault(x => x.UsuarioPlataforma); } var pessoa = await _pessoaRepository.BuscarPorEmail(usuario.Login); if (!usuario.Ativo) { return(null); } UsuarioLogadoViewModel usuarioLogado = null; if (!pessoa.GoobeeAdmin) { if (organizacaoUsuario == null || !organizacaoUsuario.IdUsuario.HasValue) { return(null); } if (organizacaoUsuario.Pessoa == null || organizacaoUsuario.Pessoa.Status == false) { return(null); } List <Guid> idsTimes = new List <Guid>(); foreach (var timePessoa in organizacaoUsuario.Pessoa.TimePessoas) { if (timePessoa.IdOrganizacao == organizacaoUsuario.IdOrganizacao) { idsTimes.Add(timePessoa.IdTime); } } usuarioLogado = new UsuarioLogadoViewModel() { DataCriacao = organizacaoUsuario.Pessoa.DataCriacao, Email = organizacaoUsuario.Pessoa.Email, Nome = organizacaoUsuario.Pessoa.Nome, Foto = organizacaoUsuario.Pessoa.Foto, Id = organizacaoUsuario.IdUsuario.Value, IdPessoa = organizacaoUsuario.IdPessoa, IdOrganizacao = organizacaoUsuario.IdOrganizacao, RoleEnum = organizacaoUsuario.OrganizacaoUsuarioRole.Role, IdsTimes = idsTimes }; } else { Guid?idOrganizacao; if (pessoa.IdUltimaOrgAcessada.HasValue) { idOrganizacao = pessoa.IdUltimaOrgAcessada.Value; } else { idOrganizacao = _organizacaoRepository.GetAll().FirstOrDefault()?.Id; } usuarioLogado = new UsuarioLogadoViewModel() { DataCriacao = DateTime.Now, Email = pessoa.Email, Nome = pessoa.Nome, Foto = pessoa.Foto, Id = usuario.Id, IdPessoa = pessoa.Id, IdOrganizacao = idOrganizacao, RoleEnum = OrganizacaoUsuarioRoleEnum.GoobeeAdmin, IdsTimes = new List <Guid>() }; } return(usuarioLogado); } catch (Exception error) { return(null); } } return(null); }