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

This module contains URL patterns for the accounts app including user management,
authentication, profiles, roles, and user activities.

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

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

app_name = 'accounts'

urlpatterns = [
    # Dashboard
    path('', views.dashboard, name='dashboard'), 
    
    # Password Reset
    path('password-reset/', auth_views.PasswordResetView.as_view(
        template_name='accounts/password_reset.html',
        email_template_name='accounts/password_reset_email.html',
        subject_template_name='accounts/password_reset_subject.txt'
    ), name='password_reset'),
    
    path('password-reset/done/', auth_views.PasswordResetDoneView.as_view(
        template_name='accounts/password_reset_done.html'
    ), name='password_reset_done'),
    
    path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
        template_name='accounts/password_reset_confirm.html'
    ), name='password_reset_confirm'),
    
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(
        template_name='accounts/password_reset_complete.html'
    ), name='password_reset_complete'),
    
    
    # profile_update_api
    path('profile/update/', views.profile_update_api, name='profile_update_api'),
    # change_password_api
    path('profile/change-password-api/', views.change_password_api, name='change_password_api'),
    # user_sessions_api
    path('user-sessions/', views.user_sessions_api, name='user_sessions_api'),
    # user_activities_api
    path('user-activities/', views.user_activities_api, name='user_activities_api'),
    # terminate_session_api
    path('terminate-session/', views.terminate_session_api, name='terminate_session_api'),


    # User Management
    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'),
    
    # Profile Management
    path('profile/', views.profile_view, name='profile'),
    path('profile/edit/', views.profile_edit, name='profile_edit'),
    path('profile/change-password/', views.change_password, name='change_password'),

    
    # Department Management
    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
    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
    path('permissions/', views.PermissionListView.as_view(), name='permission_list'),
    # path('permissions/<int:pk>/', views.PermissionDetailView.as_view(), name='permission_detail'),
    # path('permissions/create/', views.PermissionCreateView.as_view(), name='permission_create'),
    # path('permissions/<int:pk>/edit/', views.PermissionUpdateView.as_view(), name='permission_edit'),
    # path('permissions/<int:pk>/delete/', views.PermissionDeleteView.as_view(), name='permission_delete'),
    
    # User Role Assignment
    path('users/<int:user_id>/assign-role/', views.assign_role, name='assign_role'),
    path('user-roles/<int:user_role_id>/revoke/', views.revoke_role, name='revoke_role'),
    
    # Activity and Session Management
    path('activities/', views.UserActivityListView.as_view(), name='activity_list'),
    path('sessions/', views.UserSessionListView.as_view(), name='session_list'),
    
    # AJAX Endpoints
    path('ajax/user-search/', views.user_search_ajax, name='user_search_ajax'),
    path('ajax/check-email/', views.check_email_availability, name='check_email_availability'),
    path('ajax/user-stats/', views.user_stats_ajax, name='user_stats_ajax'),

    # Settings
    path('settings/', views.settings_view, name='settings'),
    # path('settings/edit/', views.settings_edit, name='settings_edit'),
    # path('settings/change-password/', views.settings_change_password, name='settings_change_password'),
]

    

