import { PayWithCodeService } from '../Services/PayWithCodeService';
import { CreateOrderRequestBuilder } from '../RequestDTOs/CreateOrderRequest';
import { QueryOrderResultBuilder } from '../RequestDTOs/QueryOrderResultRequest';
import { ErrorResponse } from '../ResponseDTOs/ErrorResponse';
import { PayInCreateOrderResponse } from '../ResponseDTOs/PayInCreateOrderResponseOld';
import { PayWithMMOService } from '../Services/PayWithMMOService';

export class PayWithMMOServiceManager {
  private payWithMMOService: PayWithMMOService;

  constructor(
    private appId: string,
    private countryCode: string,
    privateKey: string,
    isTest: boolean
  ) {
    this.payWithMMOService = new PayWithMMOService(
      appId,
      countryCode,
      privateKey,
      isTest
    );
  }

  
  

  async createOrder(createOrderRequestBuilder: CreateOrderRequestBuilder) {
    try {
      const createOrderResponse = await this.payWithMMOService.createOrder(createOrderRequestBuilder);
      console.log('Manager Order Response:', (createOrderResponse as PayInCreateOrderResponse).data);
      return createOrderResponse;
    } catch (error) {
      console.error('Error creating order:', error);
    }
  }

  async fetchOrderStatus(builder: QueryOrderResultBuilder) {
    try {
      const fetchOrderStatusResponse = await this.payWithMMOService.fetchOrderStatus(builder);
      console.log('Create Order Response:', fetchOrderStatusResponse);
      return fetchOrderStatusResponse;
    } catch (error) {
      console.error('Error creating order:', error);
    }
  }

 
}
