public async Task <IEnumerable <EventosAulasCalendarioDto> > ObterEventosAulasMensais(FiltroEventosAulasCalendarioDto filtro) { List <DateTime> diasLetivos = new List <DateTime>(); List <DateTime> diasNaoLetivos = new List <DateTime>(); List <DateTime> totalDias = new List <DateTime>(); 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 diasPeriodoEscolares = comandosDiasLetivos.BuscarDiasLetivos(filtro.TipoCalendarioId); var diasAulas = await repositorioAula.ObterAulas(filtro.TipoCalendarioId, filtro.TurmaId, filtro.UeId, rf); var eventos = repositorioEvento.ObterEventosPorTipoDeCalendarioDreUe(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, filtro.EhEventoSme); var diasEventosNaoLetivos = comandosDiasLetivos.ObterDias(eventos, diasNaoLetivos, EventoLetivo.Nao); var diasEventosLetivos = comandosDiasLetivos.ObterDias(eventos, diasLetivos, EventoLetivo.Sim); var aulas = ObterDias(diasAulas); diasEventosNaoLetivos.RemoveAll(x => !diasPeriodoEscolares.Contains(x)); aulas.RemoveAll(x => !diasPeriodoEscolares.Contains(x)); totalDias.AddRange(aulas); totalDias.AddRange(diasEventosLetivos); totalDias.AddRange(diasEventosNaoLetivos); return(MapearParaDto(totalDias)); }
public DiasLetivosDto CalcularDiasLetivos(FiltroDiasLetivosDTO filtro) { //se for letivo em um fds que esteja no calendário somar bool estaAbaixo = false; //buscar os dados var periodoEscolar = repositorioPeriodoEscolar.ObterPorTipoCalendario(filtro.TipoCalendarioId); var diasLetivosCalendario = BuscarDiasLetivos(periodoEscolar); var eventos = repositorioEvento.ObterEventosPorTipoDeCalendarioDreUe(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, false, false); var tipoCalendario = repositorioTipoCalendario.ObterPorId(filtro.TipoCalendarioId); if (tipoCalendario == null) { throw new NegocioException("Tipo de calendario não encontrado"); } var anoLetivo = tipoCalendario.AnoLetivo; List <DateTime> diasEventosNaoLetivos = new List <DateTime>(); List <DateTime> diasEventosLetivos = new List <DateTime>(); //transforma em dias diasEventosNaoLetivos = ObterDias(eventos, diasEventosNaoLetivos, EventoLetivo.Nao); diasEventosLetivos = ObterDias(eventos, diasEventosLetivos, EventoLetivo.Sim); //adicionar os finais de semana letivos se houver //se não houver dia letivo em fds não precisa adicionar foreach (var dia in diasEventosLetivos.Where(x => !EhDiaUtil(x))) { if (periodoEscolar.Any(w => w.PeriodoInicio <= dia && dia <= w.PeriodoFim)) { diasLetivosCalendario.Add(dia); } } //retirar eventos não letivos que não estão no calendário diasEventosNaoLetivos = diasEventosNaoLetivos.Where(w => diasLetivosCalendario.Contains(w)).ToList(); //retirar eventos não letivos que não contenha letivo diasEventosNaoLetivos = diasEventosNaoLetivos.Where(w => !diasEventosLetivos.Contains(w)).ToList(); //subtrai os dias nao letivos var diasLetivos = diasLetivosCalendario.Distinct().Count() - diasEventosNaoLetivos.Distinct().Count(); //verificar se eh eja ou nao var diasLetivosPermitidos = Convert.ToInt32(tipoCalendario.Modalidade == ModalidadeTipoCalendario.EJA ? repositorioParametrosSistema.ObterValorPorTipoEAno(TipoParametroSistema.EjaDiasLetivos, anoLetivo) : repositorioParametrosSistema.ObterValorPorTipoEAno(TipoParametroSistema.FundamentalMedioDiasLetivos, anoLetivo)); estaAbaixo = diasLetivos < diasLetivosPermitidos; return(new DiasLetivosDto { Dias = diasLetivos, EstaAbaixoPermitido = estaAbaixo }); }
public Task <IEnumerable <Evento> > Handle(ObterEventosPorTipoDeCalendarioDreUeQuery request, CancellationToken cancellationToken) => Task.FromResult(repositorioEvento.ObterEventosPorTipoDeCalendarioDreUe(request.TipoCalendarioId, request.DreCodigo, request.UeCodigo, request.EhEventoSME, request.FiltroDreUe));