Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 6a24870

Browse files
lgallgal
authored andcommitted
SORMAS-Foundation#3409 added date interval validation on prohibition to work from-until
1 parent bacff28 commit 6a24870

6 files changed

Lines changed: 64 additions & 5 deletions

File tree

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,8 @@ private void reduceQuarantine() {
439439
.addValueChangedListener(e -> contentBinding.caseDataQuarantineExtended.setVisibility(record.isQuarantineExtended() ? VISIBLE : GONE));
440440
contentBinding.caseDataQuarantineReduced
441441
.addValueChangedListener(e -> contentBinding.caseDataQuarantineReduced.setVisibility(record.isQuarantineReduced() ? VISIBLE : GONE));
442+
443+
CaseValidator.initializeProhibitionToWorkIntervalValidator(contentBinding);
442444
}
443445

444446
@Override

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseValidator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import android.view.View;
2323

24-
import de.symeda.sormas.api.ConfigFacade;
2524
import de.symeda.sormas.api.CountryHelper;
2625
import de.symeda.sormas.api.caze.CaseClassification;
2726
import de.symeda.sormas.api.caze.CaseDataDto;
@@ -34,6 +33,7 @@
3433
import de.symeda.sormas.app.backend.caze.CaseDtoHelper;
3534
import de.symeda.sormas.app.backend.common.DatabaseHelper;
3635
import de.symeda.sormas.app.backend.config.ConfigProvider;
36+
import de.symeda.sormas.app.component.validation.ValidationHelper;
3737
import de.symeda.sormas.app.databinding.DialogPreviousHospitalizationLayoutBinding;
3838
import de.symeda.sormas.app.databinding.FragmentCaseEditHospitalizationLayoutBinding;
3939
import de.symeda.sormas.app.databinding.FragmentCaseEditLayoutBinding;
@@ -114,6 +114,10 @@ static void initializePortHealthInfoValidation(final FragmentCaseEditPortHealthI
114114
contentBinding.portHealthInfoArrivalDateTime.setValidationCallback(arrivalCallback);
115115
}
116116

117+
static void initializeProhibitionToWorkIntervalValidator(FragmentCaseEditLayoutBinding contentBinding) {
118+
ValidationHelper.initDateIntervalValidator(contentBinding.caseDataProhibitionToWorkFrom, contentBinding.caseDataProhibitionToWorkUntil);
119+
}
120+
117121
static void initializeHospitalizationValidation(final FragmentCaseEditHospitalizationLayoutBinding contentBinding, final Case caze) {
118122
contentBinding.caseHospitalizationAdmissionDate.addValueChangedListener(field -> {
119123
Date value = (Date) field.getValue();
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package de.symeda.sormas.app.component.validation;
2+
3+
import org.joda.time.DateTimeComparator;
4+
5+
import android.view.View;
6+
7+
import de.symeda.sormas.api.i18n.I18nProperties;
8+
import de.symeda.sormas.api.i18n.Validations;
9+
import de.symeda.sormas.app.component.controls.ControlDateField;
10+
import de.symeda.sormas.app.util.ResultCallback;
11+
12+
public class ValidationHelper {
13+
14+
public static void initDateIntervalValidator(ControlDateField dateFromControl, ControlDateField dateUntilContol) {
15+
if (dateFromControl.getVisibility() == View.GONE || dateUntilContol.getVisibility() == View.GONE) {
16+
return;
17+
}
18+
19+
ResultCallback<Boolean> dateFromCallback = () -> {
20+
if (dateFromControl.getValue() != null && dateUntilContol.getValue() != null) {
21+
if (DateTimeComparator.getDateOnlyInstance().compare(dateFromControl.getValue(), dateUntilContol.getValue()) > 0) {
22+
dateFromControl.enableErrorState(
23+
I18nProperties.getValidationError(Validations.beforeDate, dateFromControl.getCaption(), dateUntilContol.getCaption()));
24+
return true;
25+
}
26+
}
27+
28+
return false;
29+
};
30+
31+
ResultCallback<Boolean> dateUntilCallback = () -> {
32+
if (dateUntilContol.getValue() != null && dateFromControl.getValue() != null) {
33+
if (DateTimeComparator.getDateOnlyInstance().compare(dateUntilContol.getValue(), dateFromControl.getValue()) < 0) {
34+
dateUntilContol.enableErrorState(
35+
I18nProperties.getValidationError(Validations.beforeDate, dateUntilContol.getCaption(), dateFromControl.getCaption()));
36+
return true;
37+
}
38+
}
39+
40+
return false;
41+
};
42+
43+
dateFromControl.setValidationCallback(dateFromCallback);
44+
dateUntilContol.setValidationCallback(dateUntilCallback);
45+
}
46+
}

sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactEditFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,8 @@ private void reduceQuarantine() {
341341
contentBinding.contactDistrict.setRequired(true);
342342
}
343343

344-
ContactValidator.initializeValidation(record, contentBinding);
344+
ContactValidator.initializeLastContactDateValidation(record, contentBinding);
345+
ContactValidator.initializeProhibitionToWorkIntervalValidator(contentBinding);
345346

346347
//contentBinding.setContactProximityClass(ContactProximity.class);
347348

@@ -403,6 +404,7 @@ public void onAfterLayoutBinding(FragmentContactEditLayoutBinding contentBinding
403404
contentBinding.contactQuarantineOrderedVerballyDate.initializeDateField(getChildFragmentManager());
404405
contentBinding.contactQuarantineOrderedOfficialDocumentDate.initializeDateField(getChildFragmentManager());
405406
contentBinding.contactQuarantineOfficialOrderSentDate.initializeDateField(getChildFragmentManager());
407+
406408
contentBinding.contactProhibitionToWorkFrom.initializeDateField(getChildFragmentManager());
407409
contentBinding.contactProhibitionToWorkUntil.initializeDateField(getChildFragmentManager());
408410
}

sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactNewFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void onLayoutBinding(FragmentContactNewLayoutBinding contentBinding) {
142142
contentBinding.contactContactCategory.setVisibility(GONE);
143143
}
144144

145-
ContactValidator.initializeValidation(record, contentBinding);
145+
ContactValidator.initializeLastContactDateValidation(record, contentBinding);
146146
}
147147

148148
/*

sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactValidator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@
2323
import de.symeda.sormas.api.i18n.I18nProperties;
2424
import de.symeda.sormas.api.i18n.Validations;
2525
import de.symeda.sormas.app.backend.contact.Contact;
26+
import de.symeda.sormas.app.component.validation.ValidationHelper;
2627
import de.symeda.sormas.app.databinding.FragmentContactEditLayoutBinding;
2728
import de.symeda.sormas.app.databinding.FragmentContactNewLayoutBinding;
2829
import de.symeda.sormas.app.util.ResultCallback;
2930

3031
public final class ContactValidator {
3132

32-
public static void initializeValidation(final Contact contact, final FragmentContactEditLayoutBinding contentBinding) {
33+
public static void initializeLastContactDateValidation(final Contact contact, final FragmentContactEditLayoutBinding contentBinding) {
3334
if (contact != null) {
3435
ResultCallback<Boolean> lastContactDateCallback = () -> {
3536
Date lastContactDate = contentBinding.contactLastContactDate.getValue();
@@ -51,7 +52,7 @@ public static void initializeValidation(final Contact contact, final FragmentCon
5152
}
5253
}
5354

54-
public static void initializeValidation(final Contact contact, final FragmentContactNewLayoutBinding contentBinding) {
55+
public static void initializeLastContactDateValidation(final Contact contact, final FragmentContactNewLayoutBinding contentBinding) {
5556
if (contact != null) {
5657
ResultCallback<Boolean> lastContactDateCallback = () -> {
5758
Date lastContactDate = contentBinding.contactLastContactDate.getValue();
@@ -72,4 +73,8 @@ public static void initializeValidation(final Contact contact, final FragmentCon
7273
contentBinding.contactLastContactDate.setValidationCallback(lastContactDateCallback);
7374
}
7475
}
76+
77+
static void initializeProhibitionToWorkIntervalValidator(FragmentContactEditLayoutBinding contentBinding) {
78+
ValidationHelper.initDateIntervalValidator(contentBinding.contactProhibitionToWorkFrom, contentBinding.contactProhibitionToWorkUntil);
79+
}
7580
}

0 commit comments

Comments
 (0)