From 64fdc392646aa9ac03ec7cdcf76627b6f572d0b2 Mon Sep 17 00:00:00 2001 From: Ruchi Dhamankar Date: Fri, 30 Dec 2022 17:44:17 +0530 Subject: [PATCH] FINERACT-1818-LoanAccount-Avro-data-addition-Charges-Delinquent-data --- .../loan/LoanBusinessEventSerializer.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java index b87755523..be7d8343e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java @@ -21,15 +21,20 @@ package org.apache.fineract.infrastructure.event.external.service.serialization. import java.util.Collection; import lombok.RequiredArgsConstructor; import org.apache.avro.generic.GenericContainer; +import org.apache.commons.collections.CollectionUtils; import org.apache.fineract.avro.generator.ByteBufferSerializable; import org.apache.fineract.avro.loan.v1.LoanAccountDataV1; import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent; import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBusinessEvent; import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanAccountDataMapper; import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventSerializer; +import org.apache.fineract.portfolio.delinquency.service.DelinquencyReadPlatformService; +import org.apache.fineract.portfolio.loanaccount.data.CollectionData; import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData; +import org.apache.fineract.portfolio.loanaccount.data.LoanChargeData; import org.apache.fineract.portfolio.loanaccount.data.LoanSummaryData; import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData; +import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.springframework.stereotype.Component; @@ -39,6 +44,8 @@ public class LoanBusinessEventSerializer extends AbstractBusinessEventSerializer private final LoanReadPlatformService service; private final LoanAccountDataMapper mapper; + private final LoanChargeReadPlatformService loanChargeReadPlatformService; + private final DelinquencyReadPlatformService delinquencyReadPlatformService; @Override public boolean canSerialize(BusinessEvent event) { @@ -48,10 +55,23 @@ public class LoanBusinessEventSerializer extends AbstractBusinessEventSerializer @Override protected ByteBufferSerializable toAvroDTO(BusinessEvent rawEvent) { LoanBusinessEvent event = (LoanBusinessEvent) rawEvent; - LoanAccountData data = service.retrieveOne(event.get().getId()); + Long loanId = event.get().getId(); + LoanAccountData data = service.retrieveOne(loanId); + data = service.fetchRepaymentScheduleData(data); + + Collection loanCharges = loanChargeReadPlatformService.retrieveLoanCharges(loanId); + if (CollectionUtils.isNotEmpty(loanCharges)) { + data.setCharges(loanCharges); + } + + if (data.isActive()) { + CollectionData delinquentData = delinquencyReadPlatformService.calculateLoanCollectionData(loanId); + data.setDelinquent(delinquentData); + } + if (data.getSummary() != null) { - final Collection currentLoanTransactions = service.retrieveLoanTransactions(event.get().getId()); + final Collection currentLoanTransactions = service.retrieveLoanTransactions(loanId); data.setSummary(LoanSummaryData.withTransactionAmountsSummary(data.getSummary(), currentLoanTransactions)); } return mapper.map(data);