diff --git a/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/ConsultationDateBusinessHoursValidator.java b/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/ConsultationDateBusinessHoursValidator.java new file mode 100644 index 0000000..3c8fd25 --- /dev/null +++ b/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/ConsultationDateBusinessHoursValidator.java @@ -0,0 +1,34 @@ +package com.mirna.hospitalmanagementapi.domain.validators.consultation; + +import java.time.DayOfWeek; +import java.time.LocalDateTime; + +import com.mirna.hospitalmanagementapi.domain.validators.consultation.constraints.ConsultationDateBusinessHours; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Future; + +public class ConsultationDateBusinessHoursValidator implements ConstraintValidator { + + private Long businessHourStart; + private Long businessHourEnd; + + @Override + public void initialize(ConsultationDateBusinessHours consultationDateBusinessHours) { + businessHourStart = 7L; + businessHourEnd = 18L; + } + + + @Override + public boolean isValid(LocalDateTime value, ConstraintValidatorContext context) { + + if (value.getDayOfWeek().equals(DayOfWeek.SUNDAY) + || value.getHour() < businessHourStart + || value.getHour() > businessHourEnd) return false; + + return true; + } + +} diff --git a/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/constraints/ConsultationDateBusinessHours.java b/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/constraints/ConsultationDateBusinessHours.java new file mode 100644 index 0000000..feee81e --- /dev/null +++ b/src/main/java/com/mirna/hospitalmanagementapi/domain/validators/consultation/constraints/ConsultationDateBusinessHours.java @@ -0,0 +1,24 @@ +package com.mirna.hospitalmanagementapi.domain.validators.consultation.constraints; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import com.mirna.hospitalmanagementapi.domain.validators.consultation.ConsultationDateBusinessHoursValidator; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +@Constraint(validatedBy = ConsultationDateBusinessHoursValidator.class) +@Target( { ElementType.METHOD, ElementType.FIELD }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ConsultationDateBusinessHours { + + String message() default "Invalid consultation date. The business hours are Monday to Saturday, from 07:00 to 19:00"; + Class[] groups() default {}; + Class[] payload() default {}; + +}