from django.urls import include, path
from rest_framework.routers import DefaultRouter

from .admin_views import (
    AdminUserViewSet,
    PermissionCatalogView,
    RoleCloneView,
    RoleDetailView,
    RoleListView,
    RolePermissionsView,
    RoleResetView,
)
from .impersonate_views import ImpersonateRoleView
from .views import ProfileView
from .dashboard_views import (
    DashboardStatsView,
    TotalRecruitersView,
    AssignedRecruitersView,
    RecruiterDetailView,
)

router = DefaultRouter()
router.register("admin/users", AdminUserViewSet, basename="admin-users")
router.register("", AdminUserViewSet, basename="admin-users-root")

urlpatterns = [
    path("profile/", ProfileView.as_view(), name="profile"),

    # ---- Dashboard & Recruiter Analytics ----
    path("dashboard/stats/", DashboardStatsView.as_view(), name="dashboard-stats"),
    path("dashboard/total-recruiters/", TotalRecruitersView.as_view(), name="dashboard-total-recruiters"),
    path("dashboard/assigned-recruiters/", AssignedRecruitersView.as_view(), name="dashboard-assigned-recruiters"),
    path("recruiters/<int:pk>/", RecruiterDetailView.as_view(), name="recruiter-detail"),

    # ---- Admin: role & permission management (ADMIN role only) ----
    path("admin/impersonate/", ImpersonateRoleView.as_view(), name="admin-impersonate"),
    path("admin/roles/", RoleListView.as_view(), name="admin-roles"),
    path("admin/roles/<str:role>/permissions/", RolePermissionsView.as_view(), name="admin-role-permissions"),
    path("admin/roles/<str:role>/reset/", RoleResetView.as_view(), name="admin-role-reset"),
    path("admin/roles/<str:role>/clone/", RoleCloneView.as_view(), name="admin-role-clone"),
    path("admin/roles/<str:role>/", RoleDetailView.as_view(), name="admin-role-detail"),
    path("admin/permissions/", PermissionCatalogView.as_view(), name="admin-permissions"),

    # ---- Admin: user CRUD (router) ----
    path("", include(router.urls)),
]
