public async Task <IEnumerable <DataAulasProfessorDto> > ObterDatasDeAulasPorCalendarioTurmaEDisciplina(int anoLetivo, string turma, string disciplina)
        {
            var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            var usuarioRF = usuarioLogado.EhProfessor() ? usuarioLogado.CodigoRf : string.Empty;

            return(repositorio.ObterDatasDeAulasPorAnoTurmaEDisciplina(anoLetivo, turma, disciplina, usuarioLogado.Id, usuarioRF, usuarioLogado.EhProfessorCj(), usuarioLogado.TemPerfilSupervisorOuDiretor())?
                   .Select(a => new DataAulasProfessorDto
            {
                Data = a.DataAula,
                IdAula = a.Id,
                AulaCJ = a.AulaCJ
            }));
        }
예제 #2
0
        private async Task <IEnumerable <DataAulasProfessorDto> > ObterAulasNosPeriodos(PeriodoEscolarListaDto periodosEscolares, int anoLetivo, string turmaCodigo, string disciplinaCodigo, Usuario usuarioLogado, string usuarioRF)
        {
            if (disciplinaCodigo.ToCharArray().Any(a => !char.IsDigit(a)))
            {
                throw new NegocioException("Código da disciplina inválido");
            }

            var disciplina = await consultasDisciplina.ObterDisciplina(Convert.ToInt64(disciplinaCodigo));

            if (disciplina == null)
            {
                throw new NegocioException("Disciplina não encontrada");
            }

            var aulasRetorno = new List <DataAulasProfessorDto>();

            periodosEscolares.Periodos.ForEach(p =>
            {
                var aulas = repositorio
                            .ObterDatasDeAulasPorAnoTurmaEDisciplina(p.Id, anoLetivo, turmaCodigo, disciplinaCodigo, disciplina.Regencia ? string.Empty : usuarioRF, usuarioLogado.EhProfessorCj(), usuarioLogado.EhProfessor() || usuarioLogado.EhProfessorCj());

                aulas.ToList().ForEach(aula =>
                {
                    if (!disciplina.Regencia)
                    {
                        aulasRetorno.Add(MapearParaDto(aula, p.Bimestre));
                    }

                    var rfsOrnedadosPorDataCriacaoAula = aulas.OrderBy(a => a.CriadoEm)
                                                         .Select(a => a.ProfessorRf).Distinct();

                    var ultimoRegente = rfsOrnedadosPorDataCriacaoAula.Last();

                    // se regente atual, titular anterior ou professor anterior visualiza a aula
                    if (ultimoRegente.Equals(usuarioRF, StringComparison.InvariantCultureIgnoreCase) ||
                        aula.ProfessorRf.Equals(usuarioRF, StringComparison.InvariantCultureIgnoreCase) ||
                        aula.Turma.EhTurmaInfantil ||
                        usuarioLogado.PerfilAtual != Perfis.PERFIL_PROFESSOR ||
                        usuarioLogado.PerfilAtual != Perfis.PERFIL_CJ ||
                        usuarioLogado.PerfilAtual != Perfis.PERFIL_CJ_INFANTIL
                        )
                    {
                        aulasRetorno.Add(MapearParaDto(aula, p.Bimestre));
                    }
                });
            });

            return(aulasRetorno.OrderBy(a => a.Data));
        }
 private IEnumerable <DataAulasProfessorDto> ObterAulasNosPeriodos(IEnumerable <PeriodoEscolar> periodosEscolares, int anoLetivo, string turmaCodigo, string componenteCurricularCodigo, string professorRf, bool ehProfessorCj, bool ehProfessor)
 {
     foreach (var periodoEscolar in periodosEscolares)
     {
         foreach (var aula in repositorio.ObterDatasDeAulasPorAnoTurmaEDisciplina(periodoEscolar.Id, anoLetivo, turmaCodigo, componenteCurricularCodigo, professorRf, ehProfessorCj, ehProfessor))
         {
             yield return(new DataAulasProfessorDto
             {
                 Data = aula.DataAula,
                 IdAula = aula.Id,
                 AulaCJ = aula.AulaCJ,
                 Bimestre = periodoEscolar.Bimestre,
                 ProfessorRf = aula.ProfessorRf,
                 CriadoPor = aula.CriadoPor
             });
         }
     }
 }