diff --git a/core/src/main/java/com/abavilla/fpi/load/dto/load/dtone/DVSCallbackDto.java b/core/src/main/java/com/abavilla/fpi/load/dto/load/dtone/DVSCallbackDto.java index 629f8fc..a6daa6f 100644 --- a/core/src/main/java/com/abavilla/fpi/load/dto/load/dtone/DVSCallbackDto.java +++ b/core/src/main/java/com/abavilla/fpi/load/dto/load/dtone/DVSCallbackDto.java @@ -21,6 +21,7 @@ import java.util.List; import com.abavilla.fpi.fw.dto.AbsDto; +import com.dtone.dvs.dto.Benefit; import com.dtone.dvs.dto.Party; import com.dtone.dvs.dto.PartyIdentifier; import com.dtone.dvs.dto.Pin; @@ -83,4 +84,7 @@ public class DVSCallbackDto extends AbsDto { private StatementIdentifier statementIdentifier; private String callbackUrl; + + private List benefits; + } diff --git a/core/src/main/java/com/abavilla/fpi/load/entity/dtone/DVSCallback.java b/core/src/main/java/com/abavilla/fpi/load/entity/dtone/DVSCallback.java index 479a925..b77f4ef 100644 --- a/core/src/main/java/com/abavilla/fpi/load/entity/dtone/DVSCallback.java +++ b/core/src/main/java/com/abavilla/fpi/load/entity/dtone/DVSCallback.java @@ -30,6 +30,7 @@ import com.dtone.dvs.dto.Product; import com.dtone.dvs.dto.Promotion; import com.dtone.dvs.dto.Rates; +import com.dtone.dvs.dto.StatementIdentifier; import com.dtone.dvs.dto.Status; import com.dtone.dvs.dto.Values; import io.quarkus.mongodb.panache.common.MongoEntity; @@ -49,23 +50,46 @@ public class DVSCallback extends AbsMongoItem { @BsonProperty(value = "transactionId") private Long dtOneId; + private String externalId; + private LocalDateTime creationDate; + private LocalDateTime confirmationExpirationDate; + private LocalDateTime confirmationDate; + private Status status; + private String operatorReference; + private Pin pin; + private Product product; + private Prices prices; + private Rates rates; - private List benefits; + private List promotions; + private Values requestedValues; + private Values adjustedValues; + private Party sender; + private Party beneficiary; + private PartyIdentifier debitPartyIdentifier; + private PartyIdentifier creditPartyIdentifier; + + private StatementIdentifier statementIdentifier; + + private String callbackUrl; + + private List benefits; + private String loadProvider; } diff --git a/core/src/main/java/com/abavilla/fpi/load/service/load/RewardsCallbackSvc.java b/core/src/main/java/com/abavilla/fpi/load/service/load/RewardsCallbackSvc.java index 0c92e5a..5886e04 100644 --- a/core/src/main/java/com/abavilla/fpi/load/service/load/RewardsCallbackSvc.java +++ b/core/src/main/java/com/abavilla/fpi/load/service/load/RewardsCallbackSvc.java @@ -21,6 +21,7 @@ import java.time.Duration; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.ArrayList; import java.util.function.Function; import com.abavilla.fpi.fw.entity.mongo.AbsMongoItem; @@ -46,12 +47,15 @@ import com.abavilla.fpi.sms.ext.rest.SmsApi; import com.abavilla.fpi.telco.ext.enums.ApiStatus; import com.dtone.dvs.dto.Transaction; +import com.dtone.dvs.dto.TransactionFixed; +import com.dtone.dvs.dto.TransactionRanged; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import io.quarkus.logging.Log; import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.eclipse.microprofile.rest.client.inject.RestClient; @@ -100,6 +104,13 @@ public Uni storeCallback(GLRewardsCallbackDto callbackDto) { public Uni storeCallback(Transaction dvsCallbackTransaction) { var dvsCallbackDto = dtOneMapper.mapDTOneTransactionToCallbackDto(dvsCallbackTransaction); + if (dvsCallbackTransaction instanceof TransactionFixed fixed && ObjectUtils.isNotEmpty(fixed.getBenefits())) { + dvsCallbackDto.setBenefits(new ArrayList<>(fixed.getBenefits().size())); + dvsCallbackDto.getBenefits().addAll(fixed.getBenefits()); + } else if (dvsCallbackTransaction instanceof TransactionRanged ranged && ObjectUtils.isNotEmpty(ranged.getBenefits())) { + dvsCallbackDto.setBenefits(new ArrayList<>(ranged.getBenefits().size())); + dvsCallbackDto.getBenefits().addAll(ranged.getBenefits()); + } return storeCallback( dtOneMapper.mapDTOneRespToEntity(dvsCallbackDto), ApiStatus.fromDtOne(dvsCallbackDto.getStatus().getId()), diff --git a/pom.xml b/pom.xml index ff5ae41..dc7206b 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ com.vincejv dvs-apiclient - 2.2.0 + 2.2.1