#!/usr/bin/env python3
"""Confirmar de qual acao veio a conversao de hoje e last_conversion_date. READ ONLY."""
import json
from google.ads.googleads.client import GoogleAdsClient

TOK = json.load(open('/opt/mia/config/google_ads_tokens.json'))
CUSTOMER_ID = "2186917336"
cfg = {"developer_token": TOK["developer_token"],"client_id": TOK["client_id"],
       "client_secret": TOK["client_secret"],"refresh_token": TOK["refresh_token"],
       "login_customer_id": TOK["mcc_id"],"use_proto_plus": True}
client = GoogleAdsClient.load_from_dict(cfg)
ga = client.get_service("GoogleAdsService")
def q(query): return ga.search(customer_id=CUSTOMER_ID, query=query)

print("=== Conversoes na conta por conversion_action_name, LAST_7_DAYS (customer level) ===")
rows = q("""
SELECT segments.conversion_action_name, segments.date,
       metrics.all_conversions, metrics.conversions
FROM customer
WHERE segments.date DURING LAST_7_DAYS
ORDER BY segments.date
""")
any_=False
for r in rows:
    if (r.metrics.all_conversions or 0) > 0 or (r.metrics.conversions or 0) > 0:
        any_=True
        print(f"{r.segments.date} | {r.segments.conversion_action_name} | conv={r.metrics.conversions:.2f} all={r.metrics.all_conversions:.2f}")
if not any_: print("  (nada >0 no customer level)")

print()
print("=== Customer agregado TODAY / YESTERDAY (sem segmentar por acao) ===")
for p in ["TODAY","YESTERDAY","LAST_7_DAYS"]:
    for r in q(f"SELECT metrics.conversions, metrics.all_conversions FROM customer WHERE segments.date DURING {p}"):
        print(f"[{p}] conv={r.metrics.conversions:.2f} allconv={r.metrics.all_conversions:.2f}")

print()
print("=== SEARSH CLOUD segmentado por conversion_action, TODAY ===")
rows = q("""
SELECT segments.conversion_action_name, segments.date, segments.hour,
       metrics.all_conversions, metrics.conversions
FROM campaign
WHERE campaign.id = 23567395804 AND segments.date DURING TODAY
""")
any_=False
for r in rows:
    if (r.metrics.all_conversions or 0)>0 or (r.metrics.conversions or 0)>0:
        any_=True
        print(f"{r.segments.date} h{r.segments.hour} | {r.segments.conversion_action_name} | conv={r.metrics.conversions:.2f} all={r.metrics.all_conversions:.2f}")
if not any_: print("  (segmento por acao vazio no TODAY - possivel lag de relatorio por acao)")

print()
print("=== conversion_action com metricas por acao, TODAY e YESTERDAY ===")
for p in ["TODAY","YESTERDAY"]:
    rows = q(f"""
    SELECT conversion_action.name, conversion_action.id, metrics.all_conversions, metrics.conversions
    FROM conversion_action
    WHERE segments.date DURING {p}
    """)
    print(f"-- {p} --")
    got=False
    for r in rows:
        if (r.metrics.all_conversions or 0)>0 or (r.metrics.conversions or 0)>0:
            got=True
            print(f"  {r.conversion_action.name} (id {r.conversion_action.id}) conv={r.metrics.conversions:.2f} all={r.metrics.all_conversions:.2f}")
    if not got: print("  (nada >0)")
