using Google.Ads.GoogleAds;
using Google.Ads.GoogleAds.Lib;
using Google.Ads.GoogleAds.V11.Services;
using Google.Api.Gax;
using meedee8.ads.GoogleAdsApi.Helper;
using meedee8.ads.GoogleAdsApi.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace meedee8.ads.GoogleAdsApi.Campaigns
{
public class GetCampaign : ICampaign
{
private const int PAGE_SIZE = 1_000;
/// <summary>
/// This will return the All campaign that linked to selected AdsAccount
/// </summary>
/// <param name="AccountID"></param>
/// <returns>Campaign</returns>
public List<CampaignSetting> GetCampaignDetails(string AccountID)
{
GoogleAdsClient client = new GoogleAdsClient();
List<CampaignSetting> Campaign = new List<CampaignSetting>();
GoogleAdsServiceClient googleAdsService = client.GetService(Services.V11.GoogleAdsService);
SearchGoogleAdsRequest request = new SearchGoogleAdsRequest()
{
PageSize = PAGE_SIZE,
Query = @"SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.start_date,
campaign.end_date,
campaign.network_settings.target_content_network
FROM campaign
ORDER BY
campaign.id",
CustomerId = AccountID
};
object sync = new Object();
try
{
PagedEnumerable<SearchGoogleAdsResponse, GoogleAdsRow> searchPagedResponse = googleAdsService.Search(request);
Parallel.ForEach(searchPagedResponse, response =>
{
lock (sync)
{
Campaign.Add(new CampaignSetting()
{
CampaignID = response.Campaign.Id.ToString(),
Name =
response.Campaign.Name,
Status = response.Campaign.Status.ToString(),
StartDate = response.Campaign.StartDate,
EndDate = response.Campaign.EndDate,
});
}
});
}
catch(Exception ee)
{
}
return Campaign.OrderByDescending(c => c.StartDate).ToList();