import { PayWithWalletService } from '../Services/PayWithWalletService'; import { CreateOrderRequestBuilder } from '../RequestDTOs/CreateOrderRequest'; import { QueryOrderResultBuilder } from '../RequestDTOs/QueryOrderResultRequest'; import { ErrorResponse } from '../ResponseDTOs/ErrorResponse'; import { plainToClass } from 'class-transformer'; import { PayInCreateOrderResponse } from '../ResponseDTOs/PayInCreateOrderResponse'; import { PayInCreateOrderResponseData } from '../ResponseDTOs/PayInCreateOrderResponseData'; import { TransactionResultsResponse } from '../ResponseDTOs/TransactionResultsResponse'; import { createHeader, removeUndefinedValues, transformUndefinedToNull } from '../Utils/Util'; export class PayWithWalletServiceManager { private payWithWalletService: PayWithWalletService; constructor( private appId: string, private countryCode: string, privateKey: string, isTest: boolean ) { this.payWithWalletService = new PayWithWalletService( appId, countryCode, privateKey, isTest ); } async createOrder(createOrderRequestBuilder: CreateOrderRequestBuilder) { try { // Create order status const createOrderResponse = await this.payWithWalletService.createOrder(createOrderRequestBuilder); console.log("OrderResponse Manager: ", createOrderResponse); return createOrderResponse; } catch (error) { console.error('Error creating order:', error); } } async fetchOrderStatus(builder: QueryOrderResultBuilder) { try { // Fetch order status const fetchOrderStatusResponse = await this.payWithWalletService.fetchOrderStatus(builder); console.log("fetchOrderStatusResponse: ", fetchOrderStatusResponse); return fetchOrderStatusResponse; // Return the original response if needed } catch (error) { console.error('Error fetching order status:', error); throw error; // Rethrow the error to propagate it } } async querySinglePayIn(builder: QueryOrderResultBuilder) { try { const querySinglePayInResponse = await this.payWithWalletService.fetchOrderStatus(builder); console.log('querySinglePayIn Response:', querySinglePayInResponse); return querySinglePayInResponse; } catch (error) { console.error('Error creating order:', error); } } }