ValidDurationsValidator.java

package com.seebie.server.validation;

import com.seebie.server.dto.SleepData;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.time.Duration;


public class ValidDurationsValidator implements ConstraintValidator<ValidDurations, SleepData> {

    @Override
    public void initialize(ValidDurations value) {
    }

    @Override
    public boolean isValid(SleepData value, ConstraintValidatorContext cxt) {
        if (value == null || value.startTime() == null || value.stopTime() == null) {
            return false;
        }
        return value.minutesAwake() < Duration.between(value.startTime(), value.stopTime()).toMinutes();
    }
}