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);
                }
            }
        }
Example #2
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;
                }
            }
        }