from django.urls import path, include
from rest_framework.routers import DefaultRouter

from apps.standards.views import (
    StandardSourceViewSet,
    StandardCategoryViewSet,
    StandardViewSet,
    StandardComplianceViewSet,
    StandardAttachmentViewSet,
    standards_dashboard,
    department_standards_view,
    standard_detail,
    standard_compliance_update,
    standard_attachment_upload,
    standards_search,
    get_compliance_status,
    standard_create,
    create_compliance_ajax,
    update_compliance_ajax,
    source_list,
    source_create,
    source_update,
    source_delete,
    category_list,
    category_create,
    category_update,
    category_delete,
)

# API Router
router = DefaultRouter()
router.register(r'sources', StandardSourceViewSet, basename='standard-source')
router.register(r'categories', StandardCategoryViewSet, basename='standard-category')
router.register(r'standards', StandardViewSet, basename='standard')
router.register(r'compliance', StandardComplianceViewSet, basename='standard-compliance')
router.register(r'attachments', StandardAttachmentViewSet, basename='standard-attachment')

app_name = 'standards'

urlpatterns = [
    # API endpoints
    path('api/', include(router.urls)),

    # API endpoint for compliance status
    path('api/compliance/<uuid:department_id>/<uuid:standard_id>/', get_compliance_status, name='compliance_status'),

    # UI Views
    path('', standards_dashboard, name='dashboard'),
    path('search/', standards_search, name='search'),
    path('departments/<uuid:pk>/', department_standards_view, name='department_standards'),
    path('departments/<uuid:department_id>/create-standard/', standard_create, name='standard_create'),
    path('standards/create/', standard_create, name='standard_create_global'),
    path('standards/<uuid:pk>/', standard_detail, name='standard_detail'),
    path('compliance/<uuid:compliance_id>/update/', standard_compliance_update, name='standard_compliance_update'),
    path('attachments/upload/<uuid:compliance_id>/', standard_attachment_upload, name='attachment_upload'),

    # AJAX endpoints
    path('api/compliance/create/', create_compliance_ajax, name='compliance_create_ajax'),
    path('api/compliance/update/', update_compliance_ajax, name='compliance_update_ajax'),

    # Source Management
    path('sources/', source_list, name='source_list'),
    path('sources/create/', source_create, name='source_create'),
    path('sources/<uuid:pk>/update/', source_update, name='source_update'),
    path('sources/<uuid:pk>/delete/', source_delete, name='source_delete'),

    # Category Management
    path('categories/', category_list, name='category_list'),
    path('categories/create/', category_create, name='category_create'),
    path('categories/<uuid:pk>/update/', category_update, name='category_update'),
    path('categories/<uuid:pk>/delete/', category_delete, name='category_delete'),
]
