public async Task <IEnumerable <EventosAulasTipoCalendarioDto> > ObterTipoEventosAulas(FiltroEventosAulasCalendarioMesDto filtro) { if (!filtro.TodasTurmas && string.IsNullOrWhiteSpace(filtro.TurmaId)) { throw new NegocioException("É necessario informar uma turma para pesquisa"); } var usuario = await servicoUsuario.ObterUsuarioLogado(); string rf = usuario.TemPerfilGestaoUes() ? string.Empty : usuario.CodigoRf; var eventosAulas = new List <EventosAulasTipoCalendarioDto>(); var periodoEscolar = repositorioPeriodoEscolar.ObterPorTipoCalendario(filtro.TipoCalendarioId); if (periodoEscolar is null || !periodoEscolar.Any()) { throw new NegocioException($"Não existe periodo escolar cadastrado para o tipo de calendario de id {filtro.TipoCalendarioId}"); } var ano = periodoEscolar.FirstOrDefault().PeriodoInicio.Year; var aulas = await repositorioAula.ObterAulas(filtro.TipoCalendarioId, filtro.TurmaId, filtro.UeId, rf, filtro.Mes); var eventos = await repositorioEvento.ObterEventosPorTipoDeCalendarioDreUeMes(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, filtro.Mes, filtro.EhEventoSme); var atividadesAvaliativas = await repositorioAtividadeAvaliativa.ObterAtividadesPorMes(filtro.DreId, filtro.UeId, filtro.Mes, ano, rf, filtro.TurmaId); var diasAulas = ObterDiasAulas(aulas); var diasEventos = ObterDiasEventos(eventos, filtro.Mes); var diasAtividade = ObterDiasAtividades(atividadesAvaliativas); diasAulas.AddRange(diasEventos); diasAulas.AddRange(diasAtividade); return(MapearParaDtoTipo(eventosAulas, diasAulas)); }