69 lines
2.9 KiB
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);
|
|
}
|
|
} |