Edit or Update loan guarantor
This commit is contained in:
+28
@@ -9,6 +9,8 @@ import java.math.BigDecimal;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import net.fortuna.ical4j.model.ValidationException;
|
import net.fortuna.ical4j.model.ValidationException;
|
||||||
import net.fortuna.ical4j.model.property.RRule;
|
import net.fortuna.ical4j.model.property.RRule;
|
||||||
@@ -620,4 +622,30 @@ public class DataValidatorBuilder {
|
|||||||
public DataValidatorBuilder validateForBooleanValue() {
|
public DataValidatorBuilder validateForBooleanValue() {
|
||||||
return validateStringFor("TRUE" + VALID_INPUT_SEPERATOR + "FALSE");
|
return validateStringFor("TRUE" + VALID_INPUT_SEPERATOR + "FALSE");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DataValidatorBuilder validatePhoneNumber() {
|
||||||
|
if (this.value == null && this.ignoreNullValue) { return this; }
|
||||||
|
boolean validationErr = true;
|
||||||
|
String regex = "^\\+?[0-9. ()-]{0,25}$"; // supports numbers,
|
||||||
|
// parentheses(), hyphens and
|
||||||
|
// may contain + sign in the
|
||||||
|
// beginning and can contain
|
||||||
|
// whitespaces in between and
|
||||||
|
// length allowed is 0-25 chars.
|
||||||
|
Pattern pattern = Pattern.compile(regex);
|
||||||
|
Matcher matcher = pattern.matcher(this.value.toString());
|
||||||
|
if (matcher.matches()) {
|
||||||
|
validationErr = false;
|
||||||
|
}
|
||||||
|
if (validationErr) {
|
||||||
|
final StringBuilder validationErrorCode = new StringBuilder("validation.msg.").append(this.resource).append(".")
|
||||||
|
.append(this.parameter).append(".format.is.invalid");
|
||||||
|
final StringBuilder defaultEnglishMessage = new StringBuilder("The ").append(this.resource).append(this.parameter)
|
||||||
|
.append(" is in invalid format, should contain '-','+','()' and numbers only.");
|
||||||
|
final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(),
|
||||||
|
defaultEnglishMessage.toString(), this.parameter, this.value);
|
||||||
|
this.dataValidationErrors.add(error);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -158,9 +158,9 @@ public class GuarantorCommand {
|
|||||||
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.COUNTRY.getValue()).value(this.country).ignoreIfNull()
|
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.COUNTRY.getValue()).value(this.country).ignoreIfNull()
|
||||||
.notExceedingLengthOf(50);
|
.notExceedingLengthOf(50);
|
||||||
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.MOBILE_NUMBER.getValue()).value(this.mobileNumber).ignoreIfNull()
|
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.MOBILE_NUMBER.getValue()).value(this.mobileNumber).ignoreIfNull()
|
||||||
.notExceedingLengthOf(20);
|
.notExceedingLengthOf(20).validatePhoneNumber();
|
||||||
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.PHONE_NUMBER.getValue()).value(this.housePhoneNumber)
|
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.PHONE_NUMBER.getValue()).value(this.housePhoneNumber)
|
||||||
.ignoreIfNull().notExceedingLengthOf(20);
|
.ignoreIfNull().notExceedingLengthOf(20).validatePhoneNumber();
|
||||||
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.COMMENT.getValue()).value(this.comment).ignoreIfNull()
|
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.COMMENT.getValue()).value(this.comment).ignoreIfNull()
|
||||||
.notExceedingLengthOf(500);
|
.notExceedingLengthOf(500);
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-2
@@ -144,7 +144,6 @@ public class Guarantor extends AbstractPersistable<Long> {
|
|||||||
|
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.GUARANTOR_TYPE_ID.getValue(), this.gurantorType, true);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.GUARANTOR_TYPE_ID.getValue(), this.gurantorType, true);
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.CLIENT_RELATIONSHIP_TYPE_ID.getValue(), 0, true);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.CLIENT_RELATIONSHIP_TYPE_ID.getValue(), 0, true);
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.ENTITY_ID.getValue(), this.entityId);
|
|
||||||
|
|
||||||
if (this.isExternalGuarantor()) {
|
if (this.isExternalGuarantor()) {
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.FIRSTNAME.getValue(), this.firstname);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.FIRSTNAME.getValue(), this.firstname);
|
||||||
@@ -159,6 +158,10 @@ public class Guarantor extends AbstractPersistable<Long> {
|
|||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.PHONE_NUMBER.getValue(), this.housePhoneNumber);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.PHONE_NUMBER.getValue(), this.housePhoneNumber);
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.MOBILE_NUMBER.getValue(), this.mobilePhoneNumber);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.MOBILE_NUMBER.getValue(), this.mobilePhoneNumber);
|
||||||
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.COMMENT.getValue(), this.comment);
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.COMMENT.getValue(), this.comment);
|
||||||
|
updateExistingEntityToNull();
|
||||||
|
} else {
|
||||||
|
handlePropertyUpdate(command, actualChanges, GUARANTOR_JSON_INPUT_PARAMS.ENTITY_ID.getValue(), this.entityId);
|
||||||
|
updateExternalGuarantorFieldsToNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
return actualChanges;
|
return actualChanges;
|
||||||
@@ -277,8 +280,26 @@ public class Guarantor extends AbstractPersistable<Long> {
|
|||||||
return this.clientRelationshipType;
|
return this.clientRelationshipType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClientRelationshipType(CodeValue clientRelationshipType) {
|
public void updateClientRelationshipType(CodeValue clientRelationshipType) {
|
||||||
this.clientRelationshipType = clientRelationshipType;
|
this.clientRelationshipType = clientRelationshipType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateExternalGuarantorFieldsToNull() {
|
||||||
|
this.firstname = null;
|
||||||
|
this.lastname = null;
|
||||||
|
this.dateOfBirth = null;
|
||||||
|
this.addressLine1 = null;
|
||||||
|
this.addressLine2 = null;
|
||||||
|
this.city = null;
|
||||||
|
this.state = null;
|
||||||
|
this.country = null;
|
||||||
|
this.zip = null;
|
||||||
|
this.housePhoneNumber = null;
|
||||||
|
this.mobilePhoneNumber = null;
|
||||||
|
this.comment = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateExistingEntityToNull() {
|
||||||
|
this.entityId = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+2
-14
@@ -116,26 +116,14 @@ public class GuarantorWritePlatformServiceJpaRepositoryIImpl implements Guaranto
|
|||||||
|
|
||||||
final Map<String, Object> changesOnly = guarantorForUpdate.update(command);
|
final Map<String, Object> changesOnly = guarantorForUpdate.update(command);
|
||||||
|
|
||||||
if (changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.CLIENT_RELATIONSHIP_TYPE_ID)) {
|
if (changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.CLIENT_RELATIONSHIP_TYPE_ID.getValue())) {
|
||||||
Long clientRelationshipId = guarantorCommand.getClientRelationshipTypeId();
|
Long clientRelationshipId = guarantorCommand.getClientRelationshipTypeId();
|
||||||
CodeValue clientRelationshipType = null;
|
CodeValue clientRelationshipType = null;
|
||||||
if (clientRelationshipId != null) {
|
if (clientRelationshipId != null) {
|
||||||
clientRelationshipType = this.codeValueRepositoryWrapper.findOneByCodeNameAndIdWithNotFoundDetection(
|
clientRelationshipType = this.codeValueRepositoryWrapper.findOneByCodeNameAndIdWithNotFoundDetection(
|
||||||
GuarantorConstants.GUARANTOR_RELATIONSHIP_CODE_NAME, clientRelationshipId);
|
GuarantorConstants.GUARANTOR_RELATIONSHIP_CODE_NAME, clientRelationshipId);
|
||||||
}
|
}
|
||||||
guarantorForUpdate.setClientRelationshipType(clientRelationshipType);
|
guarantorForUpdate.updateClientRelationshipType(clientRelationshipType);
|
||||||
}
|
|
||||||
|
|
||||||
List<Guarantor> existGuarantorList = this.guarantorRepository.findByLoan(loan);
|
|
||||||
Long entityId = guarantorCommand.getEntityId();
|
|
||||||
|
|
||||||
for (Guarantor guarantor : existGuarantorList) {
|
|
||||||
if (guarantor.getLoanId() == loanId && guarantor.getEntityId() == entityId) {
|
|
||||||
String defaultUserMessage = this.clientRepositoryWrapper.findOneWithNotFoundDetection(entityId).getDisplayName();
|
|
||||||
defaultUserMessage = defaultUserMessage + " is already exist as a guarantor for this loan";
|
|
||||||
String action = loan.client() != null ? "client.guarantor" : "group.guarantor";
|
|
||||||
throw new DuplicateGuarantorException(action, "is.already.exist.same.loan", defaultUserMessage, entityId, loanId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.ENTITY_ID)
|
if (changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.ENTITY_ID)
|
||||||
|
|||||||
Reference in New Issue
Block a user