Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Validador Horario Antecedencia

@Component("ValidadorHorarioAntecedenciaAgendamento")
public class ValidadorHorarioAntecedencia implements ValidadorAgendamentoDeConsulta {

    public void validar(DadosAgendamentoConsulta dados) {
        var dataConsulta = dados.data();
        var agora = LocalDateTime.now();
        var diferencaEmMinutos = Duration.between(agora, dataConsulta).toMinutes();

        if (diferencaEmMinutos < 30) {
            throw new ValidacaoException("Consulta deve ser agendada com antecedência mínima de 30 minutos");
        }

    }

Boa noite, acho que essa lógica esta errada, fiz alguns teste e conseguir marcar a consultar. Ex: se entrar no sistema no dia 24/03/2023 e marcar uma consulta para o dia 31/03/2023 as 18:45:00, teriam se passado aproximadamente 6 dias, o que equivale a mais de 9000 minutos, ou seja mesmo marcando menos de 30 minutos do fechamento da clinica o cliente vai conseguir. Estou equivocado? A regra de negócio foi criada para o paciente não consiga agendar uma consulta com menos de 30 minutos do fechamento da clínica não é isso?

1 resposta
solução!

Oi Thiago!

Na verdade é 30 minutos de antecedência, ou seja, você não pode marcar marcar uma consulta para daqui a 5 minutos.

Exemplo: se agora são 10:30, você somente pode marcar uma consulta a partir das 11:00, para ter os 30 minutos de antecedência.

Bons estudos!