"""Seed country / state / city master data (India-first).

Run:  python seed_geo.py   (idempotent — get_or_create)

Gives the profile/JD location dropdowns real options. India is seeded with
all states + UTs and major cities; a handful of other countries are added
so the Country dropdown isn't India-only.
"""

import django
import os
import sys

OTHER_COUNTRIES = [
    ("United States", "US", "+1"),
    ("United Kingdom", "GB", "+44"),
    ("Canada", "CA", "+1"),
    ("Australia", "AU", "+61"),
    ("Singapore", "SG", "+65"),
    ("United Arab Emirates", "AE", "+971"),
    ("Germany", "DE", "+49"),
]

# Indian states/UTs -> major cities
INDIA = {
    "Maharashtra": ["Mumbai", "Pune", "Nagpur", "Nashik", "Thane"],
    "Karnataka": ["Bengaluru", "Mysuru", "Mangaluru", "Hubli"],
    "Delhi": ["New Delhi", "Delhi"],
    "Telangana": ["Hyderabad", "Warangal", "Secunderabad"],
    "Tamil Nadu": ["Chennai", "Coimbatore", "Madurai", "Tiruchirappalli"],
    "Uttar Pradesh": ["Noida", "Lucknow", "Kanpur", "Ghaziabad", "Varanasi"],
    "Haryana": ["Gurugram", "Faridabad", "Panchkula"],
    "Gujarat": ["Ahmedabad", "Surat", "Vadodara", "Gandhinagar", "Rajkot"],
    "West Bengal": ["Kolkata", "Howrah", "Siliguri"],
    "Rajasthan": ["Jaipur", "Jodhpur", "Udaipur", "Kota"],
    "Kerala": ["Kochi", "Thiruvananthapuram", "Kozhikode"],
    "Punjab": ["Chandigarh", "Ludhiana", "Amritsar", "Mohali"],
    "Madhya Pradesh": ["Indore", "Bhopal", "Jabalpur"],
    "Andhra Pradesh": ["Visakhapatnam", "Vijayawada", "Guntur"],
    "Bihar": ["Patna", "Gaya"],
    "Odisha": ["Bhubaneswar", "Cuttack"],
    "Assam": ["Guwahati"],
    "Jharkhand": ["Ranchi", "Jamshedpur"],
    "Chhattisgarh": ["Raipur"],
    "Uttarakhand": ["Dehradun"],
    "Himachal Pradesh": ["Shimla"],
    "Goa": ["Panaji", "Margao"],
    "Jammu and Kashmir": ["Srinagar", "Jammu"],
    "Chandigarh": ["Chandigarh"],
    "Puducherry": ["Puducherry"],
    # Remaining states/UTs (no seeded cities yet — still selectable)
    "Arunachal Pradesh": [], "Manipur": [], "Meghalaya": [], "Mizoram": [],
    "Nagaland": [], "Sikkim": [], "Tripura": [],
    "Andaman and Nicobar Islands": [], "Dadra and Nagar Haveli and Daman and Diu": [],
    "Ladakh": [], "Lakshadweep": [],
}


def seed():
    from apps.master_data.models import Country, State, City

    india, _ = Country.objects.get_or_create(
        name="India", defaults={"iso2": "IN", "iso3": "IND", "phone_code": "+91", "region": "Asia"}
    )
    states = cities = 0
    for state_name, city_names in INDIA.items():
        state, _ = State.objects.get_or_create(
            country=india, name=state_name, defaults={"country_code": "IN"}
        )
        states += 1
        for city_name in city_names:
            _, created = City.objects.get_or_create(
                country=india, state=state, name=city_name
            )
            cities += int(created)

    for name, iso2, phone in OTHER_COUNTRIES:
        Country.objects.get_or_create(
            name=name, defaults={"iso2": iso2, "phone_code": phone}
        )

    print(f"Countries: {Country.objects.count()} | States: {State.objects.count()} | Cities: {City.objects.count()}")
    print("India seeded with", states, "states/UTs and", cities, "new cities.")


if __name__ == "__main__":
    sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.dev")
    django.setup()
    seed()
