From e9aaab3f56bc189eb96e5bdd14d33624fa4988dc Mon Sep 17 00:00:00 2001 From: CieyouRaoul Date: Thu, 14 Nov 2013 17:55:23 +0100 Subject: [PATCH] #MIFOSX-765 fixes validation submittedOnDate --- api-docs/apiLive.htm | 38 +++++++++++++++++-- .../client/api/ClientApiConstants.java | 2 +- .../client/data/ClientDataValidator.java | 6 +++ .../portfolio/client/domain/Client.java | 13 +++++++ .../group/api/GroupingTypesApiConstants.java | 2 +- .../portfolio/group/domain/Group.java | 12 ++++++ .../GroupingTypesDataValidator.java | 18 +++++++++ 7 files changed, 86 insertions(+), 5 deletions(-) diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index 47902bb85..bf4364b86 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -2053,7 +2053,8 @@ Content-Type: application/json Request Body: "dateFormat": "dd MMMM yyyy", "locale": "en", "active": true, - "activationDate": "04 March 2009" + "activationDate": "04 March 2009", + "submittedOnDate":"04 March 2009" } @@ -2378,6 +2379,16 @@ GET https://DomainName/api/v1/clients/{clientId} "displayName": "Client of group", "officeId": 1, "officeName": "Head Office", + "timeline": { + "activatedOnDate": [ + 2009, + 3, + 4 + ], + "activatedByUsername": "mifos", + "activatedByFirstname": "App", + "activatedByLastname": "Administrator" + }, "groups": [ { "id": 1, @@ -3908,7 +3919,8 @@ Content-Type: application/json Request Body: "dateFormat": "dd MMMM yyyy", "locale": "en", "active": true, - "activationDate": "04 March 2009" + "activationDate": "04 March 2009", + "submittedOnDate":"04 March 2009" } @@ -4127,7 +4139,17 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1 "externalId": "000-1A", "officeId": 1, "officeName": "Head Office", - "hierarchy": ".1." + "hierarchy": ".1.", + "timeline": { + "activatedOnDate": [ + 2013, + 11, + 14 + ], + "activatedByUsername": "mifos", + "activatedByFirstname": "App", + "activatedByLastname": "Administrator" + } } @@ -4144,6 +4166,16 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembe "officeId": 1, "officeName": "Head Office", "hierarchy": ".1.", + "timeline": { + "activatedOnDate": [ + 2013, + 11, + 14 + ], + "activatedByUsername": "mifos", + "activatedByFirstname": "App", + "activatedByLastname": "Administrator" + }, "clientMembers": [ { "id": 1, 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 077a480ce..aa53e669f 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 @@ -57,7 +57,7 @@ public class ClientApiConstants { public static final Set CLIENT_CREATE_REQUEST_DATA_PARAMETERS = new HashSet(Arrays.asList(localeParamName, dateFormatParamName, groupIdParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, middlenameParamName, lastnameParamName, fullnameParamName, officeIdParamName, activeParamName, activationDateParamName, - staffIdParamName)); + staffIdParamName,submittedOnDateParamName)); public static final Set CLIENT_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet(Arrays.asList(localeParamName, dateFormatParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, middlenameParamName, 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 32b04cdf2..caff2cb07 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 @@ -132,6 +132,12 @@ public final class ClientDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); } + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.submittedOnDateParamName, element)) + { + final LocalDate submittedOnDate = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.submittedOnDateParamName, element); + baseDataValidator.reset().parameter(ClientApiConstants.submittedOnDateParamName).value(submittedOnDate).notNull(); + } + 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 0e1322129..3adf5cba1 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 @@ -214,6 +214,18 @@ public final class Client extends AbstractPersistable { throw new PlatformApiDataValidationException(dataValidationErrors); } + if(activationDate !=null && submittedOnDate.isAfter(activationDate)) { + + final String defaultUserMessage = "submitted date cannot be after the activation date"; + final ApiParameterError error = ApiParameterError.parameterError("error.msg.clients.submittedOnDate.after.activation.date", + defaultUserMessage, ClientApiConstants.submittedOnDateParamName, submittedOnDate); + + final List dataValidationErrors = new ArrayList(); + dataValidationErrors.add(error); + + throw new PlatformApiDataValidationException(dataValidationErrors); + } + this.submittedOnDate = submittedOnDate.toDate(); this.submittedBy = currentUser; @@ -325,6 +337,7 @@ public final class Client extends AbstractPersistable { throw new PlatformApiDataValidationException(dataValidationErrors); } + this.activationDate = activationLocalDate.toDate(); this.activatedBy = currentUser; this.officeJoiningDate = this.activationDate; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupingTypesApiConstants.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupingTypesApiConstants.java index 4c7d4a54e..ed4edf4ab 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupingTypesApiConstants.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupingTypesApiConstants.java @@ -65,7 +65,7 @@ public class GroupingTypesApiConstants { public static final Set CENTER_REQUEST_DATA_PARAMETERS = new HashSet(Arrays.asList(localeParamName, dateFormatParamName, idParamName, nameParamName, externalIdParamName, officeIdParamName, staffIdParamName, activeParamName, - activationDateParamName, groupMembersParamName)); + activationDateParamName, groupMembersParamName,submittedOnDateParamName)); public static final Set GROUP_REQUEST_DATA_PARAMETERS = new HashSet(Arrays.asList(localeParamName, dateFormatParamName, idParamName, nameParamName, externalIdParamName, centerIdParamName, officeIdParamName, staffIdParamName, activeParamName, diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java index c06b50210..22f60c6a2 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java @@ -188,6 +188,18 @@ public final class Group extends AbstractPersistable { throw new PlatformApiDataValidationException(dataValidationErrors); } + if(activationDate != null && submittedOnDate.isAfter(activationDate)) { + + final String defaultUserMessage = "submitted date cannot be after the activation date"; + final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.submittedOnDate.after.activation.date", + defaultUserMessage, GroupingTypesApiConstants.submittedOnDateParamName, submittedOnDate); + + final List dataValidationErrors = new ArrayList(); + dataValidationErrors.add(error); + + throw new PlatformApiDataValidationException(dataValidationErrors); + } + this.submittedOnDate = submittedOnDate.toDate(); this.submittedBy = currentUser; } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/serialization/GroupingTypesDataValidator.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/serialization/GroupingTypesDataValidator.java index 41ac94d6d..43e617b6d 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/serialization/GroupingTypesDataValidator.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/serialization/GroupingTypesDataValidator.java @@ -97,6 +97,12 @@ public final class GroupingTypesDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); } + if (this.fromApiJsonHelper.parameterExists(GroupingTypesApiConstants.submittedOnDateParamName, element)) + { + final LocalDate submittedOnDate = this.fromApiJsonHelper.extractLocalDateNamed(GroupingTypesApiConstants.submittedOnDateParamName, element); + baseDataValidator.reset().parameter(GroupingTypesApiConstants.submittedOnDateParamName).value(submittedOnDate).notNull(); + } + throwExceptionIfValidationWarningsExist(dataValidationErrors); } @@ -155,6 +161,12 @@ public final class GroupingTypesDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); } + if (this.fromApiJsonHelper.parameterExists(GroupingTypesApiConstants.submittedOnDateParamName, element)) + { + final LocalDate submittedOnDate = this.fromApiJsonHelper.extractLocalDateNamed(GroupingTypesApiConstants.submittedOnDateParamName, element); + baseDataValidator.reset().parameter(GroupingTypesApiConstants.submittedOnDateParamName).value(submittedOnDate).notNull(); + } + throwExceptionIfValidationWarningsExist(dataValidationErrors); } @@ -209,6 +221,12 @@ public final class GroupingTypesDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); } + if (this.fromApiJsonHelper.parameterExists(GroupingTypesApiConstants.submittedOnDateParamName, element)) + { + final LocalDate submittedOnDate = this.fromApiJsonHelper.extractLocalDateNamed(GroupingTypesApiConstants.submittedOnDateParamName, element); + baseDataValidator.reset().parameter(GroupingTypesApiConstants.submittedOnDateParamName).value(submittedOnDate).notNull(); + } + throwExceptionIfValidationWarningsExist(dataValidationErrors); }