Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

package gov.va.vamf.scheduling.varutility.domain;

import com.agilex.healthcare.utility.NullChecker;
import gov.va.vamf.scheduling.varutility.exception.BasicValidationException;
import org.springframework.data.mongodb.core.mapping.Document;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;

import static gov.va.vamf.scheduling.varutility.utils.VarUtilityConstants.REQUEST_SCHEDULING_METHOD;

@Document
@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(namespace = Namespace.VarUtility)
public class RequestEligibilityCriteria extends DomainBaseObject {

@XmlElement
private CoreSettings requestSettings;

@XmlElement
private CustomRequestSettings customRequestSettings;

public CoreSettings getRequestSettings() {
return requestSettings;
}

public void setRequestSettings(CoreSettings requestSettings) {
this.requestSettings = requestSettings;
}

public CustomRequestSettings getCustomRequestSettings() {
return customRequestSettings;
}

public void setCustomRequestSettings(CustomRequestSettings customRequestSettings) {
this.customRequestSettings = customRequestSettings;
}

public void validate(String siteCode, List<ClinicalServices> requestServices, List<ClinicalServices> customRequestServices) {
ValidationErrors<RequestEligibilityCriteria> errors = new ValidationErrors<RequestEligibilityCriteria>();

if(NullChecker.isNullish(getId())) {
errors.add(new ValidationError("id", "id is required."));
} else if(! getId().equals(siteCode)) {
errors.add(new ValidationError("id", "id must match Site Code."));
}

ArrayList<ValidationError> requestSettingsErrors = getRequestSettings().validate(requestServices, REQUEST_SCHEDULING_METHOD);
ArrayList<ValidationError> customRequestSettingsErrors = getCustomRequestSettings().validate(customRequestServices);
errors.addAll(requestSettingsErrors);
errors.addAll(customRequestSettingsErrors);

if(errors.size() > 0) {
errors.setRequestObject(this);
throw new BasicValidationException(errors);
}
}

public void cleanupDataForSave() {
for(CoreSetting cs : this.getRequestSettings()) {
if(agilex.commons.NullChecker.isNullish(cs.getPatientHistoryRequired()) || cs.getPatientHistoryRequired().equals("No")) {
cs.setPatientHistoryDuration(0);
}
if (agilex.commons.NullChecker.isNullish(cs.getPatientHistoryRequired())) {
cs.setSubmittedRequestLimit(0);
}
cs.setCanCancel(null);
}
for (CustomRequestSetting crs: this.getCustomRequestSettings()) {
if (crs.getSupported().equals(false)) {
crs.setSubmittedRequestLimit(0);
}
}
}
}