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

Commit 8f6f298

Browse files
SORMAS-Foundation#3217 perform validation before persisting person entity
1 parent 33acbe3 commit 8f6f298

4 files changed

Lines changed: 14 additions & 7 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public interface Validations {
3939
String externalJournalPersonValidationBirthdate = "externalJournalPersonValidationBirthdate";
4040
String externalJournalPersonValidationEmail = "externalJournalPersonValidationEmail";
4141
String externalJournalPersonValidationError = "externalJournalPersonValidationError";
42+
String externalJournalPersonValidationNoEmailOrPhone = "externalJournalPersonValidationNoEmailOrPhone";
4243
String externalJournalPersonValidationPhone = "externalJournalPersonValidationPhone";
4344
String futureDate = "futureDate";
4445
String futureDateStrict = "futureDateStrict";

sormas-api/src/main/resources/validations.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,4 @@ externalJournalPersonValidationBirthdate = Invalid birthdate.
123123
externalJournalPersonValidationEmail = Invalid email address.
124124
externalJournalPersonValidationError = Invalid data provided for person exported to external journal:
125125
externalJournalPersonValidationPhone = Invalid phone number.
126+
externalJournalPersonValidationNoEmailOrPhone = Please provide an email address or a phone number.

sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalService.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,13 +337,18 @@ public ExternalPersonValidation validatePatientDiaryPerson(PersonDto person) {
337337
if (ObjectUtils.anyNotNull(person.getBirthdateDD(), person.getBirthdateMM(), person.getBirthdateYYYY())) {
338338
validBirthdate = ObjectUtils.allNotNull(person.getBirthdateDD(), person.getBirthdateMM(), person.getBirthdateYYYY());
339339
}
340-
boolean valid = validEmail && validPhone && validBirthdate;
341-
String message = getValidationMessage(validEmail, validPhone, validBirthdate);
340+
boolean hasPhoneOrEmail = !StringUtils.isAllEmpty(email, phone);
341+
boolean valid = hasPhoneOrEmail && validEmail && validPhone && validBirthdate;
342+
String message = getValidationMessage(hasPhoneOrEmail, validEmail, validPhone, validBirthdate);
342343
return new ExternalPersonValidation(valid, message);
343344
}
344345

345-
private String getValidationMessage(boolean validEmail, boolean validPhone, boolean validBirthdate) {
346+
private String getValidationMessage(boolean hasPhoneOrEmail, boolean validEmail, boolean validPhone, boolean validBirthdate) {
346347
StringBuilder message = new StringBuilder();
348+
if (!hasPhoneOrEmail) {
349+
message.append(I18nProperties.getValidationError(Validations.externalJournalPersonValidationNoEmailOrPhone));
350+
message.append('\n');
351+
}
347352
if (!validEmail) {
348353
message.append(I18nProperties.getValidationError(Validations.externalJournalPersonValidationEmail));
349354
message.append('\n');

sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,14 +307,14 @@ public PersonDto savePerson(PersonDto source) throws ValidationRuntimeException
307307

308308
validate(source);
309309

310-
person = fillOrBuildEntity(source, person);
311-
312-
personService.ensurePersisted(person);
313-
314310
if (existingPerson != null) {
315311
handleExternalJournalPerson(existingPerson, source);
316312
}
317313

314+
person = fillOrBuildEntity(source, person);
315+
316+
personService.ensurePersisted(person);
317+
318318
onPersonChanged(existingPerson, person);
319319

320320
return convertToDto(person, Pseudonymizer.getDefault(userService::hasRight), existingPerson == null || isPersonInJurisdiction(person));

0 commit comments

Comments
 (0)