public void Adicionar(PessoaMySqlViewModel obj, string idOrganizacao)
        {
            // TODO: implementar o pesquisar time
            TimeMySql timeMySql = new TimeMySql {
            };

            PessoaMySql pessoaMySql = new PessoaMySql
            {
                Id                 = Guid.NewGuid().ToString(),
                Nome               = obj.Nome,
                Foto               = obj.Foto,
                Telefone           = obj.Telefone,
                Email              = obj.Email,
                MiniBio            = obj.MiniBio,
                Status             = obj.Status,
                DataCriacao        = DateTime.Now,
                ResponsavelCriacao = obj.ResponsavelCriacao,
                DataEdicao         = DateTime.Now,
                ResponsavelEdicao  = obj.ResponsavelEdicao,
                GoobeeAdmin        = false
            };

            pessoaMySql.TimePessoas = new List <TimePessoaMySql>(0);
            pessoaMySql.TimePessoas.Add(new TimePessoaMySql
            {
                IdPessoa           = pessoaMySql.Id,
                IdTime             = timeMySql.Id,
                Status             = true,
                DataCriacao        = DateTime.Now,
                ResponsavelCriacao = pessoaMySql.ResponsavelCriacao,
                DataEdicao         = DateTime.Now,
                IdOrganizacao      = idOrganizacao
            });

            _pessoaMySqlRepository.Adicionar(pessoaMySql);
        }
        public async Task <UsuarioLogadoMySqlViewModel> Autentica(LoginMySql login)
        {
            UsuarioLogadoMySqlViewModel usuarioLogado = null;

            if (login != null)
            {
                UsuarioViewModel usuario = VerificaLoginSenha(login);
                if (usuario == null)
                {
                    return(usuarioLogado);
                }

                IEnumerable <OrganizacaoUsuarioMySql> organizacoes = await _organizacaoMySqlRepository.ListarOrganizacoesUsuarioEmail(usuario.Login);

                OrganizacaoUsuarioMySql organizacaoUsuario = null;

                if (organizacoes.Any(x => x.UltimaAcessada))
                {
                    organizacaoUsuario = organizacoes?.FirstOrDefault(x => x.UsuarioPlataforma && x.UltimaAcessada);
                }
                else
                {
                    organizacaoUsuario = organizacoes?.FirstOrDefault(x => x.UsuarioPlataforma);
                }

                PessoaMySql pessoa = await _pessoaMySqlRepository.BuscarPorEmail(usuario.Login);

                if (!usuario.Ativo)
                {
                    return(usuarioLogado);
                }

                if (pessoa != null && !pessoa.GoobeeAdmin)
                {
                    if (organizacaoUsuario == null || !string.IsNullOrWhiteSpace(organizacaoUsuario.IdUsuario))
                    {
                        return(usuarioLogado);
                    }

                    if (organizacaoUsuario.Pessoa == null || organizacaoUsuario.Pessoa.Status == false)
                    {
                        return(usuarioLogado);
                    }

                    List <string> idsTimes = new List <string>();
                    foreach (var timePessoa in organizacaoUsuario.Pessoa.TimePessoas)
                    {
                        if (!timePessoa.Status)
                        {
                            continue;
                        }

                        if (timePessoa.IdOrganizacao == organizacaoUsuario.IdOrganizacao)
                        {
                            idsTimes.Add(timePessoa.IdTime);
                        }
                    }

                    usuarioLogado = new UsuarioLogadoMySqlViewModel()
                    {
                        DataCriacao   = organizacaoUsuario.Pessoa.DataCriacao,
                        Email         = organizacaoUsuario.Pessoa.Email,
                        Nome          = organizacaoUsuario.Pessoa.Nome,
                        Foto          = organizacaoUsuario.Pessoa.Foto,
                        Id            = organizacaoUsuario.IdUsuario,
                        IdPessoa      = organizacaoUsuario.IdPessoa,
                        IdOrganizacao = organizacaoUsuario.IdOrganizacao,
                        RoleEnum      = organizacaoUsuario.OrganizacaoUsuarioRole.Role,
                        IdsTimes      = idsTimes
                    };
                }
                else
                {
                    string idOrganizacao;

                    if (!string.IsNullOrWhiteSpace(pessoa.IdUltimaOrgAcessada))
                    {
                        idOrganizacao = pessoa.IdUltimaOrgAcessada;
                    }
                    else
                    {
                        idOrganizacao = _organizacaoMySqlRepository.Obter()?.Id;
                    }

                    usuarioLogado = new UsuarioLogadoMySqlViewModel()
                    {
                        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 <string>(0)
                    };
                }
            }

            // gerar o token
            if (usuarioLogado != null)
            {
                usuarioLogado.Token = CriaToken(usuarioLogado);
            }

            return(usuarioLogado);
        }