from django.apps import AppConfig


class MenusConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "apps.menus"

    def ready(self):
        from django.db.models.signals import post_migrate

        post_migrate.connect(seed_menus, sender=self)


def seed_menus(sender, **kwargs):
    """Seed the default sidebar menus idempotently using get_or_create."""
    from .models import Menu

    def add(name, route="", icon="", parent=None, sort=0, perm="", admin_only=False):
        menu, _ = Menu.objects.get_or_create(
            name=name,
            defaults={
                "route": route,
                "icon": icon,
                "parent": parent,
                "sort_order": sort,
                "permission_code": perm,
                "is_active": True,
                "admin_only": admin_only,
            },
        )
        return menu

    add("Dashboard", "/dashboard", "fa-solid fa-house", sort=1)

    jobs = add("Job Descriptions", "/jobs", "fa-solid fa-briefcase", sort=2)
    add("Create Job Description", "/jobs", "fa-solid fa-plus", jobs, 1, "jobs.add_jobdescription")
    add("Manage Job Descriptions", "/jobs", "fa-solid fa-list", jobs, 2, "jobs.view_jobdescription")

    clients = add("Clients", "/clients", "fa-solid fa-building", sort=3)
    add("Add Client", "/clients", "fa-solid fa-plus", clients, 1, "clients.add_client")
    add("View Clients", "/clients", "fa-solid fa-list", clients, 2, "clients.view_client")

    candidates = add("Candidates", "/candidates", "fa-solid fa-user-tie", sort=4)
    add("Add Candidate", "/candidates/add", "fa-solid fa-plus", candidates, 1, "candidates.add_candidate")
    add("Draft Candidates", "/candidates", "fa-solid fa-file-pen", candidates, 2, "candidates.view_draft_candidate")
    add("All Candidates", "/candidates", "fa-solid fa-users", candidates, 3, "candidates.view_candidate")

    users = add("User Management", "/admins/users", "fa-solid fa-user-gear", sort=5)
    add("Create User", "/admins/users", "fa-solid fa-user-plus", users, 1, "users.add_user")
    add("Manage Users", "/admins/users", "fa-solid fa-users", users, 2, "users.view_user")

    agents = add("Agents", "/admins/agents", "fa-solid fa-robot", sort=6)
    add("Agent Efficiency", "/admins/agents", "fa-solid fa-user-plus", agents, 1, "agents.add_agent")
    

    add(
    "Password Policy",
    "/admins/password-policy",
    "fa-solid fa-shield-halved",
    parent=None,
    sort=7,
    admin_only=True,
)
    add(
    "Pipeline Stages",
    "/admins/pipeline-stages",
    "fa-solid fa-diagram-project",
    parent=None,
    sort=8,
    admin_only=True,
)
    master_data = add("Master Data", "", "fa-solid fa-database", sort=8)
    add("Master Skills", "/master-skills", "fa-solid fa-lightbulb", master_data, 1, "master_skills.view_masterskill")
