from django.urls import path
from . import views

app_name = 'task_management'

urlpatterns = [
    # Auth
    path('login/', views.staff_login, name='login'),
    path('logout/', views.staff_logout, name='logout'),

    # Dashboard & profile
    path('', views.dashboard, name='dashboard'),
    path('me/', views.my_profile, name='my_profile'),

    # Clients
    path('clients/', views.client_list, name='client_list'),
    path('clients/new/', views.client_create, name='client_create'),
    path('clients/<int:client_id>/', views.client_detail, name='client_detail'),
    path('clients/<int:client_id>/edit/', views.client_edit, name='client_edit'),
    path('clients/<int:client_id>/delete/', views.client_delete, name='client_delete'),
    path('clients/<int:client_id>/portal-account/', views.client_create_portal_account, name='client_create_portal_account'),
    path('clients/<int:client_id>/reset-password/', views.client_reset_portal_password, name='client_reset_portal_password'),
    path('clients/<int:client_id>/toggle-access/', views.client_toggle_portal_access, name='client_toggle_portal_access'),

    # Projects
    path('projects/', views.project_list, name='project_list'),
    path('projects/new/', views.project_create, name='project_create'),
    path('projects/<int:project_id>/', views.project_detail, name='project_detail'),
    path('projects/<int:project_id>/edit/', views.project_edit, name='project_edit'),
    path('projects/<int:project_id>/delete/', views.project_delete, name='project_delete'),

    # Kanban & Gantt
    path('projects/<int:project_id>/kanban/', views.project_kanban, name='project_kanban'),
    path('api/kanban/move/', views.kanban_move_task, name='kanban_move_task'),
    path('projects/<int:project_id>/gantt/', views.project_gantt, name='project_gantt'),

    # Tasks
    path('projects/<int:project_id>/tasks/new/', views.task_create, name='task_create'),
    path('tasks/<int:task_id>/', views.task_detail, name='task_detail'),
    path('tasks/<int:task_id>/edit/', views.task_edit, name='task_edit'),
    path('tasks/<int:task_id>/delete/', views.task_delete, name='task_delete'),
    path('api/tasks/<int:task_id>/progress/', views.task_update_progress, name='task_update_progress'),

    # Document Requests
    path('projects/<int:project_id>/documents/', views.document_request_list, name='document_request_list'),
    path('projects/<int:project_id>/documents/new/', views.document_request_create, name='document_request_create'),
    path('documents/<int:doc_req_id>/push/', views.document_request_push, name='document_request_push'),
    path('documents/<int:doc_req_id>/edit/', views.document_request_edit, name='document_request_edit'),
    path('documents/<int:doc_req_id>/delete/', views.document_request_delete, name='document_request_delete'),
    path('documents/<int:doc_req_id>/download/<str:file_type>/', views.document_request_download, name='document_request_download'),
    path('documents/<int:doc_req_id>/preview/', views.document_request_preview, name='document_request_preview'),

    # Asset Requests
    path('projects/<int:project_id>/assets/', views.asset_request_list, name='asset_request_list'),
    path('projects/<int:project_id>/assets/new/', views.asset_request_create, name='asset_request_create'),
    path('assets/<int:asset_req_id>/push/', views.asset_request_push, name='asset_request_push'),
    path('assets/<int:asset_req_id>/edit/', views.asset_request_edit, name='asset_request_edit'),
    path('assets/<int:asset_req_id>/delete/', views.asset_request_delete, name='asset_request_delete'),
    path('assets/<int:asset_req_id>/download/', views.asset_request_download, name='asset_request_download'),
    path('assets/<int:asset_req_id>/preview/', views.asset_request_preview, name='asset_request_preview'),
    path('assets/<int:asset_req_id>/approve/', views.asset_request_approve, name='asset_request_approve'),
    path('assets/<int:asset_req_id>/reject/', views.asset_request_reject, name='asset_request_reject'),

    # Company Documents
    path('company-documents/', views.company_document_list, name='company_document_list'),
    path('company-documents/<int:doc_id>/download/', views.company_document_download, name='company_document_download'),
    path('company-documents/<int:doc_id>/delete/', views.company_document_delete, name='company_document_delete'),

    # Notifications & Approvals
    path('notifications/', views.notification_list, name='notification_list'),
    path('notifications/<int:notification_id>/', views.notification_detail, name='notification_detail'),
    path('notifications/<int:notification_id>/read/', views.notification_mark_read, name='notification_mark_read'),
    path('approvals/', views.approval_queue, name='approval_queue'),
    path('approvals/<int:approval_id>/action/', views.approval_action, name='approval_action'),

    # Roles & Team Access
    path('admin/roles/', views.role_list, name='role_list'),
    path('admin/roles/new/', views.role_create, name='role_create'),
    path('admin/roles/<int:role_id>/edit/', views.role_edit, name='role_edit'),
    path('admin/roles/<int:role_id>/delete/', views.role_delete, name='role_delete'),
    path('admin/team-access/', views.staff_access_list, name='staff_access_list'),
    path('admin/users/new/', views.user_create, name='user_create'),
    path('admin/users/<int:user_id>/access/', views.user_assign_role, name='user_assign_role'),

    # Internal API
    path('api/clients/', views.api_clients, name='api_clients'),
    path('api/projects/', views.api_projects, name='api_projects'),
    path('api/summary/', views.api_ops_summary, name='api_ops_summary'),
]