some tidy up around client validation in prep for update.
This commit is contained in:
@@ -24,7 +24,7 @@ public class ClientData implements Serializable {
|
||||
private String externalId;
|
||||
private LocalDate joinedDate;
|
||||
|
||||
private List<OfficeData> allowedOffices = new ArrayList<OfficeData>();
|
||||
private List<OfficeLookup> allowedOffices = new ArrayList<OfficeLookup>();
|
||||
|
||||
public ClientData() {
|
||||
//
|
||||
@@ -133,11 +133,11 @@ public class ClientData implements Serializable {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public List<OfficeData> getAllowedOffices() {
|
||||
public List<OfficeLookup> getAllowedOffices() {
|
||||
return allowedOffices;
|
||||
}
|
||||
|
||||
public void setAllowedOffices(List<OfficeData> allowedOffices) {
|
||||
public void setAllowedOffices(List<OfficeLookup> allowedOffices) {
|
||||
this.allowedOffices = allowedOffices;
|
||||
}
|
||||
}
|
||||
@@ -134,7 +134,6 @@ $(document).ready(function() {
|
||||
argArray[argArrayIndex] = this.value;
|
||||
argArrayIndex++;
|
||||
});
|
||||
console.log(argArray);
|
||||
// hardcoded support for six arguments
|
||||
errorObj.message = jQuery.i18n.prop(this.userMessageGlobalisationCode, argArray[0], argArray[1], argArray[2], argArray[3], argArray[4], argArray[5]);
|
||||
errorObj.value = this.value;
|
||||
@@ -211,7 +210,6 @@ $(document).ready(function() {
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
beforeSend: function(xhr) {
|
||||
console.log("base64: " + base64);
|
||||
xhr.setRequestHeader("Authorization", "Basic " + base64);
|
||||
},
|
||||
success: function(data, textStatus, jqXHR) {
|
||||
@@ -244,6 +242,10 @@ $(document).ready(function() {
|
||||
dataType: 'json',
|
||||
data: newFormData,
|
||||
success: saveSuccessFunction,
|
||||
cache: false,
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader("Authorization", "Basic " + base64);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
handleXhrError(jqXHR, textStatus, errorThrown, "#formErrorsTemplate", "#formerrors");
|
||||
}
|
||||
|
||||
@@ -41,6 +41,21 @@ public class DataValidatorBuilder {
|
||||
this.ignoreNullValue = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public DataValidatorBuilder andNotBlank(String linkedParameterName, String linkedValue) {
|
||||
if (value == null && linkedValue == null && ignoreNullValue) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(linkedValue)) {
|
||||
StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(linkedParameterName).append(".cannot.be.empty.when.").append(parameter).append(".is.populated");
|
||||
StringBuilder defaultEnglishMessage = new StringBuilder("The parameter ").append(linkedParameterName).append(" cannot be empty when ").append(parameter).append(" is populated.");
|
||||
ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), linkedParameterName, linkedValue, value);
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public DataValidatorBuilder equalToParameter(String linkedParameterName, Object linkedValue) {
|
||||
if (value == null && linkedValue == null && ignoreNullValue) {
|
||||
@@ -161,10 +176,31 @@ public class DataValidatorBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public void inValidValue(String parameterValueCode, Object invalidValue) {
|
||||
public DataValidatorBuilder inValidValue(String parameterValueCode, Object invalidValue) {
|
||||
StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter).append(".invalid.").append(parameterValueCode);
|
||||
StringBuilder defaultEnglishMessage = new StringBuilder("The parameter ").append(parameter).append(" has an invalid value.");
|
||||
ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), parameter, invalidValue);
|
||||
dataValidationErrors.add(error);
|
||||
dataValidationErrors.add(error);
|
||||
return this;
|
||||
}
|
||||
|
||||
public DataValidatorBuilder mustBeBlankWhenParameterProvided(String parameterName, Object parameterValue) {
|
||||
if (value == null && ignoreNullValue) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (value == null && parameterValue != null) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (value != null && StringUtils.isBlank(value.toString()) && parameterValue != null && StringUtils.isNotBlank(parameterValue.toString())) {
|
||||
return this;
|
||||
}
|
||||
|
||||
StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(resource).append(".").append(parameter).append(".cannot.also.be.provided.when.").append(parameterName).append(".is.populated");
|
||||
StringBuilder defaultEnglishMessage = new StringBuilder("The parameter ").append(parameter).append(" cannot also be provided when ").append(parameterName).append(" is populated.");
|
||||
ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), parameter, value, parameterName, parameterValue);
|
||||
dataValidationErrors.add(error);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
+46
-30
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosng.data.ApiParameterError;
|
||||
import org.mifosng.data.command.ClientCommand;
|
||||
import org.mifosng.platform.DataValidatorBuilder;
|
||||
import org.mifosng.platform.exceptions.PlatformApiDataValidationException;
|
||||
|
||||
public class ClientCommandValidator {
|
||||
@@ -15,46 +16,61 @@ public class ClientCommandValidator {
|
||||
public ClientCommandValidator(ClientCommand command) {
|
||||
this.command = command;
|
||||
}
|
||||
|
||||
public void validateForUpdate() {
|
||||
|
||||
}
|
||||
|
||||
public void validate() {
|
||||
public void validateForCreate() {
|
||||
List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
|
||||
|
||||
if (command.getOfficeId() == null || command.getOfficeId().equals(Long.valueOf(-1))) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.office.cannot.be.blank", "The parameter officeId cannot be blank.", "officeId");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("client");
|
||||
|
||||
if (StringUtils.isNotBlank(command.getFullname()) && (StringUtils.isNotBlank(command.getFirstname()) || StringUtils.isNotBlank(command.getLastname()))) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.fullname.cannot.entered.when.firstname.or.lastname.entered", "The parameter fullname cannot be blank.", "fullname");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(command.getFirstname()) && StringUtils.isBlank(command.getLastname()) ) {
|
||||
|
||||
if (StringUtils.isBlank(command.getFullname())) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.fullname.must.be.provide.or.firstname.lastname", "The parameter fullname cannot be blank or firstName and lastName must be both provided.", "fullname");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
if (StringUtils.isNotBlank(command.getFullname())) {
|
||||
baseDataValidator.reset().parameter("firstname").value(command.getFirstname()).mustBeBlankWhenParameterProvided("fullname", command.getFullname());
|
||||
baseDataValidator.reset().parameter("lastname").value(command.getLastname()).mustBeBlankWhenParameterProvided("fullname", command.getFullname());
|
||||
} else {
|
||||
if (StringUtils.isBlank(command.getFirstname())) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.firstname.cannot.be.blank", "The parameter firstname cannot be blank.", "firstname");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(command.getLastname())) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.lastname.cannot.be.blank", "The parameter lastname cannot be blank.", "lastname");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
baseDataValidator.reset().parameter("firstname").value(command.getFirstname()).notBlank();//.andNotBlank("lastname", command.getLastname());
|
||||
baseDataValidator.reset().parameter("lastname").value(command.getLastname()).notBlank();//.andNotBlank("firstname", command.getFirstname());
|
||||
}
|
||||
|
||||
if (command.getJoiningDate() == null) {
|
||||
ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.joining.date.cannot.be.blank", "The parameter joiningDate cannot be blank.", "joiningDate");
|
||||
dataValidationErrors.add(error);
|
||||
}
|
||||
baseDataValidator.reset().parameter("openingDateFormatted").value(command.getJoiningDateFormatted()).notBlank();
|
||||
baseDataValidator.reset().parameter("externalId").value(command.getExternalId()).notExceedingLengthOf(100);
|
||||
baseDataValidator.reset().parameter("officeId").value(command.getOfficeId()).notNull().greaterThanZero();
|
||||
|
||||
if (!dataValidationErrors.isEmpty()) {
|
||||
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
|
||||
}
|
||||
|
||||
// if (StringUtils.isNotBlank(command.getFullname()) && (StringUtils.isNotBlank(command.getFirstname()) || StringUtils.isNotBlank(command.getLastname()))) {
|
||||
// ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.fullname.cannot.entered.when.firstname.or.lastname.entered", "The parameter fullname cannot be blank.", "fullname");
|
||||
// dataValidationErrors.add(error);
|
||||
// }
|
||||
// if (StringUtils.isBlank(command.getFirstname()) && StringUtils.isBlank(command.getLastname()) ) {
|
||||
//
|
||||
// if (StringUtils.isBlank(command.getFullname())) {
|
||||
// ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.fullname.must.be.provide.or.firstname.lastname", "The parameter fullname cannot be blank or firstName and lastName must be both provided.", "fullname");
|
||||
// dataValidationErrors.add(error);
|
||||
// }
|
||||
// } else {
|
||||
// if (StringUtils.isBlank(command.getFirstname())) {
|
||||
// ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.firstname.cannot.be.blank", "The parameter firstname cannot be blank.", "firstname");
|
||||
// dataValidationErrors.add(error);
|
||||
// }
|
||||
//
|
||||
// if (StringUtils.isBlank(command.getLastname())) {
|
||||
// ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.lastname.cannot.be.blank", "The parameter lastname cannot be blank.", "lastname");
|
||||
// dataValidationErrors.add(error);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (command.getJoiningDate() == null) {
|
||||
// ApiParameterError error = ApiParameterError.parameterError("validation.msg.client.joining.date.cannot.be.blank", "The parameter joiningDate cannot be blank.", "joiningDate");
|
||||
// dataValidationErrors.add(error);
|
||||
// }
|
||||
//
|
||||
// if (!dataValidationErrors.isEmpty()) {
|
||||
// throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-5
@@ -17,6 +17,7 @@ import org.mifosng.data.ClientLoanAccountSummaryCollectionData;
|
||||
import org.mifosng.data.ClientLoanAccountSummaryData;
|
||||
import org.mifosng.data.NoteData;
|
||||
import org.mifosng.data.OfficeData;
|
||||
import org.mifosng.data.OfficeLookup;
|
||||
import org.mifosng.platform.exceptions.PlatformResourceNotFoundException;
|
||||
import org.mifosng.platform.organisation.domain.Organisation;
|
||||
import org.mifosng.platform.organisation.service.OfficeReadPlatformService;
|
||||
@@ -101,17 +102,17 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
||||
|
||||
AppUser currentUser = context.authenticatedUser();
|
||||
|
||||
List<OfficeData> offices = new ArrayList<OfficeData>(officeReadPlatformService.retrieveAllOffices());
|
||||
List<OfficeLookup> offices = new ArrayList<OfficeLookup>(officeReadPlatformService.retrieveAllOfficesForLookup());
|
||||
|
||||
ClientData clientData = new ClientData();
|
||||
clientData.setOfficeId(currentUser.getOffice().getId());
|
||||
clientData.setOrganisationId(currentUser.getOrganisation().getId());
|
||||
clientData.setAllowedOffices(offices);
|
||||
|
||||
clientData.setDisplayName("");
|
||||
clientData.setFirstname("");
|
||||
clientData.setLastname("");
|
||||
clientData.setId(Long.valueOf(-1));
|
||||
// clientData.setDisplayName("");
|
||||
// clientData.setFirstname("");
|
||||
// clientData.setLastname("");
|
||||
// clientData.setId(Long.valueOf(-1));
|
||||
clientData.setJoinedDate(new LocalDate());
|
||||
|
||||
return clientData;
|
||||
|
||||
+5
-4
@@ -1,6 +1,7 @@
|
||||
package org.mifosng.platform.client.service;
|
||||
|
||||
import static org.mifosng.platform.Specifications.*;
|
||||
import static org.mifosng.platform.Specifications.clientsThatMatch;
|
||||
import static org.mifosng.platform.Specifications.officesThatMatch;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosng.data.EntityIdentifier;
|
||||
@@ -42,7 +43,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
||||
AppUser currentUser = context.authenticatedUser();
|
||||
|
||||
ClientCommandValidator validator = new ClientCommandValidator(command);
|
||||
validator.validate();
|
||||
validator.validateForCreate();
|
||||
|
||||
Office clientOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getOfficeId()));
|
||||
|
||||
@@ -66,8 +67,8 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
||||
|
||||
AppUser currentUser = context.authenticatedUser();
|
||||
|
||||
//EnrollClientCommandValidator validator = new EnrollClientCommandValidator(command);
|
||||
//validator.validate();
|
||||
ClientCommandValidator validator = new ClientCommandValidator(command);
|
||||
validator.validateForUpdate();
|
||||
|
||||
Office clientOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getOfficeId()));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user