public async Task <DateTime> ObterFimPeriodoRecorrencia(long tipoCalendarioId, DateTime inicioRecorrencia, RecorrenciaAula recorrencia) { var periodos = await repositorio.ObterPorTipoCalendarioAsync(tipoCalendarioId); if (periodos == null || !periodos.Any()) { throw new NegocioException("Não foi possível obter os períodos deste tipo de calendário."); } DateTime fimRecorrencia = DateTime.MinValue; if (recorrencia == RecorrenciaAula.RepetirBimestreAtual) { // Busca ultimo dia do periodo atual fimRecorrencia = periodos.Where(a => a.PeriodoFim >= inicioRecorrencia) .OrderBy(a => a.PeriodoInicio) .FirstOrDefault().PeriodoFim; } else { if (recorrencia == RecorrenciaAula.RepetirTodosBimestres) { // Busca ultimo dia do ultimo periodo fimRecorrencia = periodos.Max(a => a.PeriodoFim); } } return(fimRecorrencia); }
public async Task <DateTime> Handle(ObterFimPeriodoRecorrenciaQuery request, CancellationToken cancellationToken) { var periodos = await repositorioPeriodoEscolar.ObterPorTipoCalendarioAsync(request.TipoCalendarioId); if (periodos == null || !periodos.Any()) { throw new NegocioException("Não foi possível obter os períodos deste tipo de calendário."); } DateTime fimRecorrencia = DateTime.MinValue; switch (request.Recorrencia) { case RecorrenciaAula.RepetirBimestreAtual: // Busca ultimo dia do periodo atual fimRecorrencia = periodos.Where(a => a.PeriodoFim >= request.DataInicio) .OrderBy(a => a.PeriodoInicio) .FirstOrDefault().PeriodoFim; break; case RecorrenciaAula.RepetirTodosBimestres: // Busca ultimo dia do ultimo periodo fimRecorrencia = periodos.Max(a => a.PeriodoFim); break; default: break; } return(fimRecorrencia); }
public Task <IEnumerable <Dominio.PeriodoEscolar> > Handle(ObterPeriodosEscolaresPorTipoCalendarioIdQuery request, CancellationToken cancellationToken) { return(repositorioPeriodoEscolar.ObterPorTipoCalendarioAsync(request.TipoCalendarioId)); }