MIFOSX-232: align loan account api data with loan product data.
This commit is contained in:
+47
-27
@@ -153,27 +153,6 @@ public class LoansApiResource {
|
|||||||
|
|
||||||
// template
|
// template
|
||||||
final Collection<LoanProductData> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
final Collection<LoanProductData> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||||
final Collection<EnumOptionData> loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
|
||||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions = dropdownReadPlatformService
|
|
||||||
.retrieveRepaymentFrequencyTypeOptions();
|
|
||||||
final Collection<EnumOptionData> interestRateFrequencyTypeOptions = dropdownReadPlatformService
|
|
||||||
.retrieveInterestRateFrequencyTypeOptions();
|
|
||||||
|
|
||||||
final Collection<EnumOptionData> amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
|
||||||
final Collection<EnumOptionData> interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
|
||||||
final Collection<EnumOptionData> interestCalculationPeriodTypeOptions = dropdownReadPlatformService
|
|
||||||
.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
|
||||||
|
|
||||||
final Collection<FundData> fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
|
||||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = this.dropdownReadPlatformService
|
|
||||||
.retreiveTransactionProcessingStrategies();
|
|
||||||
final Collection<CodeValueData> loanPurposeOptions = this.codeValueReadPlatformService.retrieveCodeValuesByCode("LoanPurpose");
|
|
||||||
final Collection<CodeValueData> loanCollateralOptions = this.codeValueReadPlatformService
|
|
||||||
.retrieveCodeValuesByCode("LoanCollateral");
|
|
||||||
|
|
||||||
final boolean feeChargesOnly = false;
|
|
||||||
final Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges(feeChargesOnly);
|
|
||||||
final ChargeData chargeTemplate = this.loanChargeReadPlatformService.retrieveLoanChargeTemplate();
|
|
||||||
|
|
||||||
// associations
|
// associations
|
||||||
final LoanScheduleData repaymentSchedule = null;
|
final LoanScheduleData repaymentSchedule = null;
|
||||||
@@ -181,12 +160,50 @@ public class LoansApiResource {
|
|||||||
final Collection<LoanCollateralData> collateral = null;
|
final Collection<LoanCollateralData> collateral = null;
|
||||||
final Collection<GuarantorData> guarantors = null;
|
final Collection<GuarantorData> guarantors = null;
|
||||||
|
|
||||||
|
// options
|
||||||
|
Collection<EnumOptionData> loanTermFrequencyTypeOptions = null;
|
||||||
|
Collection<EnumOptionData> repaymentFrequencyTypeOptions = null;
|
||||||
|
Collection<EnumOptionData> interestRateFrequencyTypeOptions = null;
|
||||||
|
Collection<EnumOptionData> amortizationTypeOptions = null;
|
||||||
|
Collection<EnumOptionData> interestTypeOptions = null;
|
||||||
|
Collection<EnumOptionData> interestCalculationPeriodTypeOptions = null;
|
||||||
|
Collection<FundData> fundOptions = null;
|
||||||
|
Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = null;
|
||||||
|
Collection<StaffData> allowedLoanOfficers = null;
|
||||||
|
Collection<CodeValueData> loanPurposeOptions = null;
|
||||||
|
Collection<CodeValueData> loanCollateralOptions = null;
|
||||||
|
Collection<ChargeData> chargeOptions = null;
|
||||||
|
ChargeData chargeTemplate = null;
|
||||||
|
|
||||||
|
if (productId != null) {
|
||||||
|
loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||||
|
repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||||
|
interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||||
|
|
||||||
|
amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
||||||
|
interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
||||||
|
interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
||||||
|
|
||||||
|
fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
||||||
|
repaymentStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||||
|
loanPurposeOptions = this.codeValueReadPlatformService.retrieveCodeValuesByCode("LoanPurpose");
|
||||||
|
loanCollateralOptions = this.codeValueReadPlatformService.retrieveCodeValuesByCode("LoanCollateral");
|
||||||
|
|
||||||
|
final boolean feeChargesOnly = false;
|
||||||
|
chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges(feeChargesOnly);
|
||||||
|
// chargeTemplate =
|
||||||
|
// this.loanChargeReadPlatformService.retrieveLoanChargeTemplate();
|
||||||
|
}
|
||||||
|
|
||||||
LoanAccountData newLoanAccount = null;
|
LoanAccountData newLoanAccount = null;
|
||||||
if (clientId != null) {
|
if (clientId != null) {
|
||||||
final LoanAccountData loanBasicDetails = this.loanReadPlatformService.retrieveClientAndProductDetails(clientId, productId);
|
final LoanAccountData loanBasicDetails = this.loanReadPlatformService.retrieveTemplateWithClientAndProductDetails(clientId,
|
||||||
|
productId);
|
||||||
final Collection<LoanChargeData> charges = loanBasicDetails.charges();
|
final Collection<LoanChargeData> charges = loanBasicDetails.charges();
|
||||||
final Long officeId = loanBasicDetails.officeId();
|
if (productId != null) {
|
||||||
final Collection<StaffData> allowedLoanOfficers = this.staffReadPlatformService.retrieveAllLoanOfficersByOffice(officeId);
|
final Long officeId = loanBasicDetails.officeId();
|
||||||
|
allowedLoanOfficers = this.staffReadPlatformService.retrieveAllLoanOfficersByOffice(officeId);
|
||||||
|
}
|
||||||
|
|
||||||
newLoanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments, charges,
|
newLoanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments, charges,
|
||||||
collateral, guarantors, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
collateral, guarantors, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||||
@@ -195,10 +212,13 @@ public class LoansApiResource {
|
|||||||
loanPurposeOptions, loanCollateralOptions);
|
loanPurposeOptions, loanCollateralOptions);
|
||||||
|
|
||||||
} else if (groupId != null) {
|
} else if (groupId != null) {
|
||||||
final LoanAccountData loanBasicDetails = this.loanReadPlatformService.retrieveGroupAndProductDetails(groupId, productId);
|
final LoanAccountData loanBasicDetails = this.loanReadPlatformService.retrieveTemplateWithGroupAndProductDetails(groupId,
|
||||||
|
productId);
|
||||||
final Collection<LoanChargeData> charges = loanBasicDetails.charges();
|
final Collection<LoanChargeData> charges = loanBasicDetails.charges();
|
||||||
final Long officeId = loanBasicDetails.officeId();
|
if (productId != null) {
|
||||||
final Collection<StaffData> allowedLoanOfficers = this.staffReadPlatformService.retrieveAllLoanOfficersByOffice(officeId);
|
final Long officeId = loanBasicDetails.officeId();
|
||||||
|
allowedLoanOfficers = this.staffReadPlatformService.retrieveAllLoanOfficersByOffice(officeId);
|
||||||
|
}
|
||||||
|
|
||||||
newLoanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments, charges,
|
newLoanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments, charges,
|
||||||
collateral, guarantors, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
collateral, guarantors, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||||
|
|||||||
+68
-37
@@ -22,6 +22,7 @@ import org.mifosplatform.portfolio.loanaccount.guarantor.data.GuarantorData;
|
|||||||
import org.mifosplatform.portfolio.loanaccount.loanschedule.data.LoanScheduleData;
|
import org.mifosplatform.portfolio.loanaccount.loanschedule.data.LoanScheduleData;
|
||||||
import org.mifosplatform.portfolio.loanproduct.data.LoanProductData;
|
import org.mifosplatform.portfolio.loanproduct.data.LoanProductData;
|
||||||
import org.mifosplatform.portfolio.loanproduct.data.TransactionProcessingStrategyData;
|
import org.mifosplatform.portfolio.loanproduct.data.TransactionProcessingStrategyData;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Immutable data object representing loan account data.
|
* Immutable data object representing loan account data.
|
||||||
@@ -30,10 +31,16 @@ import org.mifosplatform.portfolio.loanproduct.data.TransactionProcessingStrateg
|
|||||||
public class LoanAccountData {
|
public class LoanAccountData {
|
||||||
|
|
||||||
// basic loan details
|
// basic loan details
|
||||||
|
|
||||||
|
// identity
|
||||||
private final Long id;
|
private final Long id;
|
||||||
private final String accountNo;
|
private final String accountNo;
|
||||||
private final LoanStatusEnumData status;
|
|
||||||
private final String externalId;
|
private final String externalId;
|
||||||
|
|
||||||
|
// status
|
||||||
|
private final LoanStatusEnumData status;
|
||||||
|
|
||||||
|
// related to
|
||||||
private final Long clientId;
|
private final Long clientId;
|
||||||
private final String clientName;
|
private final String clientName;
|
||||||
private final Long clientOfficeId;
|
private final Long clientOfficeId;
|
||||||
@@ -49,27 +56,31 @@ public class LoanAccountData {
|
|||||||
private final String loanPurposeName;
|
private final String loanPurposeName;
|
||||||
private final Long loanOfficerId;
|
private final Long loanOfficerId;
|
||||||
private final String loanOfficerName;
|
private final String loanOfficerName;
|
||||||
|
|
||||||
|
// terms
|
||||||
private final CurrencyData currency;
|
private final CurrencyData currency;
|
||||||
private final BigDecimal principal;
|
private final BigDecimal principal;
|
||||||
private final BigDecimal inArrearsTolerance;
|
|
||||||
private final Integer termFrequency;
|
private final Integer termFrequency;
|
||||||
private final EnumOptionData termPeriodFrequencyType;
|
private final EnumOptionData termPeriodFrequencyType;
|
||||||
private final Integer numberOfRepayments;
|
private final Integer numberOfRepayments;
|
||||||
private final Integer repaymentEvery;
|
private final Integer repaymentEvery;
|
||||||
private final EnumOptionData repaymentFrequencyType;
|
private final EnumOptionData repaymentFrequencyType;
|
||||||
private final Long transactionProcessingStrategyId;
|
|
||||||
private final EnumOptionData amortizationType;
|
|
||||||
private final BigDecimal interestRatePerPeriod;
|
private final BigDecimal interestRatePerPeriod;
|
||||||
private final EnumOptionData interestRateFrequencyType;
|
private final EnumOptionData interestRateFrequencyType;
|
||||||
private final BigDecimal annualInterestRate;
|
private final BigDecimal annualInterestRate;
|
||||||
private final EnumOptionData interestType;
|
|
||||||
private final EnumOptionData interestCalculationPeriodType;
|
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
|
private final EnumOptionData amortizationType;
|
||||||
|
private final EnumOptionData interestType;
|
||||||
|
private final EnumOptionData interestCalculationPeriodType;
|
||||||
|
private final BigDecimal inArrearsTolerance;
|
||||||
|
private final Long transactionProcessingStrategyId;
|
||||||
private final LocalDate expectedFirstRepaymentOnDate;
|
private final LocalDate expectedFirstRepaymentOnDate;
|
||||||
private final LocalDate interestChargedFromDate;
|
private final LocalDate interestChargedFromDate;
|
||||||
|
|
||||||
// timeline
|
// timeline
|
||||||
private final LoanApplicationTimelineData timeline;
|
private final LoanApplicationTimelineData timeline;
|
||||||
|
|
||||||
// totals
|
// totals
|
||||||
private final LoanSummaryData summary;
|
private final LoanSummaryData summary;
|
||||||
|
|
||||||
@@ -81,22 +92,20 @@ public class LoanAccountData {
|
|||||||
private final Collection<GuarantorData> guarantors;
|
private final Collection<GuarantorData> guarantors;
|
||||||
|
|
||||||
// template
|
// template
|
||||||
private final Collection<StaffData> loanOfficerOptions;
|
|
||||||
private final Collection<LoanProductData> productOptions;
|
private final Collection<LoanProductData> productOptions;
|
||||||
|
private final Collection<StaffData> loanOfficerOptions;
|
||||||
|
private final Collection<CodeValueData> loanPurposeOptions;
|
||||||
|
private final Collection<FundData> fundOptions;
|
||||||
private final Collection<EnumOptionData> termFrequencyTypeOptions;
|
private final Collection<EnumOptionData> termFrequencyTypeOptions;
|
||||||
private final Collection<EnumOptionData> repaymentFrequencyTypeOptions;
|
private final Collection<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||||
private final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions;
|
|
||||||
private final Collection<EnumOptionData> interestRateFrequencyTypeOptions;
|
private final Collection<EnumOptionData> interestRateFrequencyTypeOptions;
|
||||||
private final Collection<EnumOptionData> amortizationTypeOptions;
|
private final Collection<EnumOptionData> amortizationTypeOptions;
|
||||||
private final Collection<EnumOptionData> interestTypeOptions;
|
private final Collection<EnumOptionData> interestTypeOptions;
|
||||||
private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions;
|
private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions;
|
||||||
private final Collection<FundData> fundOptions;
|
private final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions;
|
||||||
private final Collection<ChargeData> chargeOptions;
|
private final Collection<ChargeData> chargeOptions;
|
||||||
private final Collection<CodeValueData> loanPurposeOptions;
|
|
||||||
private final Collection<CodeValueData> loanCollateralOptions;
|
private final Collection<CodeValueData> loanCollateralOptions;
|
||||||
|
|
||||||
private final ChargeData chargeTemplate;
|
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private BigDecimal feeChargesAtDisbursementCharged;
|
private BigDecimal feeChargesAtDisbursementCharged;
|
||||||
|
|
||||||
@@ -153,7 +162,7 @@ public class LoanAccountData {
|
|||||||
final Collection<LoanProductData> productOptions = null;
|
final Collection<LoanProductData> productOptions = null;
|
||||||
final Collection<EnumOptionData> termFrequencyTypeOptions = null;
|
final Collection<EnumOptionData> termFrequencyTypeOptions = null;
|
||||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions = null;
|
final Collection<EnumOptionData> repaymentFrequencyTypeOptions = null;
|
||||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = null;
|
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = null;
|
||||||
final Collection<EnumOptionData> interestRateFrequencyTypeOptions = null;
|
final Collection<EnumOptionData> interestRateFrequencyTypeOptions = null;
|
||||||
final Collection<EnumOptionData> amortizationTypeOptions = null;
|
final Collection<EnumOptionData> amortizationTypeOptions = null;
|
||||||
final Collection<EnumOptionData> interestTypeOptions = null;
|
final Collection<EnumOptionData> interestTypeOptions = null;
|
||||||
@@ -171,9 +180,9 @@ public class LoanAccountData {
|
|||||||
interestRatePerPeriod, interestRateFrequencyType, annualInterestRate, interestType, interestCalculationPeriodType,
|
interestRatePerPeriod, interestRateFrequencyType, annualInterestRate, interestType, interestCalculationPeriodType,
|
||||||
expectedFirstRepaymentOnDate, interestChargedFromDate, timeline, summary, feeChargesDueAtDisbursementCharged,
|
expectedFirstRepaymentOnDate, interestChargedFromDate, timeline, summary, feeChargesDueAtDisbursementCharged,
|
||||||
repaymentSchedule, transactions, charges, collateral, guarantors, productOptions, termFrequencyTypeOptions,
|
repaymentSchedule, transactions, charges, collateral, guarantors, productOptions, termFrequencyTypeOptions,
|
||||||
repaymentFrequencyTypeOptions, repaymentStrategyOptions, interestRateFrequencyTypeOptions, amortizationTypeOptions,
|
repaymentFrequencyTypeOptions, transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
|
||||||
interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, loanOfficerOptions,
|
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions,
|
||||||
loanPurposeOptions, loanCollateralOptions);
|
chargeTemplate, loanOfficerOptions, loanPurposeOptions, loanCollateralOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -429,7 +438,7 @@ public class LoanAccountData {
|
|||||||
final Collection<LoanCollateralData> collateral, final Collection<GuarantorData> guarantors,
|
final Collection<LoanCollateralData> collateral, final Collection<GuarantorData> guarantors,
|
||||||
final Collection<LoanProductData> productOptions, final Collection<EnumOptionData> termFrequencyTypeOptions,
|
final Collection<LoanProductData> productOptions, final Collection<EnumOptionData> termFrequencyTypeOptions,
|
||||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions,
|
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions,
|
||||||
final Collection<EnumOptionData> interestRateFrequencyTypeOptions, final Collection<EnumOptionData> amortizationTypeOptions,
|
final Collection<EnumOptionData> interestRateFrequencyTypeOptions, final Collection<EnumOptionData> amortizationTypeOptions,
|
||||||
final Collection<EnumOptionData> interestTypeOptions, final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
|
final Collection<EnumOptionData> interestTypeOptions, final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||||
final Collection<FundData> fundOptions, final Collection<ChargeData> chargeOptions, final ChargeData chargeTemplate,
|
final Collection<FundData> fundOptions, final Collection<ChargeData> chargeOptions, final ChargeData chargeTemplate,
|
||||||
@@ -443,7 +452,7 @@ public class LoanAccountData {
|
|||||||
acc.interestRatePerPeriod, acc.interestRateFrequencyType, acc.annualInterestRate, acc.interestType,
|
acc.interestRatePerPeriod, acc.interestRateFrequencyType, acc.annualInterestRate, acc.interestType,
|
||||||
acc.interestCalculationPeriodType, acc.expectedFirstRepaymentOnDate, acc.interestChargedFromDate, acc.timeline,
|
acc.interestCalculationPeriodType, acc.expectedFirstRepaymentOnDate, acc.interestChargedFromDate, acc.timeline,
|
||||||
acc.summary, acc.feeChargesAtDisbursementCharged, repaymentSchedule, transactions, charges, collateral, guarantors,
|
acc.summary, acc.feeChargesAtDisbursementCharged, repaymentSchedule, transactions, charges, collateral, guarantors,
|
||||||
productOptions, termFrequencyTypeOptions, repaymentFrequencyTypeOptions, repaymentStrategyOptions,
|
productOptions, termFrequencyTypeOptions, repaymentFrequencyTypeOptions, transactionProcessingStrategyOptions,
|
||||||
interestRateFrequencyTypeOptions, amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions,
|
interestRateFrequencyTypeOptions, amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions,
|
||||||
fundOptions, chargeOptions, chargeTemplate, loanOfficerOptions, loanPurposeOptions, loanCollateralOptions);
|
fundOptions, chargeOptions, chargeTemplate, loanOfficerOptions, loanPurposeOptions, loanCollateralOptions);
|
||||||
}
|
}
|
||||||
@@ -476,23 +485,16 @@ public class LoanAccountData {
|
|||||||
final Integer numberOfRepayments,
|
final Integer numberOfRepayments,
|
||||||
final Integer repaymentEvery,
|
final Integer repaymentEvery,
|
||||||
final EnumOptionData repaymentFrequencyType, //
|
final EnumOptionData repaymentFrequencyType, //
|
||||||
final Long transactionProcessingStrategyId,
|
final Long transactionProcessingStrategyId, final EnumOptionData amortizationType, final BigDecimal interestRatePerPeriod,
|
||||||
final EnumOptionData amortizationType,
|
final EnumOptionData interestRateFrequencyType, final BigDecimal annualInterestRate, final EnumOptionData interestType,
|
||||||
final BigDecimal interestRatePerPeriod,
|
final EnumOptionData interestCalculationPeriodType, final LocalDate expectedFirstRepaymentOnDate,
|
||||||
final EnumOptionData interestRateFrequencyType,
|
final LocalDate interestChargedFromDate, final LoanApplicationTimelineData timeline, final LoanSummaryData summary,
|
||||||
final BigDecimal annualInterestRate,
|
|
||||||
final EnumOptionData interestType,
|
|
||||||
final EnumOptionData interestCalculationPeriodType,
|
|
||||||
final LocalDate expectedFirstRepaymentOnDate,
|
|
||||||
final LocalDate interestChargedFromDate,
|
|
||||||
final LoanApplicationTimelineData timeline,
|
|
||||||
final LoanSummaryData summary, //
|
|
||||||
final BigDecimal feeChargesDueAtDisbursementCharged, final LoanScheduleData repaymentSchedule,
|
final BigDecimal feeChargesDueAtDisbursementCharged, final LoanScheduleData repaymentSchedule,
|
||||||
final Collection<LoanTransactionData> transactions, final Collection<LoanChargeData> charges,
|
final Collection<LoanTransactionData> transactions, final Collection<LoanChargeData> charges,
|
||||||
final Collection<LoanCollateralData> collateral, final Collection<GuarantorData> guarantors,
|
final Collection<LoanCollateralData> collateral, final Collection<GuarantorData> guarantors,
|
||||||
final Collection<LoanProductData> productOptions, final Collection<EnumOptionData> termFrequencyTypeOptions,
|
final Collection<LoanProductData> productOptions, final Collection<EnumOptionData> termFrequencyTypeOptions,
|
||||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions,
|
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions,
|
||||||
final Collection<EnumOptionData> interestRateFrequencyTypeOptions, final Collection<EnumOptionData> amortizationTypeOptions,
|
final Collection<EnumOptionData> interestRateFrequencyTypeOptions, final Collection<EnumOptionData> amortizationTypeOptions,
|
||||||
final Collection<EnumOptionData> interestTypeOptions, final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
|
final Collection<EnumOptionData> interestTypeOptions, final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||||
final Collection<FundData> fundOptions, final Collection<ChargeData> chargeOptions, final ChargeData chargeTemplate,
|
final Collection<FundData> fundOptions, final Collection<ChargeData> chargeOptions, final ChargeData chargeTemplate,
|
||||||
@@ -550,17 +552,46 @@ public class LoanAccountData {
|
|||||||
this.productOptions = productOptions;
|
this.productOptions = productOptions;
|
||||||
this.termFrequencyTypeOptions = termFrequencyTypeOptions;
|
this.termFrequencyTypeOptions = termFrequencyTypeOptions;
|
||||||
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
||||||
this.repaymentStrategyOptions = repaymentStrategyOptions;
|
|
||||||
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
||||||
this.amortizationTypeOptions = amortizationTypeOptions;
|
this.amortizationTypeOptions = amortizationTypeOptions;
|
||||||
this.interestTypeOptions = interestTypeOptions;
|
this.interestTypeOptions = interestTypeOptions;
|
||||||
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
||||||
this.fundOptions = fundOptions;
|
|
||||||
this.chargeOptions = chargeOptions;
|
if (CollectionUtils.isEmpty(transactionProcessingStrategyOptions)) {
|
||||||
this.chargeTemplate = chargeTemplate;
|
this.transactionProcessingStrategyOptions = null;
|
||||||
this.loanOfficerOptions = loanOfficerOptions;
|
} else {
|
||||||
this.loanPurposeOptions = loanPurposeOptions;
|
this.transactionProcessingStrategyOptions = transactionProcessingStrategyOptions;
|
||||||
this.loanCollateralOptions = loanCollateralOptions;
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(fundOptions)) {
|
||||||
|
this.fundOptions = null;
|
||||||
|
} else {
|
||||||
|
this.fundOptions = fundOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(chargeOptions)) {
|
||||||
|
this.chargeOptions = null;
|
||||||
|
} else {
|
||||||
|
this.chargeOptions = chargeOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(loanOfficerOptions)) {
|
||||||
|
this.loanOfficerOptions = null;
|
||||||
|
} else {
|
||||||
|
this.loanOfficerOptions = loanOfficerOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(loanPurposeOptions)) {
|
||||||
|
this.loanPurposeOptions = null;
|
||||||
|
} else {
|
||||||
|
this.loanPurposeOptions = loanPurposeOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(loanCollateralOptions)) {
|
||||||
|
this.loanCollateralOptions = null;
|
||||||
|
} else {
|
||||||
|
this.loanCollateralOptions = loanCollateralOptions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public RepaymentScheduleRelatedLoanData repaymentScheduleRelatedData() {
|
public RepaymentScheduleRelatedLoanData repaymentScheduleRelatedData() {
|
||||||
|
|||||||
+2
-2
@@ -20,9 +20,9 @@ public interface LoanReadPlatformService {
|
|||||||
|
|
||||||
Collection<LoanTransactionData> retrieveLoanTransactions(Long loanId);
|
Collection<LoanTransactionData> retrieveLoanTransactions(Long loanId);
|
||||||
|
|
||||||
LoanAccountData retrieveClientAndProductDetails(Long clientId, Long productId);
|
LoanAccountData retrieveTemplateWithClientAndProductDetails(Long clientId, Long productId);
|
||||||
|
|
||||||
LoanAccountData retrieveGroupAndProductDetails(Long groupId, Long productId);
|
LoanAccountData retrieveTemplateWithGroupAndProductDetails(Long groupId, Long productId);
|
||||||
|
|
||||||
LoanTransactionData retrieveLoanTransactionTemplate(Long loanId);
|
LoanTransactionData retrieveLoanTransactionTemplate(Long loanId);
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -136,7 +136,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoanAccountData retrieveClientAndProductDetails(final Long clientId, final Long productId) {
|
public LoanAccountData retrieveTemplateWithClientAndProductDetails(final Long clientId, final Long productId) {
|
||||||
|
|
||||||
context.authenticatedUser();
|
context.authenticatedUser();
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoanAccountData retrieveGroupAndProductDetails(final Long groupId, final Long productId) {
|
public LoanAccountData retrieveTemplateWithGroupAndProductDetails(final Long groupId, final Long productId) {
|
||||||
|
|
||||||
context.authenticatedUser();
|
context.authenticatedUser();
|
||||||
|
|
||||||
|
|||||||
-3
@@ -156,11 +156,9 @@ public class LoanProductData {
|
|||||||
this.principal = principal;
|
this.principal = principal;
|
||||||
this.inArrearsTolerance = tolerance;
|
this.inArrearsTolerance = tolerance;
|
||||||
this.numberOfRepayments = numberOfRepayments;
|
this.numberOfRepayments = numberOfRepayments;
|
||||||
// this.loanTermFrequency = loanTermFrequency;
|
|
||||||
this.repaymentEvery = repaymentEvery;
|
this.repaymentEvery = repaymentEvery;
|
||||||
this.interestRatePerPeriod = interestRatePerPeriod;
|
this.interestRatePerPeriod = interestRatePerPeriod;
|
||||||
this.annualInterestRate = annualInterestRate;
|
this.annualInterestRate = annualInterestRate;
|
||||||
// this.loanTermFrequencyType = loanTermFrequencyType;
|
|
||||||
this.repaymentFrequencyType = repaymentFrequencyType;
|
this.repaymentFrequencyType = repaymentFrequencyType;
|
||||||
this.interestRateFrequencyType = interestRateFrequencyType;
|
this.interestRateFrequencyType = interestRateFrequencyType;
|
||||||
this.amortizationType = amortizationType;
|
this.amortizationType = amortizationType;
|
||||||
@@ -180,7 +178,6 @@ public class LoanProductData {
|
|||||||
this.amortizationTypeOptions = null;
|
this.amortizationTypeOptions = null;
|
||||||
this.interestTypeOptions = null;
|
this.interestTypeOptions = null;
|
||||||
this.interestCalculationPeriodTypeOptions = null;
|
this.interestCalculationPeriodTypeOptions = null;
|
||||||
// this.loanTermFrequencyTypeOptions = null;
|
|
||||||
this.repaymentFrequencyTypeOptions = null;
|
this.repaymentFrequencyTypeOptions = null;
|
||||||
this.interestRateFrequencyTypeOptions = null;
|
this.interestRateFrequencyTypeOptions = null;
|
||||||
|
|
||||||
|
|||||||
+5
-9
@@ -15,7 +15,6 @@ import javax.ws.rs.core.UriInfo;
|
|||||||
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
|
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
|
||||||
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
||||||
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
|
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
|
||||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
|
||||||
import org.mifosplatform.portfolio.search.SearchConstants.SEARCH_RESPONSE_PARAMETERS;
|
import org.mifosplatform.portfolio.search.SearchConstants.SEARCH_RESPONSE_PARAMETERS;
|
||||||
import org.mifosplatform.portfolio.search.data.SearchConditions;
|
import org.mifosplatform.portfolio.search.data.SearchConditions;
|
||||||
import org.mifosplatform.portfolio.search.data.SearchData;
|
import org.mifosplatform.portfolio.search.data.SearchData;
|
||||||
@@ -31,15 +30,14 @@ public class SearchApiResource {
|
|||||||
|
|
||||||
private final Set<String> searchResponseParameters = SEARCH_RESPONSE_PARAMETERS.getAllValues();
|
private final Set<String> searchResponseParameters = SEARCH_RESPONSE_PARAMETERS.getAllValues();
|
||||||
|
|
||||||
private final PlatformSecurityContext context;
|
|
||||||
private final SearchReadPlatformService searchReadPlatformService;
|
private final SearchReadPlatformService searchReadPlatformService;
|
||||||
private final ToApiJsonSerializer<SearchData> toApiJsonSerializer;
|
private final ToApiJsonSerializer<SearchData> toApiJsonSerializer;
|
||||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public SearchApiResource(final PlatformSecurityContext context, final SearchReadPlatformService searchReadPlatformService, final ToApiJsonSerializer<SearchData> toApiJsonSerializer, final ApiRequestParameterHelper apiRequestParameterHelper) {
|
public SearchApiResource(final SearchReadPlatformService searchReadPlatformService,
|
||||||
|
final ToApiJsonSerializer<SearchData> toApiJsonSerializer, final ApiRequestParameterHelper apiRequestParameterHelper) {
|
||||||
|
|
||||||
this.context = context;
|
|
||||||
this.searchReadPlatformService = searchReadPlatformService;
|
this.searchReadPlatformService = searchReadPlatformService;
|
||||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||||
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
||||||
@@ -49,16 +47,14 @@ public class SearchApiResource {
|
|||||||
@GET
|
@GET
|
||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String searchData(@Context final UriInfo uriInfo, @QueryParam("query") final String query, @QueryParam("resource") final String resource) {
|
public String searchData(@Context final UriInfo uriInfo, @QueryParam("query") final String query,
|
||||||
|
@QueryParam("resource") final String resource) {
|
||||||
|
|
||||||
// FIXME - Do we need to validate for permissions
|
final SearchConditions searchConditions = new SearchConditions(query, resource);
|
||||||
|
|
||||||
SearchConditions searchConditions = new SearchConditions(query, resource);
|
|
||||||
|
|
||||||
final Collection<SearchData> searchResults = this.searchReadPlatformService.retriveMatchingData(searchConditions);
|
final Collection<SearchData> searchResults = this.searchReadPlatformService.retriveMatchingData(searchConditions);
|
||||||
|
|
||||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||||
return this.toApiJsonSerializer.serialize(settings, searchResults, searchResponseParameters);
|
return this.toApiJsonSerializer.serialize(settings, searchResults, searchResponseParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -5,7 +5,7 @@ import java.util.Collection;
|
|||||||
import org.mifosplatform.portfolio.search.data.SearchConditions;
|
import org.mifosplatform.portfolio.search.data.SearchConditions;
|
||||||
import org.mifosplatform.portfolio.search.data.SearchData;
|
import org.mifosplatform.portfolio.search.data.SearchData;
|
||||||
|
|
||||||
|
|
||||||
public interface SearchReadPlatformService {
|
public interface SearchReadPlatformService {
|
||||||
|
|
||||||
Collection<SearchData> retriveMatchingData(SearchConditions searchConditions);
|
Collection<SearchData> retriveMatchingData(SearchConditions searchConditions);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user