/// <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)); } }
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); }
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; } } }