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