diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java index cb1882d0b..0ec00bcaf 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientApiConstants.java @@ -78,8 +78,10 @@ public class ClientApiConstants { public static final Set CLIENT_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName, dateFormatParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, middlenameParamName, + lastnameParamName, fullnameParamName, activeParamName, activationDateParamName, staffIdParamName, savingsProductIdParamName, - dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName)); + dateOfBirthParamName, genderIdParamName, clientTypeIdParamName, clientClassificationIdParamName,submittedOnDateParamName)); + /** * These parameters will match the class level parameters of diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java index d68ae0200..3c8f65ad4 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientDataValidator.java @@ -324,6 +324,7 @@ public final class ClientDataValidator { final Boolean active = this.fromApiJsonHelper.extractBooleanNamed(ClientApiConstants.activeParamName, element); if (active != null) { + atLeastOneParameterPassedForUpdate = true; if (active.booleanValue()) { final LocalDate joinedDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.activationDateParamName, element); @@ -344,6 +345,7 @@ public final class ClientDataValidator { .longGreaterThanZero(); } + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.dateOfBirthParamName, element)) { atLeastOneParameterPassedForUpdate = true; final LocalDate dateOfBirth = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.dateOfBirthParamName, element); @@ -371,12 +373,21 @@ public final class ClientDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.clientClassificationIdParamName).value(clientClassification) .integerGreaterThanZero(); } + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.submittedOnDateParamName, element)) { + atLeastOneParameterPassedForUpdate = true; + final LocalDate submittedDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.submittedOnDateParamName, + element); + baseDataValidator.reset().parameter(ClientApiConstants.submittedOnDateParamName).value(submittedDate).notNull(); + + } if (!atLeastOneParameterPassedForUpdate) { final Object forceError = null; baseDataValidator.reset().anyOfNotNull(forceError); } + + throwExceptionIfValidationWarningsExist(dataValidationErrors); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java index d0a62e814..5fb4c3cdf 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java @@ -446,6 +446,7 @@ public final class Client extends AbstractPersistable { actualChanges.put(ClientApiConstants.savingsProductIdParamName, newValue); } + if (command.isChangeInLongParameterNamed(ClientApiConstants.genderIdParamName, genderId())) { final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.genderIdParamName); actualChanges.put(ClientApiConstants.genderIdParamName, newValue); @@ -461,6 +462,7 @@ public final class Client extends AbstractPersistable { actualChanges.put(ClientApiConstants.clientClassificationIdParamName, newValue); } + final String dateFormatAsInput = command.dateFormat(); final String localeAsInput = command.locale(); @@ -485,6 +487,16 @@ public final class Client extends AbstractPersistable { this.dateOfBirth = newValue.toDate(); } + if (command.isChangeInLocalDateParameterNamed(ClientApiConstants.submittedOnDateParamName,getSubmittedOnDate())) { + final String valueAsInput = command.stringValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName); + actualChanges.put(ClientApiConstants.submittedOnDateParamName, valueAsInput); + actualChanges.put(ClientApiConstants.dateFormatParamName, dateFormatAsInput); + actualChanges.put(ClientApiConstants.localeParamName, localeAsInput); + + final LocalDate newValue = command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName); + this.submittedOnDate = newValue.toDate(); + } + validate(); deriveDisplayName(); @@ -492,6 +504,7 @@ public final class Client extends AbstractPersistable { return actualChanges; } + private void validateNameParts(final List dataValidationErrors) { final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("client");