import django
import os
import sys

def add_menu_items():
    from apps.menus.models import Menu

    # Get or create "Master Data" parent
    master_data, created = Menu.objects.get_or_create(
        name="Master Data",
        defaults={
            "route": "",
            "icon": "fa-solid fa-database",
            "sort_order": 8,
            "permission_code": "",
            "is_active": True,
            "admin_only": False,
        },
    )

    # Rename existing "Master Skills" to "Skills" if it exists, or create it
    master_skills_query = Menu.objects.filter(route="/master-skills")
    if master_skills_query.exists():
        master_skills_query.update(name="Skills", sort_order=1)
        print("Updated existing Master Skills menu item to 'Skills'.")
    else:
        Menu.objects.get_or_create(
            name="Skills",
            parent=master_data,
            defaults={
                "route": "/master-skills",
                "icon": "fa-solid fa-lightbulb",
                "sort_order": 1,
                "permission_code": "master_skills.view_masterskill",
                "is_active": True,
                "admin_only": False,
            },
        )

    # Get or create Designation menu
    designation, created = Menu.objects.get_or_create(
        route="/master-data/designation",
        defaults={
            "name": "Designation",
            "parent": master_data,
            "icon": "fa-solid fa-briefcase",
            "sort_order": 2,
            "permission_code": "master_designations.view_masterdesignation",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        designation.name = "Designation"
        designation.sort_order = 2
        designation.save()

    # Get or create Country menu
    country, created = Menu.objects.get_or_create(
        route="/master-data/country",
        defaults={
            "name": "Country",
            "parent": master_data,
            "icon": "fa-solid fa-flag",
            "sort_order": 3,
            "permission_code": "master_data.view_country",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        country.name = "Country"
        country.sort_order = 3
        country.save()

    # Get or create State menu
    state, created = Menu.objects.get_or_create(
        route="/master-data/state",
        defaults={
            "name": "State",
            "parent": master_data,
            "icon": "fa-solid fa-map",
            "sort_order": 4,
            "permission_code": "master_data.view_state",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        state.name = "State"
        state.sort_order = 4
        state.save()

    # Get or create City menu
    city, created = Menu.objects.get_or_create(
        route="/master-data/city",
        defaults={
            "name": "City",
            "parent": master_data,
            "icon": "fa-solid fa-building",
            "sort_order": 5,
            "permission_code": "master_data.view_city",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        city.name = "City"
        city.sort_order = 5
        city.save()

    # Get or create Notice Period menu
    notice_period, created = Menu.objects.get_or_create(
        route="/master-data/notice-period",
        defaults={
            "name": "Notice Period",
            "parent": master_data,
            "icon": "fa-solid fa-clock",
            "sort_order": 6,
            "permission_code": "master_data.view_noticeperiod",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        notice_period.name = "Notice Period"
        notice_period.sort_order = 6
        notice_period.save()

    # Get or create Annual CTC menu
    annual_ctc, created = Menu.objects.get_or_create(
        route="/master-data/annual-ctc",
        defaults={
            "name": "Annual CTC",
            "parent": master_data,
            "icon": "fa-solid fa-indian-rupee-sign",
            "sort_order": 7,
            "permission_code": "master_annual_ctc.view_masterannualctc",
            "is_active": True,
            "admin_only": False,
        },
    )
    if not created:
        annual_ctc.name = "Annual CTC"
        annual_ctc.sort_order = 7
        annual_ctc.save()

    print("Designation, Country, State, City, Notice Period, and Annual CTC menu items successfully updated in database!")

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