[R9] Validator to check if the consultation date was scheduled at least 30 minutes in advance

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

View File

@ -0,0 +1,25 @@
package com.mirna.hospitalmanagementapi.domain.validators.consultation;
import java.time.Duration;
import java.time.LocalDateTime;
import com.mirna.hospitalmanagementapi.domain.validators.consultation.constraints.ConsultationDateScheduledInAdvance;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import jakarta.validation.constraints.Future;
public class ConsultationDateScheduledInAdvanceValidator implements ConstraintValidator <ConsultationDateScheduledInAdvance, LocalDateTime> {
@Override
public boolean isValid(LocalDateTime value, ConstraintValidatorContext context) {
LocalDateTime now = LocalDateTime.now();
long diff = Duration.between(now, value).toMinutes();
if (diff < 30L) return false;
return true;
}
}

View File

@ -0,0 +1,23 @@
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.ConsultationDateScheduledInAdvanceValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
@Constraint(validatedBy = ConsultationDateScheduledInAdvanceValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConsultationDateScheduledInAdvance {
String message() default "This consultation must be scheduled at least 30 minutes in advance";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}