public virtual void AdicionarPerfil(Perfil perfil)
        {
            bool perfilEstaNaLista = ListaPermissao.Any(x => x.Perfil != null && x.Perfil.ID == perfil.ID && x.NotificacaoEnvio.ID == this.ID);

            if (!perfilEstaNaLista)
            {
                NotificacaoEnvioPermissao notificacaoEnvioPermissao = new NotificacaoEnvioPermissao()
                {
                    Perfil = perfil, NotificacaoEnvio = this
                };
                this.ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        //public virtual void AdicionarUfs(Uf uf)
        //{
        //    AdicionarUfs(uf, 0);
        //}

        public virtual void AdicionarUfs(Uf uf, Usuario usuario)
        {
            bool ufEstaNaLista = ListaPermissao.Any(x => x.Uf != null && x.Uf.ID == uf.ID && x.NotificacaoEnvio.ID == this.ID);

            if (!ufEstaNaLista)
            {
                NotificacaoEnvioPermissao notificacaoEnvioPermissao = new NotificacaoEnvioPermissao()
                {
                    Uf = uf, NotificacaoEnvio = this
                };
                notificacaoEnvioPermissao.Auditoria.UsuarioAuditoria = usuario.CPF;
                this.ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void AdicionarNivelOcupacional(NivelOcupacional nivel)
        {
            //Adicionar caso não esteja na ListaPermissao
            bool nivelOcupacionalEstaNaLista = ListaPermissao.Any(x => x.NivelOcupacional != null && x.NivelOcupacional.ID == nivel.ID && x.NotificacaoEnvio.ID == this.ID);

            if (!nivelOcupacionalEstaNaLista)
            {
                NotificacaoEnvioPermissao notificacaoEnvioPermissao = new NotificacaoEnvioPermissao()
                {
                    NivelOcupacional = nivel, NotificacaoEnvio = this
                };
                this.ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void AdicionarStatus(IEnumerable <StatusMatricula> listaStatusMatricula, Usuario usuario)
        {
            foreach (var status in listaStatusMatricula)
            {
                var notificacaoEnvioPermissao = new NotificacaoEnvioPermissao
                {
                    Status           = status,
                    NotificacaoEnvio = this,
                    Auditoria        = { UsuarioAuditoria = usuario.CPF }
                };

                ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void AdicionarPermissao(NotificacaoEnvioPermissao permissao)
        {
            bool ufEstaNaLista = ListaPermissao.Any(x => x.Uf != null && x.Perfil.ID == permissao.ID && x.NotificacaoEnvio.ID == this.ID);

            if (!ufEstaNaLista)
            {
                //TODO -> Retestar este ponto
                NotificacaoEnvioPermissao notificacaoEnvioPermissao = new NotificacaoEnvioPermissao()
                {
                    Perfil = permissao.Perfil, NotificacaoEnvio = this
                };
                this.ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void AdicionarUsuario(Usuario user, Usuario usuario)
        {
            var usuarioEstaNaLista = ListaPermissao.Any(x => x.Usuario != null && x.Usuario.ID == user.ID);

            if (!usuarioEstaNaLista)
            {
                //TODO -> Retestar este ponto
                var notificacaoEnvioPermissao = new NotificacaoEnvioPermissao
                {
                    Usuario          = user,
                    NotificacaoEnvio = this,
                    Auditoria        = { UsuarioAuditoria = usuario.CPF }
                };

                ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void AdicionarTurma(Turma tur, Usuario usuario)
        {
            var turmaEstaNaLista = ListaPermissao.Any(x => x.Turma != null && x.Turma.ID == tur.ID && x.NotificacaoEnvio.ID == this.ID);

            if (!turmaEstaNaLista)
            {
                //TODO -> Retestar este ponto
                var notificacaoEnvioPermissao = new NotificacaoEnvioPermissao
                {
                    Turma            = tur,
                    NotificacaoEnvio = this,
                    Auditoria        = { UsuarioAuditoria = usuario.CPF }
                };

                ListaPermissao.Add(notificacaoEnvioPermissao);
            }
        }
        public virtual void RemoverPermissao(NotificacaoEnvioPermissao permissao)
        {
            //bool exists = this.ListaPermissao.Where(x => x.ID != permissao.ID).Count() == 0;
            //if (exists)
            //{
            //    var programaPermissaoASerExcluido = ListaPermissao.FirstOrDefault(x => x.ID != null && x.ID == permissao.ID);
            //    this.ListaPermissao.Remove(programaPermissaoASerExcluido);
            //}

            bool perfilEstaNaLista = ListaPermissao.Any(x => x.Perfil != null && x.Perfil.ID == permissao.ID && x.NotificacaoEnvio.ID == this.ID);

            if (perfilEstaNaLista)
            {
                var programaPermissaoASerExcluido = ListaPermissao.FirstOrDefault(x => x.Perfil != null &&
                                                                                  x.Perfil.ID == permissao.ID && x.NotificacaoEnvio.ID == this.ID);
                this.ListaPermissao.Remove(programaPermissaoASerExcluido);
            }
        }