# -*- coding: utf-8 -*-
"""
Adtlas Accounts URLs

This module contains URL patterns for the accounts app including user management, 
profiles, roles, permissions, and user activities with comprehensive permission system.

Author: Adtlas Development Team
Version: 3.0.0
Last Updated: 2025-01-20
"""

from django.urls import path

from apps.accounts import views

app_name = "accounts"

urlpatterns = [   
    # Profile Management (Class-Based)
    path("profile", views.ProfileView.as_view(), name="profile"),
    path("profile/update", views.ProfileEditView.as_view(), name="profile_update"),
    path("profile/change-password", views.ChangePasswordView.as_view(), name="change_password"),
    path("settings", views.SettingsView.as_view(), name="settings"),

    # API Endpoints (Class-Based) 
    path("api/sessions/", views.UserSessionsAPIView.as_view(), name="user_sessions_api"),
    path("api/activities/", views.UserActivitiesAPIView.as_view(), name="user_activities_api"),
    path("api/sessions/terminate/", views.TerminateSessionAPIView.as_view(), name="terminate_session_api"),

    # Management Dashboard
    path("management/", views.ManagementDashboardView.as_view(), name="management_dashboard"),
    path("dashboard/", views.DashboardView.as_view(), name="dashboard"),

    # User Management (Class-Based with Permissions)
    path("users/", views.UserListView.as_view(), name="user_list"),
    path("users/<int:pk>/", views.UserDetailView.as_view(), name="user_detail"),
    path("users/create/", views.UserCreateView.as_view(), name="user_create"),
    path("users/<int:pk>/edit/", views.UserUpdateView.as_view(), name="user_edit"),
    path("users/<int:pk>/delete/", views.UserDeleteView.as_view(), name="user_delete"),
 
    # Department Management (Class-Based with Permissions)
    path("departments/", views.DepartmentListView.as_view(), name="department_list"),
    path("departments/<int:pk>/", views.DepartmentDetailView.as_view(), name="department_detail"),
    path("departments/create/", views.DepartmentCreateView.as_view(), name="department_create"),
    path("departments/<int:pk>/edit/", views.DepartmentUpdateView.as_view(), name="department_edit"),
    path("departments/<int:pk>/delete/", views.DepartmentDeleteView.as_view(), name="department_delete"),
    
    # Role Management (Class-Based with Permissions)
    path("roles/", views.RoleListView.as_view(), name="role_list"),
    path("roles/<int:pk>/", views.RoleDetailView.as_view(), name="role_detail"),
    path("roles/create/", views.RoleCreateView.as_view(), name="role_create"),
    path("roles/<int:pk>/edit/", views.RoleUpdateView.as_view(), name="role_edit"),

    # Permission Management (Class-Based with Permissions)
    path("permissions/", views.PermissionListView.as_view(), name="permission_list"),
    path("permissions/<int:pk>/", views.PermissionDetailView.as_view(), name="permission_detail"),
    
    # User Role Assignment (Class-Based with Permissions)
    path("users/<int:user_id>/assign-role/", views.AssignRoleView.as_view(), name="assign_role"),
    path("user-roles/<int:user_role_id>/revoke/", views.RevokeRoleView.as_view(), name="revoke_role"),
    
    # Activity and Session Management (Class-Based with Permissions)
    path("activities/", views.UserActivityListView.as_view(), name="activity_list"),
    path("sessions/", views.UserSessionListView.as_view(), name="session_list"),
    
    # AJAX Endpoints (Class-Based)
    path("ajax/user-search/", views.UserSearchAjaxView.as_view(), name="user_search_ajax"),
    path("ajax/check-email/", views.CheckEmailAvailabilityView.as_view(), name="check_email_availability"),
    path("ajax/user-stats/", views.UserStatsAjaxView.as_view(), name="user_stats_ajax"),

]
