private static void PreencherRetornoDadosCurso(Usuario usuario, Oferta oferta,
                                                       enumDisponibilidadeSolucaoEducacional disponibilidade,
                                                       ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            retorno.TextoDisponibilidade     = string.Empty;
            retorno.TextoInformacaoAdicional = oferta.InformacaoAdicional;

            if (disponibilidade == enumDisponibilidadeSolucaoEducacional.ConfirmarMatricula)
            {
                retorno.TextoDisponibilidade = "Você precisa confirmar a inscrição na Solução Educacional";
            }

            if (disponibilidade == enumDisponibilidadeSolucaoEducacional.FilaEspera)
            {
                retorno.TextoDisponibilidade =
                    "No momento não há vagas disponíveis para essa Solução Educacional. Você será inscrito na fila de espera.";
            }

            retorno.IdOferta          = oferta.ID;
            retorno.IdTipoOferta      = (int)oferta.TipoOferta;
            retorno.PermiteFilaEspera = oferta.FiladeEspera;
            retorno.Prazo             = oferta.DiasPrazo.ToString();
            retorno.CargaHoraria      = oferta.CargaHoraria.ToString();
            //retorno.DataInicioOferta = oferta.DataInicio;
            //retorno.DataFimOferta = oferta.DataFim;

            retorno.DataInicioInscricoes =
                retorno.IdTipoOferta == 2 && oferta.SolucaoEducacional != null &&
                oferta.SolucaoEducacional.TeraOfertasContinuas
                    ? oferta.SolucaoEducacional.Inicio
                    : oferta.DataInicioInscricoes;

            retorno.DataFimInscricoes =
                retorno.IdTipoOferta == 2 && oferta.SolucaoEducacional != null &&
                oferta.SolucaoEducacional.TeraOfertasContinuas
                    ? oferta.SolucaoEducacional.Fim
                    : oferta.DataFimInscricoes;

            retorno.InscricaoOnline       = (oferta.InscricaoOnline ?? false);
            retorno.CodigoDisponibilidade = (int)disponibilidade;
            retorno.IdSolucaoEducacional  = oferta.SolucaoEducacional != null
                ? oferta.SolucaoEducacional.ID
                : 0;

            // Caso a oferta possua turmas disponíveis, retorna a oferta com todas as turmas disponíveis para matrícula.
            if (oferta.IsAbertaParaInscricoes() && oferta.PossuiTurmasDisponiveis())
            {
                DTOOferta dtoOferta = new DTOOferta(oferta);

                //Tranca as ofertas que precisam de pagamento.
                dtoOferta.RequerPagamento = VerificarTrancadoParaPagante(usuario, oferta);

                retorno.OfertasDisponiveis.Add(dtoOferta);
            }
        }
 public static bool VerificarTrancadoParaPagante(Usuario usuario, Oferta oferta,
                                                 enumDisponibilidadeSolucaoEducacional disponibilidade, ref DTODisponibilidadeSolucaoEducacional retorno)
 {
     if (disponibilidade == enumDisponibilidadeSolucaoEducacional.EfetuarMatricula)
     {
         if (oferta.ListaNiveisTrancados != null && oferta.ListaNiveisTrancados.Any(x => x.ID == usuario.NivelOcupacional.ID) && !VerificarTrancadoParaPagante(usuario))
         {
             retorno.TextoDisponibilidade  = "A oferta está trancada para pagamento, favor, efetuar o pagamento";
             retorno.CodigoDisponibilidade = (int)enumDisponibilidadeSolucaoEducacional.EfetuarPagamento;
             return(true);
         }
     }
     return(false);
 }