Ejemplo n.º 1
0
        private void ValidarMetaInstitucional(int pUsuario, int pSolucaoEducacional,
                                              List <int> pListaIdMetaInstitucionalAssociada,
                                              AuthenticationRequest autenticacao)
        {
            try
            {
                MetaInstitucional mi = null;
                if (pListaIdMetaInstitucionalAssociada != null && pListaIdMetaInstitucionalAssociada.Count > 0)
                {
                    foreach (int IdMetaIndividualAssociada in pListaIdMetaInstitucionalAssociada)
                    {
                        mi = new BMMetaInstitucional().ObterPorID(IdMetaIndividualAssociada);


                        if (!mi.ListaItensMetaInstitucional.Any(x => x.Usuario.ID == pUsuario && x.SolucaoEducacional.ID == pSolucaoEducacional))
                        {
                            mi.ListaItensMetaInstitucional.Add(new ItemMetaInstitucional()
                            {
                                Auditoria          = new Auditoria(autenticacao.Login),
                                MetaInstitucional  = new BMMetaInstitucional().ObterPorID(mi.ID),
                                SolucaoEducacional = new BMSolucaoEducacional().ObterPorId(pSolucaoEducacional),
                                Usuario            = new BMUsuario().ObterPorId(mi.ID),
                            });

                            using (BMMetaInstitucional miBM = new BMMetaInstitucional())
                                miBM.Salvar(mi);
                        }
                    }

                    SolucaoEducacional se = null;
                    using (BMSolucaoEducacional seBM = new BMSolucaoEducacional())
                        se = seBM.ObterPorId(pSolucaoEducacional);

                    Usuario user = null;
                    using (BMUsuario userBM = new BMUsuario())
                        user = userBM.ObterPorId(pUsuario);

                    foreach (var tagSe in se.ListaTags)
                    {
                        UsuarioTag ut = user.ListaTag.FirstOrDefault(x => x.Tag.ID == tagSe.ID);
                        if (ut == null)
                        {
                            user.ListaTag.Add(new UsuarioTag()
                            {
                                Usuario    = new BMUsuario().ObterPorId(pUsuario),
                                Auditoria  = new Auditoria(autenticacao.Login),
                                Tag        = new BMTag().ObterPorID(tagSe.Tag.ID),
                                Adicionado = false
                            });
                        }

                        using (BMUsuario userBM = new BMUsuario())
                            userBM.Salvar(user);
                    }
                }
            }
            catch
            {
            }
        }
Ejemplo n.º 2
0
        public void AtualizarPermissoesSolucaoVinculada(SolucaoEducacional solucao)
        {
            IList <OfertaPermissao> ofertaPermissao = new List <OfertaPermissao>();

            foreach (var item in solucao.ListaPermissao)
            {
                ofertaPermissao.Add(new OfertaPermissao()
                {
                    NivelOcupacional         = item.NivelOcupacional,
                    Perfil                   = item.Perfil,
                    QuantidadeVagasPorEstado = item.QuantidadeVagasPorEstado,
                    Uf = item.Uf
                });
            }

            foreach (var oferta in solucao.ListaOferta)
            {
                foreach (var permissao in ofertaPermissao)
                {
                    permissao.Oferta = oferta;
                }

                oferta.ListaPermissao = ofertaPermissao;

                try
                {
                    bmOferta.Salvar(oferta);
                }
                catch
                {
                    continue;
                }
            }
        }
Ejemplo n.º 3
0
        public override bool Equals(object obj)
        {
            var objeto = obj as SolucaoEducacionalAreaTematica;

            return(objeto == null ? false : SolucaoEducacional.Equals(objeto.SolucaoEducacional) &&
                   AreaTematica.Equals(objeto.AreaTematica));
        }
Ejemplo n.º 4
0
        public IList <SolucaoEducacional> BuscarporNome(SolucaoEducacional pSolucaoEducacional)
        {
            // return repositorio.GetByProperty("Nome", pSolucaoEducacional.Nome);
            var query = repositorio.session.Query <SolucaoEducacional>();

            return(query.Where(x => x.ID == pSolucaoEducacional.ID).ToList <SolucaoEducacional>());
        }
Ejemplo n.º 5
0
        public List <DTOSolucaoEducacional> ConsultarSolucaoEducacionalPorFornecedor(string idChaveExterna, AuthenticationProviderRequest autenticacao)
        {
            solucaoEducacionalBM = new BMSolucaoEducacional();

            SolucaoEducacional solucaoFiltro = new SolucaoEducacional();

            solucaoFiltro.Fornecedor     = new BMFornecedor().ObterPorLogin(autenticacao.Login);
            solucaoFiltro.IDChaveExterna = idChaveExterna;

            var listaSolucao = solucaoEducacionalBM.ObterPorFiltro(solucaoFiltro);

            List <DTOSolucaoEducacional> listaRetorno = new List <DTOSolucaoEducacional>();

            foreach (var registro in listaSolucao)
            {
                DTOSolucaoEducacional dtoRegistro = new DTOSolucaoEducacional();
                dtoRegistro.Apresentacao = registro.Apresentacao;
                dtoRegistro.Ativo        = registro.Ativo;
                dtoRegistro.Autor        = registro.Autor;
                dtoRegistro.Ementa       = registro.Ementa;
                dtoRegistro.ID           = registro.ID;
                dtoRegistro.IdCategoriaSolucaoEducacional = registro.CategoriaConteudo.ID;
                dtoRegistro.IDChaveExterna   = registro.IDChaveExterna;
                dtoRegistro.IdFormaAquisicao = registro.FormaAquisicao.ID;
                dtoRegistro.Nome             = registro.Nome;
                dtoRegistro.Objetivo         = registro.Objetivo;
                dtoRegistro.TemMaterial      = registro.TemMaterial;


                listaRetorno.Add(dtoRegistro);
            }
            return(listaRetorno);
        }
Ejemplo n.º 6
0
        private void ValidarSolucaoEducacionalInformado(SolucaoEducacional pSolucaoEducacional)
        {
            ValidarInstancia(pSolucaoEducacional);

            //Nome da Solução Educacional
            if (string.IsNullOrWhiteSpace(pSolucaoEducacional.Nome))
            {
                throw new AcademicoException("Nome. Campo Obrigatório");
            }

            //Fornecedor
            if ((pSolucaoEducacional.Fornecedor) == null || (pSolucaoEducacional != null && pSolucaoEducacional.Fornecedor.ID <= 0))
            {
                throw new AcademicoException("Fornecedor. Campo Obrigatório");
            }

            //Forma de Aquisição
            if ((pSolucaoEducacional.FormaAquisicao) == null || (pSolucaoEducacional != null && pSolucaoEducacional.FormaAquisicao.ID <= 0))
            {
                throw new AcademicoException("Forma de Aquisição. Campo Obrigatório");
            }

            //Categoria
            //if ((pSolucaoEducacional.CategoriaConteudo) == null || (pSolucaoEducacional != null && pSolucaoEducacional.CategoriaConteudo.ID <= 0)) throw new AcademicoException("Categoria. Campo Obrigatório");

            VerificarConsistenciaUk(pSolucaoEducacional);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Alterar (faz update) nas informações de uma solução educacional.
        /// </summary>
        /// <param name="pSolucaoEducacional">Informações de uma solução educacional</param>
        /// <param name="urlBase">URL para criação do NODE ID</param>
        public void AlterarSolucaoEducacional(SolucaoEducacional pSolucaoEducacional, string urlBase)
        {
            var manterOferta = new ManterOferta();

            try
            {
                base.PreencherInformacoesDeAuditoria(pSolucaoEducacional);

                bmSolucaoEducacional.Salvar(pSolucaoEducacional);
                AtualizarNodeIdDrupal(pSolucaoEducacional);
            }
            catch (AlertException ex)
            {
                throw ex;
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
            finally
            {
                Task.Run(() => manterOferta.AtualizarPermissoesSolucaoVinculada(pSolucaoEducacional));
            }
        }
Ejemplo n.º 8
0
        public override bool Equals(object obj)
        {
            SolucaoEducacionalTags objeto = obj as SolucaoEducacionalTags;

            return(objeto == null ? false : SolucaoEducacional.Equals(objeto.SolucaoEducacional) &&
                   Tag.Equals(objeto.Tag));
        }
Ejemplo n.º 9
0
        public int?SalvaNodeDrupalRest(SolucaoEducacional registro, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null)
        {
            var postParameters = DrupalUtil.InitPostParameters(registro.ID, registro.Nome, registro.Apresentacao,
                                                               "solucao", registro.Ativo);

            /*1 - Cursos Online; 2 - Cursos Presenciais; 3 - Cursos Mistos; 4 - Trilhas; 5 - Programas*/
            int tipoDeSolucao;

            switch (registro.FormaAquisicao.ID)
            {
            // Curso presencial.
            case 22:
                tipoDeSolucao = 2;
                break;

            // Curso misto.
            case 40:
                tipoDeSolucao = 3;
                break;

            // Jogo online, Jogo presencial e Jogo misto.
            case 43:
            case 44:
            case 45:
            case 113:
                tipoDeSolucao = 6;
                break;

            default:
                tipoDeSolucao = 1;
                break;
            }

            postParameters.Add("data[field_tipo_de_solucao]", tipoDeSolucao.ToString());

            DrupalUtil.PermissoesAreaTematica(registro.ListaAreasTematicas.Select(x => x.AreaTematica.ID).ToList(),
                                              ref postParameters);

            DrupalUtil.PermissoesUf(registro.ListaPermissao.Where(p => p.Uf != null).Select(x => x.Uf.ID).ToList(),
                                    ref postParameters);

            DrupalUtil.PermissoesPerfil(
                registro.ListaPermissao.Where(p => p.Perfil != null).Select(x => x.Perfil.ID).ToList(),
                ref postParameters);

            DrupalUtil.PermissoesNivelOcupacional(
                registro.ListaPermissao.Where(p => p.NivelOcupacional != null)
                .Select(x => x.NivelOcupacional.ID)
                .ToList(), ref postParameters);

            try
            {
                return(DrupalUtil.SalvaNodeDrupalRest(postParameters, true, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado));
            }
            catch (Exception)
            {
                throw new AlertException("Erro na sincronização. Tente salvar novamente.");
            }
        }
        internal void PreencherComboSolucaoEducacional(SolucaoEducacional solucaoEducacional, bool desabilitaCombo = false)
        {
            this.ObterSolucoesEducacionaisDaCategoria(solucaoEducacional.CategoriaConteudo.ID);

            //Seta o valor na combo de Solucao Educacional
            WebFormHelper.SetarValorNaCombo(solucaoEducacional.ID.ToString(), this.ddlSolucao, true);
            this.ddlOferta.Items.Clear();
        }
 internal void PreencherComboCategoriaSolucaoEducacional(SolucaoEducacional solucaoEducacional)
 {
     this.PreencherCombos();
     if (ddlCategoria.SelectedIndex > 0)
     {
         WebFormHelper.SetarValorNaCombo(solucaoEducacional.CategoriaConteudo.ID.ToString(), this.ddlCategoria, true);
     }
 }
Ejemplo n.º 12
0
        public void Salvar(SolucaoEducacional pSolucaoEducacional, bool validar = true)
        {
            if (validar)
            {
                ValidarSolucaoEducacionalInformado(pSolucaoEducacional);
            }

            repositorio.Salvar(pSolucaoEducacional);
        }
        public override int GetHashCode()
        {
            int result = 17;

            result = 31 * result + ID;
            result = 31 * result + SolucaoEducacional.GetHashCode();
            result = 31 * result + ProdutoSebrae.GetHashCode();
            return(result);
        }
Ejemplo n.º 14
0
        public override int GetHashCode()
        {
            int result = 17;

            result = 31 * result + ID;
            result = 31 * result + SolucaoEducacional.GetHashCode();
            result = 31 * result + Cargo.GetHashCode();
            return(result);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Verifica se a classe Solução Educacional possui dependências, ou seja, se possui registros filhos de entidades gerenciadas.
        /// </summary>
        /// <param name="pSolucaoEducacional">Objeto da Classe SolucaoEducacional</param>
        /// <observacoes>Este método normamente é codificado antes da exclusão de um objeto, pois por default, não são permitidas
        /// exclusões em cascata de entidades gerenciadas. (delete cascade )</observacoes>
        /// <returns>Retorna True, caso a classe Solução Educacional possua dependências, ou seja, registros filhos.
        /// Retorna False, caso a classe Solução Educacional não possua dependências, ou seja, não possua registros filhos. </returns>
        protected override bool ValidarDependencias(object pSolucaoEducacional)
        {
            SolucaoEducacional solucaoEducacional = (SolucaoEducacional)pSolucaoEducacional;

            return((solucaoEducacional.ListaItemTrilha != null && solucaoEducacional.ListaItemTrilha.Count > 0) ||
                   (solucaoEducacional.ListaOferta != null && solucaoEducacional.ListaOferta.Any()) ||
                   (solucaoEducacional.ListaProgramaSolucaoEducacional != null && solucaoEducacional.ListaProgramaSolucaoEducacional.Count > 0)
                   );
        }
Ejemplo n.º 16
0
        public void Excluir(SolucaoEducacional pSolucaoEducacional)
        {
            if (ValidarDependencias(pSolucaoEducacional))
            {
                throw new AcademicoException("Exclusão de registro negada. Existem Registros Dependentes desta Solução Educacional.");
            }

            repositorio.Excluir(pSolucaoEducacional);
        }
Ejemplo n.º 17
0
        public SolucaoEducacional ObterPorIDFornecedorEIdChaveExterna(string loginFornecedor, string idChaveExterna)
        {
            SolucaoEducacional solucaoEducacional = null;
            var query = repositorio.session.Query <SolucaoEducacional>();

            solucaoEducacional = query.FirstOrDefault(x => x.Fornecedor.Login == loginFornecedor &&
                                                      x.IDChaveExterna == idChaveExterna);

            return(solucaoEducacional);
        }
        private void ObterInformacoesDaOfertaPorSolucaoEducacional(int idSolucaoEducacional)
        {
            var solucaoEducacional = new SolucaoEducacional()
            {
                ID = idSolucaoEducacional
            };

            var listaOferta = new ManterOferta().ObterOfertaPorSolucaoEducacional(solucaoEducacional);

            WebFormHelper.PreencherLista(listaOferta, ddlOferta, false, true);
        }
Ejemplo n.º 19
0
        public IQueryable <SolucaoEducacional> ObterPorFiltro(SolucaoEducacional pSolucaoEducacional, int ufPermitida)
        {
            var query = repositorio.session.Query <SolucaoEducacional>();

            if (pSolucaoEducacional != null)
            {
                if (!string.IsNullOrWhiteSpace(pSolucaoEducacional.Nome))
                {
                    query = query.Where(x => x.Nome.Trim().ToUpper().Contains(pSolucaoEducacional.Nome.Trim().ToUpper()));
                }

                if (pSolucaoEducacional.FormaAquisicao != null)
                {
                    query = query.Where(x => x.FormaAquisicao.ID == pSolucaoEducacional.FormaAquisicao.ID);
                }

                if (pSolucaoEducacional.Fornecedor != null)
                {
                    query = query.Where(x => x.Fornecedor.ID == pSolucaoEducacional.Fornecedor.ID);
                }

                if (!string.IsNullOrWhiteSpace(pSolucaoEducacional.IDChaveExterna))
                {
                    query =
                        query.Where(
                            x =>
                            x.IDChaveExterna.Trim()
                            .ToUpper()
                            .Contains(pSolucaoEducacional.IDChaveExterna.Trim().ToUpper()));
                }
            }

            // Gestores só podem ver soluções educacionais do seu estado

            var bmUsuario = new BMUsuario();

            var usuario = bmUsuario.ObterUsuarioLogado();

            if (usuario.IsGestor())
            {
                var uf = usuario.UF;

                FiltrarPermissaoVisualizacao(ref query, uf.ID);
            }

            if (ufPermitida > 0)
            {
                query = query.Where(x => x.ListaPermissao.Any(l => l.Uf.ID == ufPermitida));
            }

            return(query);
        }
Ejemplo n.º 20
0
        public bool AlterouSolucaoEducacional(int idOferta, SolucaoEducacional novaSolucao)
        {
            var oferta = repositorio.session.Query <Oferta>().First(s => s.ID == idOferta);

            if (oferta.SolucaoEducacional == null)
            {
                return(novaSolucao != null);
            }
            else
            {
                return(novaSolucao == null || oferta.SolucaoEducacional.ID != novaSolucao.ID);
            }
        }
        private static bool UsuarioPossuiPermissaoSolucao(Usuario usuario, SolucaoEducacional solucao,
                                                          ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            // Verifica se o usuário não tiver acesso à Solução Educacional.
            if (solucao.UsuarioPossuiPermissaoMatricula(usuario))
            {
                return(false);
            }

            retorno.TextoDisponibilidade  = "Solução não disponível para seu perfil. Entre em contato no fale conosco.";
            retorno.CodigoDisponibilidade = (int)enumDisponibilidadeSolucaoEducacional.NaoPossuiDisponibilidade;

            return(true);
        }
Ejemplo n.º 22
0
        public IQueryable <Oferta> ObterOfertaPorSolucaoEducacional(SolucaoEducacional solucaoEducacional)
        {
            try
            {
                if (solucaoEducacional == null || solucaoEducacional.ID < 0)
                {
                    throw new AcademicoException("Informe a Solução Educacional");
                }

                return(bmOferta.ObterOfertaPorSolucaoEducacional(solucaoEducacional));
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 23
0
        public void VerificarConsistenciaUk(SolucaoEducacional pSolucaoEducacional)
        {
            if (string.IsNullOrWhiteSpace(pSolucaoEducacional.Nome))
            {
                throw new AcademicoException("Nome da Solução Educacional não pode ser vazio");
            }

            var usuarioLogado = new BMUsuario().ObterUsuarioLogado();

            if (pSolucaoEducacional.UFGestor == null || !usuarioLogado.IsGestor())
            {
                var solucoes =
                    ObterPorNome(pSolucaoEducacional.Nome)
                    .Where(
                        s =>
                        s.Fornecedor != null && pSolucaoEducacional.Fornecedor != null &&
                        s.Fornecedor.ID == pSolucaoEducacional.Fornecedor.ID &&
                        s.Ativo &&
                        pSolucaoEducacional.ID != s.ID);

                if (solucoes.Any())
                {
                    throw new AcademicoException("Nome da Solução Educacional já cadastrado para este fornecedor");
                }
            }
            else
            {
                var solucoes =
                    ObterPorNome(pSolucaoEducacional.Nome).AsEnumerable()
                    .Where(
                        s =>
                        s.Fornecedor.ID == pSolucaoEducacional.Fornecedor.ID &&
                        s.Fornecedor != null &&
                        pSolucaoEducacional.Fornecedor != null &&
                        s.UFGestor != null && !s.UFGestor.PermiteSesMesmoNome() &&
                        s.Ativo &&
                        pSolucaoEducacional.ID != s.ID).AsQueryable();

                FiltrarPermissaoVisualizacao(ref solucoes, usuarioLogado.ID);

                if (solucoes.Any())
                {
                    throw new AcademicoException("Nome da Solução Educacional já cadastrado para esta UF e este fornecedor");
                }
            }
        }
Ejemplo n.º 24
0
        public void AtualizarNodeIdDrupal(SolucaoEducacional solucao, BMConfiguracaoSistema bmConfiguracaoSistema = null, BMLogSincronia bmLogSincronia = null, Usuario usuarioLogado = null)
        {
            if (solucao.FormaAquisicao == null || !solucao.FormaAquisicao.EnviarPortal)
            {
                return;
            }

            var id = SalvaNodeDrupalRest(solucao, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado);

            if (!id.HasValue)
            {
                return;
            }

            solucao.IdNodePortal = id.Value;
            bmSolucaoEducacional.Salvar(solucao, false);
        }
        public IList <Oferta> RecuperarOfertasValidas(SolucaoEducacional solucaoEducacional, List <int> permissoesOfertas)
        {
            var ofertas =
                solucaoEducacional.ListaOferta.Where(
                    x => (x.DataInicioInscricoes.HasValue &&
                          x.DataInicioInscricoes.Value.Date <= DateTime.Today) &&
                    x.DataFimInscricoes.HasValue &&
                    x.DataFimInscricoes.Value >= DateTime.Today &&
                    (x.ListaTurma.Any(
                         f => (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) && f.InAberta)));

            if (permissoesOfertas != null && permissoesOfertas.Any())
            {
                ofertas = ofertas.Where(x => permissoesOfertas.Contains(x.ID));
            }


            return(ofertas.OrderBy(x => x.DataInicioInscricoes).ToList());
        }
Ejemplo n.º 26
0
        public int?ObterProximoCodigoSequencial(SolucaoEducacional solucao)
        {
            if (solucao == null)
            {
                return(null);
            }

            var max = repositorio.session.Query <Oferta>()
                      .Where(x => x.SolucaoEducacional.ID == solucao.ID)
                      .Max(x => x.Sequencia);

            if (max.HasValue)
            {
                return(max.Value + 1);
            }
            else
            {
                return(1);
            }
        }
Ejemplo n.º 27
0
        public IList <SolucaoEducacional> ObterPorFiltroPesquisa(SolucaoEducacional pSolucaoEducacional, bool?ativo, List <int> usuarioPermissoes)
        {
            var query = repositorio.session.Query <SolucaoEducacional>();

            if (pSolucaoEducacional == null)
            {
                return(query.ToList());
            }

            if (!string.IsNullOrWhiteSpace(pSolucaoEducacional.Nome))
            {
                query = query.Where(x => x.Nome.Trim().ToUpper().Contains(pSolucaoEducacional.Nome.Trim().ToUpper()));
            }

            if (pSolucaoEducacional.FormaAquisicao != null)
            {
                query = query.Where(x => x.FormaAquisicao.ID == pSolucaoEducacional.FormaAquisicao.ID);
            }

            if (pSolucaoEducacional.Fornecedor != null)
            {
                query = query.Where(x => x.Fornecedor.ID == pSolucaoEducacional.Fornecedor.ID);
            }

            if (!string.IsNullOrWhiteSpace(pSolucaoEducacional.IDChaveExterna))
            {
                query = query.Where(x => x.IDChaveExterna.Trim().ToUpper().Contains(pSolucaoEducacional.IDChaveExterna.Trim().ToUpper()));
            }

            if (ativo.HasValue)
            {
                query = query.Where(f => f.Ativo == ativo.Value);
            }

            if (usuarioPermissoes.Any())
            {
                query = query.Where(f => usuarioPermissoes.Contains(f.ID));
            }

            return(query.ToList());
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Cadastra (inclui) uma solução educacional.
        /// </summary>
        /// <param name="pSolucaoEducacional">Informações de uma solução educacional</param>
        /// <param name="url_base">URL para criação do NODE ID</param>
        public void IncluirSolucaoEducacional(SolucaoEducacional pSolucaoEducacional, string url_base)
        {
            try
            {
                base.PreencherInformacoesDeAuditoria(pSolucaoEducacional);
                this.bmSolucaoEducacional.Salvar(pSolucaoEducacional);

                AtualizarNodeIdDrupal(pSolucaoEducacional);
            }
            catch (AlertException ex)
            {
                throw ex;
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Ejemplo n.º 29
0
 private static SolucaoEducacional PreencherObjetoSolucaoEducacional(DTOSolucaoEducacional pDTOSolucaoEducacional, AuthenticationProviderRequest pAutenticacao, SolucaoEducacional solucaoEducacional)
 {
     solucaoEducacional = new SolucaoEducacional()
     {
         Apresentacao      = pDTOSolucaoEducacional.Apresentacao,
         Autor             = pDTOSolucaoEducacional.Autor,
         CategoriaConteudo = pDTOSolucaoEducacional.IdCategoriaSolucaoEducacional > 0 ? (new BMCategoriaConteudo()).ObterPorID(2) : null,
         Ementa            = pDTOSolucaoEducacional.Ementa,
         FormaAquisicao    = (new BMFormaAquisicao()).ObterPorID(pDTOSolucaoEducacional.IdFormaAquisicao),
         Fornecedor        = (new BMFornecedor()).ObterPorFiltro(new Fornecedor()
         {
             Login = pAutenticacao.Login
         }).FirstOrDefault(),
         Nome           = pDTOSolucaoEducacional.Nome,
         Objetivo       = pDTOSolucaoEducacional.Objetivo,
         Ativo          = pDTOSolucaoEducacional.Ativo,
         TemMaterial    = pDTOSolucaoEducacional.TemMaterial,
         IDChaveExterna = pDTOSolucaoEducacional.IDChaveExterna,
         Auditoria      = new Auditoria(pAutenticacao.Login),
     };
     return(solucaoEducacional);
 }
        public DTODisponibilidadeSolucaoEducacionalPorUsuarioT ConsultarDisponibilidadeMatriculaPorUsuario(
            int pIdUsuario, int?pagina)
        {
            var retorno = new DTODisponibilidadeSolucaoEducacionalPorUsuarioT();

            var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario);

            new ManterMatriculaOferta().ObterPorUsuario(pIdUsuario);

            var listaPermissaoSolucaoEducacional = new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, 0);
            var idsSolucoesPermissoes            = listaPermissaoSolucaoEducacional.Select(f => f.SolucaoEducacional.ID).ToList();

            var filtro = new SolucaoEducacional();

            var recuperarListaSolucaoEducacional = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(filtro, true,
                                                                                                         idsSolucoesPermissoes);

            const int skip = 5;

            var paginaAtual = (pagina.HasValue && pagina.Value > 0) ? (pagina.Value - 1) : 0;

            retorno.PaginaAtual  = (paginaAtual + 1);
            retorno.QtdeSolucoes = recuperarListaSolucaoEducacional.Count();
            retorno.QtdePaginas  = Convert.ToInt32((retorno.QtdeSolucoes / skip));
            if ((retorno.QtdeSolucoes % skip) > 0)
            {
                retorno.QtdePaginas++;
            }

            foreach (var item in recuperarListaSolucaoEducacional.Skip((paginaAtual * skip)).Take(skip).ToList())
            {
                retorno.DTODisponibilidadeSolucaoEducacional.Add(
                    ConsultarDisponibilidadeMatriculaSolucaoEducacional(pIdUsuario, item.ID));
            }

            return(retorno);
        }