from django.urls import path, include
from django.http import HttpResponse

from .session_views import ActiveSessionsView, ForceLogoutSessionView, BulkForceLogoutView
from master_admin.language_views import SchoolAdminLanguagesView, TranslateView
from .role_permission_views import (
    MyPermissionsView,
    PermissionDetailView,
    SchoolPermissionDetailView,
    UserPermissionStatsView,
    UserPermissionsView,
    AssignUserDirectPermissionView,
    RemoveUserDirectPermissionView,
    SchoolRoleListCreateView,
    SchoolRoleDetailView,
    SchoolPermissionListView,
    RolePermissionsView,
    AssignRolePermissionsView,
    RemoveRolePermissionsView,
    UpdateRolePermissionsView,
    UserRoleListView,
    UserRolesDetailView,
    AssignUserRoleView,
    RemoveUserRoleView,
    UserDetailView,
    BulkAssignRolesView,
    BulkRemoveRolesView,
)

urlpatterns = [
    # ──────────────────────────────────────────────
    # DEVICE SESSION MANAGEMENT
    # ──────────────────────────────────────────────
    path("sessions/", ActiveSessionsView.as_view(), name="active-sessions"),
    path("sessions/bulk-logout/", BulkForceLogoutView.as_view(), name="sessions-bulk-logout"),
    path("sessions/<int:session_id>/force-logout/", ForceLogoutSessionView.as_view(), name="session-force-logout"),

    # ──────────────────────────────────────────────
    # SCHOOL DATA APPS
    # ──────────────────────────────────────────────
    path("people/", include("people.urls")),
    path("academics/", include("academics.urls")),
    path("schedules/", include("schedules.urls")),
    path("fees/", include("fee.urls")),
    path("tasks/", include("tasks.urls")),
    path("announcements/", include("announcements.urls")),
    path("attendance/", include("attendance.urls")),
    path("transport/", include("transport.urls")),
    path("exam/", include("exam.urls")),
    path("payslips/", include("payslips.urls")),
    path("stats/", include("stats.urls")),

    # ──────────────────────────────────────────────
    # LANGUAGES (per-school language selection)
    # ──────────────────────────────────────────────
    path("languages/", SchoolAdminLanguagesView.as_view(), name="school-languages"),
    path("translate/", TranslateView.as_view(), name="school-translate"),

    # ──────────────────────────────────────────────
    # CURRENT USER PERMISSIONS
    # ──────────────────────────────────────────────
    path("me/permissions/", MyPermissionsView.as_view(), name="my-permissions"),

    # ──────────────────────────────────────────────
    # ROLE MANAGEMENT
    # ──────────────────────────────────────────────
    path("roles/", SchoolRoleListCreateView.as_view(), name="school-roles"),
    path("roles/<int:pk>/", SchoolRoleDetailView.as_view(), name="school-role-detail"),

    # ──────────────────────────────────────────────
    # PERMISSION CATALOG
    # ──────────────────────────────────────────────
    path("permissions/", SchoolPermissionListView.as_view(), name="school-permissions"),
    path("permissions/<int:pk>/", SchoolPermissionDetailView.as_view(), name="permission-edit-delete"),
    path("permissions/<int:pk>/details/", PermissionDetailView.as_view(), name="permission-detail"),

    # ──────────────────────────────────────────────
    # USER DIRECT PERMISSIONS
    # ──────────────────────────────────────────────
    path("users/permissions/stats/", UserPermissionStatsView.as_view(), name="user-permission-stats"),
    path("users/<int:user_id>/permissions/", UserPermissionsView.as_view(), name="user-permissions"),
    path("users/<int:user_id>/permissions/assign/", AssignUserDirectPermissionView.as_view(), name="user-permissions-assign"),
    path("users/<int:user_id>/permissions/remove/", RemoveUserDirectPermissionView.as_view(), name="user-permissions-remove"),

    # ──────────────────────────────────────────────
    # ROLE ↔ PERMISSION
    # ──────────────────────────────────────────────
    path("roles/<int:pk>/permissions/", RolePermissionsView.as_view(), name="role-permissions"),
    path("roles/<int:pk>/permissions/assign/", AssignRolePermissionsView.as_view(), name="role-permissions-assign"),
    path("roles/<int:pk>/permissions/remove/", RemoveRolePermissionsView.as_view(), name="role-permissions-remove"),
    path("roles/<int:pk>/permissions/update/", UpdateRolePermissionsView.as_view(), name="role-permissions-update"),

    # ──────────────────────────────────────────────
    # USER ↔ ROLE
    # ──────────────────────────────────────────────
    path("user-roles/", UserRoleListView.as_view(), name="user-roles"),
    path("users/<int:user_id>/roles/", UserRolesDetailView.as_view(), name="user-roles-detail"),
    path("users/<int:user_id>/roles/assign/", AssignUserRoleView.as_view(), name="user-roles-assign"),
    path("users/<int:user_id>/roles/remove/", RemoveUserRoleView.as_view(), name="user-roles-remove"),
    path("users/<int:user_id>/detail/", UserDetailView.as_view(), name="user-detail"),
    path("users/bulk-assign-roles/", BulkAssignRolesView.as_view(), name="bulk-assign-roles"),
    path("users/bulk-remove-roles/", BulkRemoveRolesView.as_view(), name="bulk-remove-roles"),

    # Legacy aliases so existing frontend calls still resolve during migration
    path("users/<int:user_id>/groups/", UserRolesDetailView.as_view(), name="user-groups-compat"),
    path("users/<int:user_id>/groups/assign/", AssignUserRoleView.as_view(), name="user-groups-assign-compat"),
    path("users/<int:user_id>/groups/remove/", RemoveUserRoleView.as_view(), name="user-groups-remove-compat"),
    path("users/bulk-assign-groups/", BulkAssignRolesView.as_view(), name="bulk-assign-groups-compat"),
    path("users/bulk-remove-groups/", BulkRemoveRolesView.as_view(), name="bulk-remove-groups-compat"),
    path("get-user-details/<int:user_id>/", UserDetailView.as_view(), name="get-user-details-compat"),
]
