AppointmentDateTime.java
package com.chronus.domain.valueobject;
import com.chronus.domain.exception.InvalidDateAppointmentException;
import java.time.LocalDateTime;
// Objeto de valor inmutable y autovalidado para la fecha y hora de una cita.
public record AppointmentDateTime(LocalDateTime value) {
public AppointmentDateTime {
if (value == null) {
throw new InvalidDateAppointmentException(
"The appointment date and time is required.");
}
if (!value.isAfter(LocalDateTime.now())) {
throw new InvalidDateAppointmentException(
"The appointment date and time must be in the future.");
}
value = value.withNano(0);
}
}