[R9] Validator to check if the consultation date was scheduled at least 30 minutes in advance
This commit is contained in:
parent
55961f680b
commit
00e1b86949
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {};
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user