public void vinculaMatriculaOferta(MatriculaOferta matriculaOferta)
        {
            matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(matriculaOferta.ID);

            // VERIFICA SE MATRICULA OFERTA PERTENCE A ALGUM ITEM TRILHA
            if (!matriculaOferta.ListaItemTrilhaParticipacao.Any())
            {
                //BUSCA A LISTA DE TURMAS DA MESMA OFERTA CONTINUA
                var turmasOfertaID = new ManterTurma().ObterTodosIQueryable()
                                     .Where(x => x.Oferta.ID == matriculaOferta.Oferta.ID)
                                     .Select(x => x.ID).ToList();

                //BUSCA A LISTA DE MATRICULAS OFERTA DO USUARIO POR TURMA
                var matriculasOfertaID = new ManterMatriculaTurma().ObterTodosIQueryable()
                                         .Where(x => turmasOfertaID.Contains(x.Turma.ID) && matriculaOferta.Usuario.ID == x.MatriculaOferta.Usuario.ID)
                                         .Select(y => y.MatriculaOferta.ID)
                                         .ToList();

                var itemTrilhaParticipacaoUsuario = new ManterItemTrilhaParticipacao().ObterTodosIQueryable()
                                                    .FirstOrDefault(x => matriculasOfertaID.Contains(x.MatriculaOferta.ID) && x.Autorizado == false);

                if (itemTrilhaParticipacaoUsuario != null)
                {
                    itemTrilhaParticipacaoUsuario.MatriculaOferta = matriculaOferta;
                    Salvar(itemTrilhaParticipacaoUsuario);
                }
            }
        }
示例#2
0
        private static void PreencherMatriculaTurma(List <MatriculaOferta> result)
        {
            // Pegar os dados das matrículas turmas vindos de apenas uma consulta. Muito mais performático
            // do que executar várias consultas seguidas.

            var matriculasIds = result.Select(x => x.ID).Distinct().ToList();

            var matriculasTurmas = new ManterMatriculaTurma().ObterTodosIQueryable().Select(x => new MatriculaTurma
            {
                ID              = x.ID,
                DataTermino     = x.DataTermino,
                MediaFinal      = x.MediaFinal,
                MatriculaOferta = new MatriculaOferta
                {
                    ID = x.MatriculaOferta.ID
                },
                Turma = new Turma
                {
                    ID   = x.Turma.ID,
                    Nome = x.Turma.Nome
                }
            })
                                   .Where(x => matriculasIds.Contains(x.MatriculaOferta.ID)).ToList();

            var turmasIds = matriculasTurmas.Select(x => x.Turma.ID).Distinct().ToList();

            var avaliacoes = new ManterAvaliacao().ObterTodasIQueryable()
                             .Select(x => new Avaliacao
            {
                ID    = x.ID,
                Turma = new Turma
                {
                    ID = x.Turma.ID
                }
            })
                             .Where(x => turmasIds.Contains(x.Turma.ID));

            // Atualizar avaliações.
            foreach (var matriculaTurma in matriculasTurmas)
            {
                matriculaTurma.Turma.Avaliacoes = avaliacoes.Where(x => x.Turma.ID == matriculaTurma.Turma.ID).ToList();
            }

            // Atualizar matrículas turmas direto nas matrículas ofertas.
            foreach (var matricula in result)
            {
                matricula.MatriculaTurma =
                    matriculasTurmas.Where(x => x.MatriculaOferta.ID == matricula.ID).ToList();
            }
        }