FINERACT-2181: Add customData field to InvestorBusinessEvent

This commit is contained in:
Jose Alberto Hernandez
2025-04-15 15:14:45 +02:00
committed by Adam Saghy
parent b9b5eb60d1
commit 2143d35e29
4 changed files with 72 additions and 5 deletions
@@ -39,7 +39,8 @@ import org.apache.fineract.avro.generic.v1.CurrencyDataV1;
import org.apache.fineract.avro.loan.v1.LoanOwnershipTransferDataV1;
import org.apache.fineract.avro.loan.v1.UnpaidChargeDataV1;
import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent;
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.BusinessEventSerializer;
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventWithCustomDataSerializer;
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.ExternalEventCustomDataSerializer;
import org.apache.fineract.investor.data.ExternalTransferData;
import org.apache.fineract.investor.data.ExternalTransferStatus;
import org.apache.fineract.investor.data.ExternalTransferSubStatus;
@@ -52,12 +53,13 @@ import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class InvestorBusinessEventSerializer implements BusinessEventSerializer {
public class InvestorBusinessEventSerializer extends AbstractBusinessEventWithCustomDataSerializer<InvestorBusinessEvent> {
private static final Set<ExternalTransferStatus> EXECUTED_TRANSFER_STATUSES = Set.of(ACTIVE, ACTIVE_INTERMEDIATE, BUYBACK,
BUYBACK_INTERMEDIATE);
private final ExternalAssetOwnersReadService externalAssetOwnersReadService;
private final List<ExternalEventCustomDataSerializer<InvestorBusinessEvent>> externalEventCustomDataSerializers;
private static CurrencyDataV1 getCurrencyFromEvent(InvestorBusinessEvent event) {
MonetaryCurrency loanCurrency = event.getLoan().getCurrency();
@@ -76,6 +78,11 @@ public class InvestorBusinessEventSerializer implements BusinessEventSerializer
return LoanOwnershipTransferDataV1.class;
}
@Override
protected List<ExternalEventCustomDataSerializer<InvestorBusinessEvent>> getExternalEventCustomDataSerializers() {
return externalEventCustomDataSerializers;
}
@Override
public <T> ByteBufferSerializable toAvroDTO(BusinessEvent<T> rawEvent) {
InvestorBusinessEvent event = (InvestorBusinessEvent) rawEvent;
@@ -95,7 +102,7 @@ public class InvestorBusinessEventSerializer implements BusinessEventSerializer
.setSettlementDate(transferData.getSettlementDate().format(DEFAULT_DATE_FORMATTER))
.setSubmittedDate(transferData.getSettlementDate().format(DEFAULT_DATE_FORMATTER)).setType(transferType)
.setTransferStatus(getStatus(transferData.getStatus()))
.setTransferStatusReason(getTransferStatusReason(transferData.getSubStatus()));
.setTransferStatusReason(getTransferStatusReason(transferData.getSubStatus())).setCustomData(collectCustomData(event));
if (transferData.getDetails() != null) {
builder.setTotalOutstandingBalanceAmount(transferData.getDetails().getTotalOutstanding())