implement zesa currency swap feature

This commit is contained in:
2026-06-01 20:34:48 +02:00
parent 92276c07d8
commit 461dc7e7e4
17 changed files with 257 additions and 48 deletions

View File

@@ -3,6 +3,8 @@ package zw.qantra.tm.domain.services;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.UUID;
@@ -15,6 +17,7 @@ import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.enums.RequestType;
import zw.qantra.tm.domain.models.AdditionalData;
import zw.qantra.tm.domain.models.Currency;
import zw.qantra.tm.domain.models.Transaction;
import zw.qantra.tm.domain.repositories.TransactionRepository;
import zw.qantra.tm.exceptions.ApiException;
@@ -28,6 +31,21 @@ public class TransactionService {
@Getter
private final TransactionRepository transactionRepository;
private final AdditionalDataService additionalDataService;
private final CurrencyService currencyService;
public BigDecimal calculateCreditAmount(Transaction transaction) {
if (transaction.getCreditCurrency() == null) {
return BigDecimal.ZERO;
}
Currency currency = currencyService.findCurrencyByIsoCode(transaction.getCreditCurrency().name());
BigDecimal bankRate = new BigDecimal(currency.getBankRate());
BigDecimal creditAmount = transaction.getAmount().multiply(bankRate).setScale(4, RoundingMode.HALF_EVEN);
transaction.setCreditAmount(creditAmount);
return creditAmount;
}
public void reassignTransactions(String oldUid, String newUid){
List<Transaction> transactions = transactionRepository.findAllByUserId(oldUid);