コード例 #1
0
        public async Task <DateTime> Handle(ObterDataPeriodoFimSondagemPorSemestreAnoLetivoQuery request, CancellationToken cancellationToken)
        {
            //TODO Melhorar esta consulta para ser Por Id, mas para isso é necessário alterações no front;
            var descricaoSemestre = $"{request.Semestre}° Semestre";

            var dataFimPeriodoFixo = await periodoSondagemRepository.ObterPeriodoFixoFimPorSemestreAnoLetivo(descricaoSemestre, request.AnoLetivo);

            if (dataFimPeriodoFixo == null || dataFimPeriodoFixo.Ticks == 0)
            {
                int bimestre;
                if (request.Semestre == 1)
                {
                    bimestre = 2;
                }
                else
                {
                    bimestre = 4;
                }

                var dataFimPeriodoAbertura = await periodoSondagemRepository.ObterPeriodoAberturaFimPorBimestreAnoLetivo(bimestre, request.AnoLetivo);

                if (dataFimPeriodoAbertura == null || dataFimPeriodoAbertura.Ticks == 0)
                {
                    throw new NegocioException("Não foi possível localizar a data fim do período da sondagem.");
                }

                return(dataFimPeriodoAbertura);
            }
            else
            {
                return(dataFimPeriodoFixo);
            }
        }