[R9] Validator to check if the consultation date was scheduled during business hours

This commit is contained in:
Mirna Gama 2024-01-13 17:26:06 -03:00 committed by Mirna Gama
parent 29bc22eb95
commit 55961f680b
2 changed files with 58 additions and 0 deletions

View File

@ -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 <ConsultationDateBusinessHours, LocalDateTime> {
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;
}
}

View File

@ -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<? extends Payload>[] payload() default {};
}