
import requests
import pandas as pd
from io import BytesIO, StringIO
from crm.models import Lead
from django.conf import settings

FILE_ID = settings.GOOGLE_DRIVE_FILE_ID
DOWNLOAD_URL = f"https://drive.google.com/uc?export=download&id={FILE_ID}&confirm=t"



def sync_leads():
    session = requests.Session()
    response = session.get(DOWNLOAD_URL)
    response.raise_for_status()

    df = pd.read_csv(StringIO(response.content.decode("utf-8-sig")))

    created_count = 0
    for _, row in df.iterrows():
        company_name = row.get("Company Name")
        if not company_name or pd.isna(company_name):
            continue

        def safe(val):
            return '' if pd.isna(val) else str(val).strip()

        _, created = Lead.objects.get_or_create(
            company_name=safe(company_name),
            defaults={
                "vertical": safe(row.get("Vertical")),
                "city": safe(row.get("City")),
                "state": safe(row.get("State")),
                "country": safe(row.get("Country")) or "India",
                "status": safe(row.get("Status")) or "new",
                "source": safe(row.get("Source")),
                "priority_score": None if pd.isna(row.get("Priority Score")) else int(row.get("Priority Score")),
                "lead_tier": safe(row.get("Lead Tier")),
                "website": safe(row.get("Website")),
                "notes": safe(row.get("Notes")),
                "service": safe(row.get("Service")),
            }
        )
        if created:
            created_count += 1

    print(f"{created_count} leads synced successfully")


if __name__ == "__main__":
    import django
    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "module_hub.settings")
    django.setup()
    sync_leads()
