import django
import os
import sys

NOTICE_DEFAULTS = [
    (0, "Immediate"),
    (15, "15 Days"),
    (30, "30 Days"),
    (45, "45 Days"),
    (60, "60 Days"),
    (90, "90 Days"),
]

CTC_DEFAULTS = []
# From 50,000 to 1,000,000 (10 Lakh) in steps of 50,000
for i in range(50000, 1000001, 50000):
    lakhs = i // 100000
    rem = i % 100000
    if lakhs == 0:
        label = f"{rem // 1000} Thousand"
    elif rem == 0:
        label = f"{lakhs} Lakh"
    else:
        label = f"{lakhs} Lakh {rem // 1000} Thousand"
    CTC_DEFAULTS.append((i, label))

# From 1,100,000 to 5,000,000 in steps of 100,000 (1 Lakh)
for i in range(1100000, 5000001, 100000):
    lakhs = i // 100000
    CTC_DEFAULTS.append((i, f"{lakhs} Lakh"))

# Higher bands
for i in range(6, 10):
    CTC_DEFAULTS.append((i * 1000000, f"{i * 10} Lakh"))
CTC_DEFAULTS.append((10000000, "1 Crore"))



def run():
    from apps.master_data.models import NoticePeriod, AnnualCTC

    for i, (val, label) in enumerate(NOTICE_DEFAULTS):
        NoticePeriod.objects.update_or_create(
            value=val,
            defaults={"label": label, "sort_order": i, "is_active": True}
        )
    print(f"Seeded {NoticePeriod.objects.count()} notice periods.")

    for i, (val, label) in enumerate(CTC_DEFAULTS):
        AnnualCTC.objects.update_or_create(
            value=val,
            defaults={"label": label, "sort_order": i, "is_active": True}
        )
    print(f"Seeded {AnnualCTC.objects.count()} CTC options.")

    from apps.candidates.models import Language
    LANGUAGES = [
        "English", "Hindi", "Spanish", "French", "German", "Mandarin", "Russian",
        "Portuguese", "Italian", "Arabic", "Japanese", "Korean", "Tamil", "Telugu",
        "Kannada", "Malayalam", "Marathi", "Bengali", "Gujarati", "Punjabi", "Urdu"
    ]
    for name in LANGUAGES:
        Language.objects.update_or_create(name=name, defaults={})
    print(f"Seeded {Language.objects.count()} languages.")

    from apps.master_designations.models import MasterDesignation
    from django.contrib.auth import get_user_model
    User = get_user_model()
    admin_user = User.objects.filter(role="ADMIN").first() or User.objects.first()
    if admin_user:
        DESIGNATIONS = [
            "Software Engineer", "Senior Software Engineer", "Tech Lead",
            "Project Manager", "Product Manager", "QA Engineer", "HR Manager",
            "Recruiter", "Business Analyst", "DevOps Engineer", "UI/UX Designer",
            "System Administrator", "Consultant", "Director", "VP of Engineering"
        ]
        for name in DESIGNATIONS:
            MasterDesignation.objects.get_or_create(
                name=name,
                defaults={"status": "ACTIVE", "created_by": admin_user, "updated_by": admin_user}
            )
        print(f"Seeded {MasterDesignation.objects.count()} designations.")
    else:
        print("WARNING: No user found to assign to master designations — skipped.")



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()
    run()
