private void ObterOferta(int solucaoEducacionalId)
        {
            var manterSolucaoEducacional = new ManterOferta();

            var listaSolucaoEducacional = manterSolucaoEducacional.ObterOfertaPorSolucaoEducacional(new classes.SolucaoEducacional {
                ID = solucaoEducacionalId
            }).ToList();

            listaSolucaoEducacional.Insert(0, new classes.Oferta {
                Nome = "::Selecione::"
            });

            ddlOferta.DataSource     = listaSolucaoEducacional;
            ddlOferta.DataValueField = "ID";
            ddlOferta.DataTextField  = "Nome";
            ddlOferta.DataBind();

            // Na troca de solução educacional caso tenha itens no combo de turma zera a sua listagem
            if (ddlTurma.Items.Count > 0)
            {
                IList <classes.Turma> ListaTurma = new List <classes.Turma>();
                ListaTurma.Insert(0, new classes.Turma {
                    Nome = "::Selecione::"
                });

                ddlTurma.DataSource     = ListaTurma;
                ddlTurma.DataValueField = "ID";
                ddlTurma.DataTextField  = "Nome";
                ddlTurma.DataBind();
            }
        }
        private static bool VerificarDisponibilidadeOfertasPorPermissoes(Usuario usuario, int solucaoId,
                                                                         ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            var manterOferta = new ManterOferta();

            //var ofertas = manterOferta.ObterOfertaPorSolucaoEducacional(solucaoId).Where(
            //    x =>
            //        ((x.DataFim.HasValue && x.DataFim.Value.Date >= DateTime.Today) || (!x.DataFim.HasValue)) &&
            //        (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) &&
            //        (x.TipoOferta == enumTipoOferta.Continua ||
            //         (x.DataFimInscricoes.HasValue && x.DataFimInscricoes.Value.Date >= DateTime.Today)) &&
            //        // Seria sábio utilizar o método PossuiTurmasDisponiveis() da Oferta.cs, se o NHibernte não pirasse.
            //        x.ListaTurma.Any(t => t.Status != enumStatusTurma.Cancelada && t.InAberta))
            //    .ToList()
            //    // Somente usuários que possuem permissão de inscrição.
            //    .Where(x => x.UsuarioPossuiPermissao(usuario))
            //    .OrderBy(x => x.DataInicio)
            //    .ToList();

            var ofertas = manterOferta.ObterOfertaPorSolucaoEducacional(solucaoId).Where(
                x =>
                (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) &&
                (x.TipoOferta == enumTipoOferta.Continua ||
                 (x.DataFimInscricoes.HasValue && x.DataFimInscricoes.Value.Date >= DateTime.Today)) &&
                // Seria sábio utilizar o método PossuiTurmasDisponiveis() da Oferta.cs, se o NHibernte não pirasse.
                x.ListaTurma.Any(t => (!t.Status.HasValue || t.Status != enumStatusTurma.Cancelada) && t.InAberta))
                          .ToList()
                          // Somente usuários que possuem permissão de inscrição.
                          .Where(x => x.UsuarioPossuiPermissao(usuario))
                          .OrderBy(x => x.DataInicioInscricoes)
                          .ToList();

            foreach (var oferta in ofertas)
            {
                VerificarDisponibilidadeOferta(usuario, oferta, ref retorno);
            }

            if (retorno.IdOferta.HasValue || retorno.OfertasDisponiveis.Any())
            {
                return(true);
            }

            return(false);
        }