Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public Task <IEnumerable <Dominio.PeriodoEscolar> > Handle(ObterPeriodosEscolaresPorTipoCalendarioIdQuery request, CancellationToken cancellationToken)
 {
     return(repositorioPeriodoEscolar.ObterPorTipoCalendarioAsync(request.TipoCalendarioId));
 }