예제 #1
0
        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);
        }
예제 #3
0
        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);
        }