<?php

namespace app\service;

use Google\Ads\GoogleAds\Lib\V18\GoogleAdsClientBuilder;
use Google\Ads\GoogleAds\Lib\V18\GoogleAdsException;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;

// GoogleAdsClientService.php
class GoogleAdsClientService extends BaseService
{
    private $googleAdsClient;
    private $googleAdsClientWithloginCustomerId;

    public function __construct($refreshToken = null, $loginCustomerId = null)
    {
        // 如果没有传入 customerId,则从环境变量中获取
//        if ($customerId) {
//            $this->customerId = $customerId;
//        } else {
//            $this->customerId = getenv('GOOGLE_ADS_CUSTOMER_ID');
//        }

        // 从数据库获取 refreshToken
//        $refreshToken = $this->getRefreshTokenFromDatabase($this->customerId);

        if (!$refreshToken) {
            throw new \Exception("Access token not found for customerId: " . $refreshToken);
        }

        // OAuth2 Token Authentication
        $oAuth2Credential = (new OAuth2TokenBuilder())
            ->fromFile() // 如果需要从文件获取其他配置
            ->withRefreshToken($refreshToken) // 使用动态获取的 access_token
            ->build();

        // 初始化 Google Ads Client
        if ($loginCustomerId) {
            $this->googleAdsClientWithloginCustomerId = (new GoogleAdsClientBuilder())
                ->fromFile()
                ->withOAuth2Credential($oAuth2Credential)
                ->withLoginCustomerId($loginCustomerId)
                ->build();
        } else {
            $this->googleAdsClient = (new GoogleAdsClientBuilder())
                ->fromFile()
                ->withOAuth2Credential($oAuth2Credential)
                ->build();
        }


    }

    public function getGoogleAdsClient()
    {
        return $this->googleAdsClient;
    }

    public function getGoogleAdsClientWithloginCustomerId()
    {
        return $this->googleAdsClientWithloginCustomerId;
    }

}