#MIFOSX-765 fixes validation submittedOnDate

This commit is contained in:
CieyouRaoul
2013-11-14 17:55:23 +01:00
parent 4fccb6b3ad
commit e9aaab3f56
7 changed files with 86 additions and 5 deletions
+35 -3
View File
@@ -2053,7 +2053,8 @@ Content-Type: application/json Request Body:
"dateFormat": "dd MMMM yyyy", "dateFormat": "dd MMMM yyyy",
"locale": "en", "locale": "en",
"active": true, "active": true,
"activationDate": "04 March 2009" "activationDate": "04 March 2009",
"submittedOnDate":"04 March 2009"
} }
</code> </code>
<code class="method-response"> <code class="method-response">
@@ -2378,6 +2379,16 @@ GET https://DomainName/api/v1/clients/{clientId}
"displayName": "Client of group", "displayName": "Client of group",
"officeId": 1, "officeId": 1,
"officeName": "Head Office", "officeName": "Head Office",
"timeline": {
"activatedOnDate": [
2009,
3,
4
],
"activatedByUsername": "mifos",
"activatedByFirstname": "App",
"activatedByLastname": "Administrator"
},
"groups": [ "groups": [
{ {
"id": 1, "id": 1,
@@ -3908,7 +3919,8 @@ Content-Type: application/json Request Body:
"dateFormat": "dd MMMM yyyy", "dateFormat": "dd MMMM yyyy",
"locale": "en", "locale": "en",
"active": true, "active": true,
"activationDate": "04 March 2009" "activationDate": "04 March 2009",
"submittedOnDate":"04 March 2009"
} }
</code> </code>
<code class="method-response"> <code class="method-response">
@@ -4127,7 +4139,17 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1
"externalId": "000-1A", "externalId": "000-1A",
"officeId": 1, "officeId": 1,
"officeName": "Head Office", "officeName": "Head Office",
"hierarchy": ".1." "hierarchy": ".1.",
"timeline": {
"activatedOnDate": [
2013,
11,
14
],
"activatedByUsername": "mifos",
"activatedByFirstname": "App",
"activatedByLastname": "Administrator"
}
} }
</code> </code>
</div> </div>
@@ -4144,6 +4166,16 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembe
"officeId": 1, "officeId": 1,
"officeName": "Head Office", "officeName": "Head Office",
"hierarchy": ".1.", "hierarchy": ".1.",
"timeline": {
"activatedOnDate": [
2013,
11,
14
],
"activatedByUsername": "mifos",
"activatedByFirstname": "App",
"activatedByLastname": "Administrator"
},
"clientMembers": [ "clientMembers": [
{ {
"id": 1, "id": 1,
@@ -57,7 +57,7 @@ public class ClientApiConstants {
public static final Set<String> CLIENT_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName, public static final Set<String> CLIENT_CREATE_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName,
dateFormatParamName, groupIdParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, dateFormatParamName, groupIdParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName,
middlenameParamName, lastnameParamName, fullnameParamName, officeIdParamName, activeParamName, activationDateParamName, middlenameParamName, lastnameParamName, fullnameParamName, officeIdParamName, activeParamName, activationDateParamName,
staffIdParamName)); staffIdParamName,submittedOnDateParamName));
public static final Set<String> CLIENT_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName, public static final Set<String> CLIENT_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName,
dateFormatParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, middlenameParamName, dateFormatParamName, accountNoParamName, externalIdParamName, mobileNoParamName, firstnameParamName, middlenameParamName,
@@ -132,6 +132,12 @@ public final class ClientDataValidator {
baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); 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); throwExceptionIfValidationWarningsExist(dataValidationErrors);
} }
@@ -214,6 +214,18 @@ public final class Client extends AbstractPersistable<Long> {
throw new PlatformApiDataValidationException(dataValidationErrors); 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<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
dataValidationErrors.add(error);
throw new PlatformApiDataValidationException(dataValidationErrors);
}
this.submittedOnDate = submittedOnDate.toDate(); this.submittedOnDate = submittedOnDate.toDate();
this.submittedBy = currentUser; this.submittedBy = currentUser;
@@ -325,6 +337,7 @@ public final class Client extends AbstractPersistable<Long> {
throw new PlatformApiDataValidationException(dataValidationErrors); throw new PlatformApiDataValidationException(dataValidationErrors);
} }
this.activationDate = activationLocalDate.toDate(); this.activationDate = activationLocalDate.toDate();
this.activatedBy = currentUser; this.activatedBy = currentUser;
this.officeJoiningDate = this.activationDate; this.officeJoiningDate = this.activationDate;
@@ -65,7 +65,7 @@ public class GroupingTypesApiConstants {
public static final Set<String> CENTER_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName, public static final Set<String> CENTER_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName,
dateFormatParamName, idParamName, nameParamName, externalIdParamName, officeIdParamName, staffIdParamName, activeParamName, dateFormatParamName, idParamName, nameParamName, externalIdParamName, officeIdParamName, staffIdParamName, activeParamName,
activationDateParamName, groupMembersParamName)); activationDateParamName, groupMembersParamName,submittedOnDateParamName));
public static final Set<String> GROUP_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName, dateFormatParamName, public static final Set<String> GROUP_REQUEST_DATA_PARAMETERS = new HashSet<String>(Arrays.asList(localeParamName, dateFormatParamName,
idParamName, nameParamName, externalIdParamName, centerIdParamName, officeIdParamName, staffIdParamName, activeParamName, idParamName, nameParamName, externalIdParamName, centerIdParamName, officeIdParamName, staffIdParamName, activeParamName,
@@ -188,6 +188,18 @@ public final class Group extends AbstractPersistable<Long> {
throw new PlatformApiDataValidationException(dataValidationErrors); 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<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
dataValidationErrors.add(error);
throw new PlatformApiDataValidationException(dataValidationErrors);
}
this.submittedOnDate = submittedOnDate.toDate(); this.submittedOnDate = submittedOnDate.toDate();
this.submittedBy = currentUser; this.submittedBy = currentUser;
} }
@@ -97,6 +97,12 @@ public final class GroupingTypesDataValidator {
baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); 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); throwExceptionIfValidationWarningsExist(dataValidationErrors);
} }
@@ -155,6 +161,12 @@ public final class GroupingTypesDataValidator {
baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); 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); throwExceptionIfValidationWarningsExist(dataValidationErrors);
} }
@@ -209,6 +221,12 @@ public final class GroupingTypesDataValidator {
baseDataValidator.reset().parameter(ClientApiConstants.activeParamName).value(active).trueOrFalseRequired(false); 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); throwExceptionIfValidationWarningsExist(dataValidationErrors);
} }