from django.urls import path

from apps.core.authentication import admin_views, views

app_name = "accounts"

urlpatterns = [
    path("profile/", views.profile_view, name="profile"),
    path("profile/qualifications/save/", views.qualification_save_view, name="qualification_save"),
    path(
        "profile/qualifications/<str:entry_id>/delete/",
        views.qualification_delete_view,
        name="qualification_delete",
    ),
    path("profile/experience/save/", views.experience_save_view, name="experience_save"),
    path(
        "profile/experience/<str:entry_id>/delete/",
        views.experience_delete_view,
        name="experience_delete",
    ),
    path("login/", views.login_view, name="login"),
    path("logout/", views.logout_view, name="logout"),
    path("register/", views.register_view, name="register"),
    path("verify/resend/", views.resend_verification_view, name="resend_verification"),
    path("verify/<str:token>/", views.verify_email_view, name="verify_email"),
    path("password-change/", views.password_change_view, name="password_change"),
    path("mfa/verify/", views.mfa_verify_view, name="mfa_verify"),
    path("mfa/setup/", views.mfa_enroll_view, name="mfa_enroll"),
    path("mfa/remove/<int:pk>/", views.mfa_remove_view, name="mfa_remove"),
    path("mfa/", views.mfa_manage_view, name="mfa_manage"),
    # WS5.3 — staff user-management surface.
    path("manage/users/", admin_views.UserListView.as_view(), name="manage_users"),
    path(
        "manage/users/pending/",
        admin_views.PendingReviewQueueView.as_view(),
        name="manage_pending_queue",
    ),
    path(
        "manage/users/import/",
        admin_views.BulkImportView.as_view(),
        name="manage_bulk_import",
    ),
    path(
        "manage/users/import/template.csv",
        admin_views.BulkImportTemplateView.as_view(),
        name="manage_bulk_import_template",
    ),
    path(
        "manage/users/<int:pk>/approve/",
        admin_views.ApprovePendingUserView.as_view(),
        name="manage_approve_pending",
    ),
    path(
        "manage/users/<int:pk>/reject/",
        admin_views.RejectPendingUserView.as_view(),
        name="manage_reject_pending",
    ),
    path(
        "manage/users/<int:pk>/edit/",
        admin_views.UserEditView.as_view(),
        name="manage_edit_user",
    ),
    path(
        "manage/users/<int:pk>/activate/",
        admin_views.ActivateUserView.as_view(),
        name="manage_activate_user",
    ),
    path(
        "manage/users/<int:pk>/deactivate/",
        admin_views.DeactivateUserView.as_view(),
        name="manage_deactivate_user",
    ),
    path(
        "manage/users/<int:pk>/delete/",
        admin_views.DeleteUserView.as_view(),
        name="manage_delete_user",
    ),
    path(
        "password-reset/",
        views.IILMPPasswordResetView.as_view(),
        name="password_reset",
    ),
    path(
        "password-reset/done/",
        views.IILMPPasswordResetDoneView.as_view(),
        name="password_reset_done",
    ),
    path(
        "password-reset/<uidb64>/<token>/",
        views.IILMPPasswordResetConfirmView.as_view(),
        name="password_reset_confirm",
    ),
    path(
        "password-reset/complete/",
        views.IILMPPasswordResetCompleteView.as_view(),
        name="password_reset_complete",
    ),
]
