from .api_client import get, post


GOOGLE_ADS_CAMPAIGNS_URL = "https://atworkflow.atirao.biz/api/google-ads-data/getCampaignsinfo"
META_ADS_CAMPAIGNS_URL = "https://atworkflow.atirao.biz/api/meta-ads-data/getCampaignsinfo"


def _map_campaigns(items, channel, platform_label):
    campaigns = []

    for item in items or []:
        campaign_id = item.get("id") or item.get("campaign_id")
        campaign_name = item.get("name") or item.get("campaign_name")

        if not campaign_id or not campaign_name:
            continue

        campaigns.append(
            {
                "channel": channel,
                "value": f"{channel}:{campaign_id}",
                "label": f"{platform_label} - {campaign_name}",
                "id": str(campaign_id),
                "name": campaign_name,
            }
        )

    return campaigns


def get_google_ads_campaign_options(client_id, bearer_token=None):
    data = post(
        GOOGLE_ADS_CAMPAIGNS_URL,
        {"client_id": client_id},
        bearer_token=bearer_token,
    )
    return _map_campaigns(data.get("campaigns", []), "google_ads", "Google Ads")


def get_meta_ads_campaign_options(client_id, bearer_token=None):
    data = get(
        META_ADS_CAMPAIGNS_URL,
        params={"client": client_id},
        bearer_token=bearer_token,
    )
    return _map_campaigns(data.get("data", []), "meta", "Meta")


def get_campaign_options(channels, client_id, bearer_token=None):
    campaigns = []

    if "google_ads" in channels:
        campaigns.extend(get_google_ads_campaign_options(client_id, bearer_token=bearer_token))

    if "meta" in channels:
        campaigns.extend(get_meta_ads_campaign_options(client_id, bearer_token=bearer_token))

    return campaigns
