info("Fetching campaign details from Google Ads..."); $adsService = new GoogleAdsService(); $clients = Client::where('status', 'ENABLED')->get(); foreach ($clients as $client) { $campaigns = GoogleCampaign::where('client_id', $client->id)->get(); if ($campaigns->isEmpty()) { $this->info("No campaigns found for Client ID: {$client->customer_id}"); continue; } else { foreach ($campaigns as $campaign) { $adGroups = GoogleAdGroup::where('google_campaign_id', $campaign->id)->get(); if (! empty($adGroups)) { foreach ($adGroups as $adGroup) { $ads = $adsService->listAdsByAdGroupId($client->customer_id, $adGroup->ad_group_id); if (! empty($ads)) { foreach ($ads as $ad) { GoogleAd::updateOrCreate( [ 'google_ad_group_id' => $adGroup->id, 'ad_id' => $ad['ad_id'], ], [ 'type' => $ad['type'], 'status'=> $ad['status'], 'approval_status' => $ad['approval_status'], 'final_urls' => json_encode($ad['final_urls']), ] ); $this->info("Fetched Ad ID: {$ad['ad_id']} for Ad Group: {$adGroup->name} in Campaign: {$campaign->name}"); } } else { $this->info("No ads found for Client ID: {$client->customer_id}, Ad Group Name: {$adGroup->name}"); } } } else { $this->info("No ad group found for Client ID: {$client->customer_id}, Campaign Name: {$campaign->name}"); } } } } DB::commit(); } catch (\Exception $e) { DB::rollBack(); Log::error('Error getting campaign details: '.$e->getMessage(), [ 'trace' => $e->getTraceAsString(), ]); return 1; } } }