from django.urls import path
from .views import (
    UpdateUserView, UserDetailsView, AddUserView, ViewUserView,
    ChangePasswordView, DeleteUserView, UnauthorizedAccessView,
    ManagePermissionsView, RolePermissionsAPIView, FeaturesAPIView,
    RoleFeaturesAPIView, CreateRoleAPIView, InitializeDataView,
    MyProfileView, MyProfileEditView, MyChangePasswordView,
    AdminUserListView, AdminUserCreateView, AdminUserEditView, AdminUserDeleteView
)
from django.views.decorators.csrf import csrf_protect
from django.contrib.auth.decorators import login_required

urlpatterns = [
    # Existing URLs
    path('add-user', login_required(csrf_protect(AddUserView.as_view())), name='add-user'),
    path('view-user/<int:id>', login_required(ViewUserView.as_view()), name='view-user'),
    path('update-user/<int:id>', login_required(UpdateUserView.as_view()), name='update-user'),
    path('update-user', login_required(csrf_protect(UpdateUserView.as_view())), name='update-user'),
    path('change-password/<int:id>', login_required(ChangePasswordView.as_view()), name='change-password'),
    path('change-password', login_required(csrf_protect(ChangePasswordView.as_view())), name='change-password'),
    path('user-details', login_required(UserDetailsView.as_view()), name='user-details'),
    path('delete-user', login_required(csrf_protect(DeleteUserView.as_view())), name='delete-user'),
    path('unauthorized-access', login_required(UnauthorizedAccessView.as_view()), name='unauthorized-access'),
    path('manage-permissions', login_required(ManagePermissionsView.as_view()), name='manage-permissions'),
    path('initialize-data/', login_required(InitializeDataView.as_view()), name='initialize-data'),
    path('api/roles/', RolePermissionsAPIView.as_view(), name='api-roles'),
    path('api/features/all/', FeaturesAPIView.as_view(), name='api-features-all'),
    path('api/roles/<int:role_id>/features/', RoleFeaturesAPIView.as_view(), name='api-role-features'),
    path('api/roles/assign-features/', RoleFeaturesAPIView.as_view(), name='api-assign-features'),
    path('api/roles/create/', CreateRoleAPIView.as_view(), name='api-create-role'),

    # ==========================================
    # NEW USER PROFILE URLs
    # ==========================================
    path('my-profile/', login_required(MyProfileView.as_view()), name='my_profile'),
    path('my-profile/edit/', login_required(MyProfileEditView.as_view()), name='my_profile_edit'),
    path('my-profile/change-password/', login_required(MyChangePasswordView.as_view()), name='my_change_password'),

    # ==========================================
    # NEW ADMIN USER MANAGEMENT URLs
    # ==========================================
    path('admin/users/', login_required(AdminUserListView.as_view()), name='admin_user_list'),
    path('admin/users/create/', login_required(AdminUserCreateView.as_view()), name='admin_user_create'),
    path('admin/users/edit/<int:user_id>/', login_required(AdminUserEditView.as_view()), name='admin_user_edit'),
    path('admin/users/delete/<int:user_id>/', login_required(AdminUserDeleteView.as_view()), name='admin_user_delete'),
]