public async Task <IEnumerable <PlanoAnualCompletoDto> > ObterPorUETurmaAnoEComponenteCurricular(string ueId, string turmaId, int anoLetivo, long componenteCurricularEolId) { var periodos = await ObterPeriodoEscolar(turmaId, anoLetivo); var dataAtual = DateTime.Now.Date; var listaPlanoAnual = repositorioPlanoAnual.ObterPlanoAnualCompletoPorAnoUEETurma(anoLetivo, ueId, turmaId, componenteCurricularEolId); var componentesCurricularesEol = repositorioComponenteCurricular.Listar(); if (listaPlanoAnual != null && listaPlanoAnual.Any()) { var objetivosAprendizagem = await consultasObjetivoAprendizagem.Listar(); foreach (var planoAnual in listaPlanoAnual) { var periodo = periodos.FirstOrDefault(c => c.Bimestre == planoAnual.Bimestre); if (periodo == null) { throw new NegocioException("Plano anual com data fora do período escolar. Contate o suporte."); } if (periodo.PeriodoFim.Local() >= dataAtual && periodo.PeriodoInicio.Local() <= dataAtual) { planoAnual.Obrigatorio = true; } if (planoAnual.IdsObjetivosAprendizagem == null) { continue; } foreach (var idObjetivo in planoAnual.IdsObjetivosAprendizagem) { var objetivo = objetivosAprendizagem.FirstOrDefault(c => c.Id == idObjetivo); if (objetivo != null) { var componenteCurricularEol = componentesCurricularesEol.FirstOrDefault(c => c.CodigoJurema == objetivo.IdComponenteCurricular); if (componenteCurricularEol != null) { objetivo.ComponenteCurricularEolId = componenteCurricularEol.CodigoEOL; } planoAnual.ObjetivosAprendizagem.Add(objetivo); } } } if (listaPlanoAnual.Count() != periodos.Count()) { var periodosFaltantes = periodos.Where(c => !listaPlanoAnual.Any(p => p.Bimestre == c.Bimestre)); var planosFaltantes = ObterNovoPlanoAnualCompleto(turmaId, anoLetivo, ueId, periodosFaltantes, dataAtual).ToList(); planosFaltantes.AddRange(listaPlanoAnual); listaPlanoAnual = planosFaltantes; } } else { listaPlanoAnual = ObterNovoPlanoAnualCompleto(turmaId, anoLetivo, ueId, periodos, dataAtual); } return(listaPlanoAnual.OrderBy(c => c.Bimestre)); }
private IEnumerable <ComponenteCurricularJurema> ObterComponentesCurriculares() { IEnumerable <ComponenteCurricularJurema> componentesCurriculares = repositorioComponenteCurricular.Listar(); if (componentesCurriculares == null) { throw new NegocioException("Não foi possível recuperar a lista de componentes curriculares."); } return(componentesCurriculares); }
public async Task <List <DisciplinaDto> > ObterComponentesCurricularesPorProfessorETurma(string codigoTurma, bool turmaPrograma) { List <DisciplinaDto> disciplinasDto; var usuarioLogado = await servicoUsuario.ObterUsuarioLogado(); var chaveCache = $"Disciplinas-{codigoTurma}-{usuarioLogado.PerfilAtual}"; var dataInicioNovoSGP = await mediator.Send(new ObterParametroSistemaPorTipoQuery(TipoParametroSistema.DataInicioSGP)); if (!usuarioLogado.EhProfessor()) { var disciplinasCacheString = await repositorioCache.ObterAsync(chaveCache); if (!string.IsNullOrWhiteSpace(disciplinasCacheString)) { return(JsonConvert.DeserializeObject <List <DisciplinaDto> >(disciplinasCacheString)); } } var turma = await repositorioTurma.ObterPorCodigo(codigoTurma); if (turma == null) { throw new NegocioException("Não foi possível encontrar a turma"); } if (usuarioLogado.EhProfessorCj()) { var disciplinas = await ObterDisciplinasPerfilCJ(codigoTurma, usuarioLogado.Login); disciplinasDto = MapearParaDto(disciplinas, turmaPrograma, turma.EnsinoEspecial)?.OrderBy(c => c.Nome)?.ToList(); } else { var componentesCurriculares = await servicoEOL.ObterComponentesCurricularesPorCodigoTurmaLoginEPerfil(codigoTurma, usuarioLogado.Login, usuarioLogado.PerfilAtual); disciplinasDto = (await repositorioComponenteCurricular.ObterDisciplinasPorIds( componentesCurriculares? .Select(a => a.TerritorioSaber ? (a.CodigoComponenteTerritorioSaber == 0 ? a.Codigo : a.CodigoComponenteTerritorioSaber) : a.Codigo).ToArray()))?.OrderBy(c => c.Nome)?.ToList(); var componentesCurricularesJurema = await repositorioCache.Obter("ComponentesJurema", () => Task.FromResult(repositorioComponenteCurricularJurema.Listar())); if (componentesCurricularesJurema == null) { throw new NegocioException("Não foi possível recuperar a lista de componentes curriculares."); } disciplinasDto.ForEach(d => { var componenteEOL = componentesCurriculares.FirstOrDefault(a => (a.TerritorioSaber && a.CodigoComponenteTerritorioSaber > 0) ? a.CodigoComponenteTerritorioSaber == d.CodigoComponenteCurricular : a.Codigo == d.CodigoComponenteCurricular); d.PossuiObjetivos = turma.AnoLetivo < Convert.ToInt32(dataInicioNovoSGP) ? false : componenteEOL.PossuiObjetivosDeAprendizagem(componentesCurricularesJurema, turmaPrograma, turma.ModalidadeCodigo, turma.Ano); d.CodigoComponenteCurricular = componenteEOL.Codigo; d.Regencia = componenteEOL.Regencia; if (d.TerritorioSaber) { d.Nome = componenteEOL.Descricao; } d.ObjetivosAprendizagemOpcionais = componenteEOL.PossuiObjetivosDeAprendizagemOpcionais(componentesCurricularesJurema, turma.EnsinoEspecial); }); if (!usuarioLogado.EhProfessor()) { await repositorioCache.SalvarAsync(chaveCache, JsonConvert.SerializeObject(disciplinasDto)); } } return(disciplinasDto); }