FINERACT-2317: Add support for modifying loan approved amounts with validation and history tracking

This commit is contained in:
mark.vituska
2025-07-21 17:13:51 +02:00
committed by Adam Saghy
parent c84ba089f0
commit 6d65f07924
30 changed files with 1348 additions and 12 deletions
@@ -3876,4 +3876,13 @@ public class CommandWrapperBuilder {
this.href = "/loans/" + loanId + "/transactions/template?command=buyDownFee";
return this;
}
public CommandWrapperBuilder updateLoanApprovedAmount(final Long loanId) {
this.actionName = "UPDATE";
this.entityName = "LOAN_APPROVED_AMOUNT";
this.entityId = loanId;
this.loanId = loanId;
this.href = "/loans/" + loanId;
return this;
}
}
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.function.Consumer;
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
import org.apache.fineract.infrastructure.core.exception.GeneralPlatformDomainRuleException;
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
public final class Validator {
@@ -30,14 +31,28 @@ public final class Validator {
private Validator() {}
public static void validateOrThrow(String resource, Consumer<DataValidatorBuilder> baseDataValidator) {
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors).resource(resource);
baseDataValidator.accept(dataValidatorBuilder);
final List<ApiParameterError> dataValidationErrors = getApiParameterErrors(resource, baseDataValidator);
if (!dataValidationErrors.isEmpty()) {
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.",
dataValidationErrors);
}
}
public static void validateOrThrowDomainViolation(String resource, Consumer<DataValidatorBuilder> baseDataValidator) {
final List<ApiParameterError> dataValidationErrors = getApiParameterErrors(resource, baseDataValidator);
if (!dataValidationErrors.isEmpty()) {
throw new GeneralPlatformDomainRuleException("validation.msg.validation.errors.exist", "Validation errors exist.",
dataValidationErrors.toArray(new Object[0]));
}
}
private static List<ApiParameterError> getApiParameterErrors(String resource, Consumer<DataValidatorBuilder> baseDataValidator) {
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors).resource(resource);
baseDataValidator.accept(dataValidatorBuilder);
return dataValidationErrors;
}
}