/// <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));
            }
        }
예제 #2
0
        public List <MatriculaTurma> ObterMatriculasComEventos(List <DTOEvento> presencas)
        {
            var matriculas      = ObterMatriculasTurmaCredenciamento().ToList();
            var matriculasTurma = new List <MatriculaTurma>();

            foreach (var matricula in matriculas)
            {
                var oferta = new ManterOferta().ObterOfertaPorID(matricula.MatriculaOferta.Oferta.ID);

                // Filtrando matriculas que contem algum dos eventos vinculado
                var matriculasFiltradas = matriculas.Where(x => !x.MatriculaOferta.IsAprovado() && !x.MatriculaOferta.IsReprovado() &&
                                                           presencas.Any(evento => evento.ID == oferta.SolucaoEducacional.IDEvento && evento.UsuarioCPF == matricula.MatriculaOferta.Usuario.CPF)).ToList();

                matriculasTurma.AddRange(matriculasFiltradas);
            }

            return(matriculasTurma);
        }
예제 #3
0
        private static void PreencherOfertas(List <MatriculaOferta> result)
        {
            var ofertasIds = result.Select(x => x.Oferta.ID).Distinct().ToList();

            // Pegar os dados das ofertas vindos de apenas uma consulta. Muito mais performático
            // do que executar várias consultas seguidas.
            var ofertas = new ManterOferta().ObterTodasOfertas().Select(x => new Oferta
            {
                ID = x.ID,
                AlteraPeloGestorUC = x.AlteraPeloGestorUC,
                SolucaoEducacional = new SolucaoEducacional
                {
                    ID = x.SolucaoEducacional.ID
                },
                CertificadoTemplate = x.CertificadoTemplate != null
                ? new CertificadoTemplate
                {
                    ID = x.CertificadoTemplate.ID
                }
                : null
            })
                          .Where(x => ofertasIds.Contains(x.ID)).ToList();

            // Preencher dados das SEs.
            var idsSes = ofertas.Select(x => x.SolucaoEducacional.ID).Distinct().ToList();

            var solucoes = new ManterSolucaoEducacional().ObterTodosIQueryable()
                           .Select(x => new SolucaoEducacional
            {
                ID         = x.ID,
                Nome       = x.Nome,
                Ativo      = x.Ativo,
                Fornecedor = new Fornecedor
                {
                    ID = x.Fornecedor.ID
                },
                UFGestor = new Uf
                {
                    ID = x.UFGestor.ID
                }
            })
                           .Where(x => idsSes.Contains(x.ID));

            var turmas = new ManterTurma().ObterTodosIQueryable()
                         .Select(x => new Turma
            {
                ID     = x.ID,
                Nome   = x.Nome,
                Oferta = new Oferta
                {
                    ID = x.Oferta.ID
                }
            })
                         .Where(x => ofertasIds.Contains(x.Oferta.ID));

            foreach (var oferta in ofertas)
            {
                oferta.SolucaoEducacional = solucoes.FirstOrDefault(x => x.ID == oferta.SolucaoEducacional.ID);
                oferta.ListaTurma         = turmas.Where(x => x.Oferta.ID == oferta.ID).ToList();

                var matriculasOferta = result.Where(x => x.Oferta.ID == oferta.ID);

                foreach (var matricula in matriculasOferta)
                {
                    matricula.Oferta = oferta;
                }
            }
        }