Restricting existing guarantor as new guarantor for same loan

This commit is contained in:
mifoscontributer
2013-07-12 11:42:13 +05:30
parent b29d9423dd
commit 9ee36e42f5
5 changed files with 41 additions and 8 deletions
@@ -626,12 +626,12 @@ public class DataValidatorBuilder {
public DataValidatorBuilder validatePhoneNumber() { public DataValidatorBuilder validatePhoneNumber() {
if (this.value == null && this.ignoreNullValue) { return this; } if (this.value == null && this.ignoreNullValue) { return this; }
boolean validationErr = true; boolean validationErr = true;
String regex = "^\\+?[0-9. ()-]{0,25}$"; // supports numbers, /*
// parentheses(), hyphens and * supports numbers, parentheses(), hyphens and may contain + sign in
// may contain + sign in the * the beginning and can contain whitespaces in between and length
// beginning and can contain * allowed is 0-25 chars.
// whitespaces in between and */
// length allowed is 0-25 chars. String regex = "^\\+?[0-9. ()-]{0,25}$";
Pattern pattern = Pattern.compile(regex); Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(this.value.toString()); Matcher matcher = pattern.matcher(this.value.toString());
if (matcher.matches()) { if (matcher.matches()) {
@@ -146,9 +146,9 @@ public class GuarantorCommand {
private void validateNonMandatoryFieldsForMaxLength(DataValidatorBuilder baseDataValidator) { private void validateNonMandatoryFieldsForMaxLength(DataValidatorBuilder baseDataValidator) {
// validate non mandatory fields for length // validate non mandatory fields for length
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.ADDRESS_LINE_1.getValue()).value(this.addressLine1).ignoreIfNull() baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.ADDRESS_LINE_1.getValue()).value(this.addressLine1).ignoreIfNull()
.notExceedingLengthOf(50); .notExceedingLengthOf(500);
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.ADDRESS_LINE_2.getValue()).value(this.addressLine2).ignoreIfNull() baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.ADDRESS_LINE_2.getValue()).value(this.addressLine2).ignoreIfNull()
.notExceedingLengthOf(50); .notExceedingLengthOf(500);
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.CITY.getValue()).value(this.city).ignoreIfNull() baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.CITY.getValue()).value(this.city).ignoreIfNull()
.notExceedingLengthOf(50); .notExceedingLengthOf(50);
baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.STATE.getValue()).value(this.state).ignoreIfNull() baseDataValidator.reset().parameter(GUARANTOR_JSON_INPUT_PARAMS.STATE.getValue()).value(this.state).ignoreIfNull()
@@ -181,4 +181,8 @@ public class GuarantorCommand {
public Long getEntityId() { public Long getEntityId() {
return this.entityId; return this.entityId;
} }
public Integer getGuarantorTypeId() {
return this.guarantorTypeId;
}
} }
@@ -302,4 +302,8 @@ public class Guarantor extends AbstractPersistable<Long> {
private void updateExistingEntityToNull() { private void updateExistingEntityToNull() {
this.entityId = null; this.entityId = null;
} }
public Integer getGurantorType() {
return this.gurantorType;
}
} }
@@ -65,4 +65,12 @@ public enum GuarantorType {
return name().toString(); return name().toString();
} }
public boolean isCustomer() {
return this.value.equals(GuarantorType.CUSTOMER.getValue());
}
public boolean isStaff() {
return this.value.equals(GuarantorType.STAFF.getValue());
}
} }
@@ -23,6 +23,7 @@ import org.mifosplatform.portfolio.loanaccount.guarantor.GuarantorConstants.GUAR
import org.mifosplatform.portfolio.loanaccount.guarantor.command.GuarantorCommand; import org.mifosplatform.portfolio.loanaccount.guarantor.command.GuarantorCommand;
import org.mifosplatform.portfolio.loanaccount.guarantor.domain.Guarantor; import org.mifosplatform.portfolio.loanaccount.guarantor.domain.Guarantor;
import org.mifosplatform.portfolio.loanaccount.guarantor.domain.GuarantorRepository; import org.mifosplatform.portfolio.loanaccount.guarantor.domain.GuarantorRepository;
import org.mifosplatform.portfolio.loanaccount.guarantor.domain.GuarantorType;
import org.mifosplatform.portfolio.loanaccount.guarantor.exception.DuplicateGuarantorException; import org.mifosplatform.portfolio.loanaccount.guarantor.exception.DuplicateGuarantorException;
import org.mifosplatform.portfolio.loanaccount.guarantor.exception.GuarantorNotFoundException; import org.mifosplatform.portfolio.loanaccount.guarantor.exception.GuarantorNotFoundException;
import org.mifosplatform.portfolio.loanaccount.guarantor.exception.InvalidGuarantorException; import org.mifosplatform.portfolio.loanaccount.guarantor.exception.InvalidGuarantorException;
@@ -126,6 +127,22 @@ public class GuarantorWritePlatformServiceJpaRepositoryIImpl implements Guaranto
guarantorForUpdate.updateClientRelationshipType(clientRelationshipType); guarantorForUpdate.updateClientRelationshipType(clientRelationshipType);
} }
final List<Guarantor> existGuarantorList = this.guarantorRepository.findByLoan(loan);
final Integer guarantorTypeId = guarantorCommand.getGuarantorTypeId();
final GuarantorType guarantorType = GuarantorType.fromInt(guarantorTypeId);
if (guarantorType.isCustomer() || guarantorType.isStaff()) {
final Long entityId = guarantorCommand.getEntityId();
for (final Guarantor guarantor : existGuarantorList) {
if (guarantor.getLoanId() == loanId && guarantor.getEntityId() == entityId
&& guarantor.getGurantorType() == guarantorTypeId && !guarantorForUpdate.getId().equals(guarantor.getId())) {
String defaultUserMessage = this.clientRepositoryWrapper.findOneWithNotFoundDetection(entityId).getDisplayName();
defaultUserMessage = defaultUserMessage + " is already exist as a guarantor for this loan";
final 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)
|| changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.GUARANTOR_TYPE_ID)) { || changesOnly.containsKey(GUARANTOR_JSON_INPUT_PARAMS.GUARANTOR_TYPE_ID)) {
validateGuarantorBusinessRules(guarantorForUpdate); validateGuarantorBusinessRules(guarantorForUpdate);