Files
velocity-pay-springboot/src/main/java/zw/qantra/tm/domain/services/TransactionService.java

69 lines
2.9 KiB
Java

package zw.qantra.tm.domain.services;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.enums.RequestType;
import zw.qantra.tm.domain.enums.Status;
import zw.qantra.tm.domain.models.AdditionalData;
import zw.qantra.tm.domain.models.Provider;
import zw.qantra.tm.domain.models.Transaction;
import zw.qantra.tm.domain.repositories.TransactionRepository;
import zw.qantra.tm.domain.services.factories.PaymentProcessorFactory;
import zw.qantra.tm.domain.services.processors.TransactionProcessorInterface;
import zw.qantra.tm.domain.services.processors.handlers.CalculateChargesHandler;
import zw.qantra.tm.domain.services.processors.handlers.ConfirmationLabelHandler;
import zw.qantra.tm.domain.services.processors.handlers.ConfirmationLogicHandler;
import zw.qantra.tm.domain.services.processors.handlers.FormattingHandler;
import zw.qantra.tm.domain.services.processors.handlers.LogicPipeline;
import zw.qantra.tm.domain.services.processors.handlers.RecipientsUpdateHandler;
import zw.qantra.tm.domain.services.processors.handlers.ValidationHandler;
import zw.qantra.tm.domain.services.processors.handlers.erp.*;
import zw.qantra.tm.domain.models.TransactionEvent;
import zw.qantra.tm.exceptions.ApiException;
import zw.qantra.tm.utils.Utils;
@Service
@RequiredArgsConstructor
public class TransactionService {
Logger logger = LoggerFactory.getLogger(TransactionService.class);
@Getter
private final TransactionRepository transactionRepository;
private final AdditionalDataService additionalDataService;
public Transaction findById(UUID id) {
Transaction transaction = transactionRepository.findById(id).orElseThrow(() -> new ApiException("Transaction not found for ID: " + id));
try {
AdditionalData additionalData = additionalDataService.getAdditionalDataRepository()
.findByTransactionIdAndRequestType(id.toString(), RequestType.INTEGRATION).orElseThrow(() ->
new ApiException("Additional data not found for transaction ID: " + id + " and request type: " + RequestType.INTEGRATION));
transaction.setAdditionalData(Utils.fromJson(additionalData.getJsonString(), List.class));
} catch (ApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return transaction;
}
public Page<Transaction> findAll(Specification<Transaction> spec, Pageable pageable) {
return transactionRepository.findAll(spec, pageable);
}
public Transaction save(Transaction transaction){
return transactionRepository.save(transaction);
}
}