public A2UsuarioInterno BuscarUsuarioInternoPorEmail(string email)
        {
            A2UsuarioInterno usuario = new A2UsuarioInterno();

            try
            {
                List <string> includes = new List <string>();
                includes.Add("RelUsuarioInternoPerfil");
                includes.Add("RelUsuarioInternoProfissional");
                var usuarioPesquisado = _usuarioInternoRepositorio.Find(c => c.A2UsuarioInternoEmail == email, includes);
                if (usuarioPesquisado == null)
                {
                    usuario.Mensagens = new List <Mensagem>();
                    usuario.Mensagens.Add(Util.AdicionarMensagem(TipoMensagem.Atencao, Common.MensagensSistema.MsgsSistema.MsgUsuarioNaoExiste));
                    return(usuario);
                }
                else
                {
                    return(usuarioPesquisado);
                }
            }
            catch (Exception ex)
            {
                usuario           = new A2UsuarioInterno();
                usuario.Mensagens = new List <Mensagem>();
                usuario.Mensagens.Add(Util.AdicionarMensagem(TipoMensagem.Erro, ex.Message));
                return(usuario);
            }
        }
        private bool Autenticar(A1Usuario usuarioPaciente, A2UsuarioInterno usuarioInterno, Enumeradores.ModoAutenticacao modoAutenticacao)
        {
            Mensagem mensagem = new Mensagem();

            mensagem.TipoMensagem = TipoMensagem.Atencao;
            bool retorno = true;

            switch (modoAutenticacao)
            {
            case Enumeradores.ModoAutenticacao.CriarLogin:
                var usuarioExistente = _usuarioRepositorio.Find(c => c.A1UsuarioNumeroCpf == usuarioPaciente.A1UsuarioNumeroCpf);
                if (usuarioExistente != null)
                {
                    mensagem.DescricaoMensagem = Common.MensagensSistema.MsgsSistema.MsgUsuarioExistente;
                    usuarioPaciente.Mensagens.Add(mensagem);
                    retorno = false;
                }
                break;

            case Enumeradores.ModoAutenticacao.LogarInterno:
                List <string> includes = new List <string>();
                includes.Add("RelUsuarioInternoPerfil");
                includes.Add("RelUsuarioInternoProfissional");

                var usuarioInternoExistente = _usuarioInternoRepositorio.Find(c => c.A2UsuarioInternoEmail == usuarioInterno.A2UsuarioInternoEmail, includes);
                if (usuarioInternoExistente == null)
                {
                    mensagem.DescricaoMensagem = Common.MensagensSistema.MsgsSistema.MsgUsuarioInternoNaoExiste;
                    usuarioInterno.Mensagens.Add(mensagem);
                    retorno = false;
                }
                if (usuarioInternoExistente != null)
                {
                    if (usuarioInterno.A2UsuarioInternoSenha != usuarioInternoExistente.A2UsuarioInternoSenha)
                    {
                        mensagem.DescricaoMensagem = Common.MensagensSistema.MsgsSistema.MsgSenhaIncorreta;
                        usuarioInterno.Mensagens.Add(mensagem);
                        retorno = false;
                    }
                    else
                    {
                        usuarioInterno.RelUsuarioInternoPerfil       = usuarioInternoExistente.RelUsuarioInternoPerfil;
                        usuarioInterno.RelUsuarioInternoProfissional = usuarioInternoExistente.RelUsuarioInternoProfissional;

                        foreach (var item in usuarioInterno.RelUsuarioInternoPerfil)
                        {
                            item.A6Perfil = _perfilRepositorio.Find(c => c.A6PerfilId == item.A6PerfilId);
                        }
                        foreach (var item in usuarioInterno.RelUsuarioInternoProfissional)
                        {
                            item.A13ProfissionalCodigoCnsNavigation = _profissionalRepositorio.Find(c => c.A13ProfissionalCodigoCns == item.A13ProfissionalCodigoCns);
                        }
                    }
                }
                break;

            case Enumeradores.ModoAutenticacao.LogarPaciente:

                List <string> includesPaciente = new List <string>();
                includesPaciente.Add("RelUsuarioPerfil");
                var usuarioLogar = _usuarioRepositorio.Find(c => c.A1UsuarioNumeroCpf == usuarioPaciente.A1UsuarioNumeroCpf, includesPaciente);
                if (usuarioLogar == null)
                {
                    mensagem.DescricaoMensagem = Common.MensagensSistema.MsgsSistema.MsgUsuarioNaoExiste;
                    usuarioPaciente.Mensagens.Add(mensagem);
                    retorno = false;
                }

                if (usuarioLogar != null)
                {
                    if (usuarioPaciente.A1UsuarioSenha != usuarioLogar.A1UsuarioSenha)
                    {
                        mensagem.DescricaoMensagem = Common.MensagensSistema.MsgsSistema.MsgSenhaIncorreta;
                        usuarioPaciente.Mensagens.Add(mensagem);
                        retorno = false;
                    }
                    else
                    {
                        usuarioPaciente.RelUsuarioPerfil = usuarioLogar.RelUsuarioPerfil;

                        foreach (var item in usuarioPaciente.RelUsuarioPerfil)
                        {
                            item.A6Perfil = _perfilRepositorio.Find(c => c.A6PerfilId == item.A6PerfilId);
                        }
                    }
                }
                break;

            default:
                break;
            }

            return(retorno);
        }