from django.urls import path, include, re_path
from rest_framework.routers import DefaultRouter
from .views import StampViewSet, monthly_balance, todays_progress, balance_screen_data, approve_day, cancel_approval_day, worktime_report, worktime_report_excel, worktime_report_pdf, get_user_stamp_permissions_view

# Don't use the router - manually define all routes to avoid conflicts
# router = DefaultRouter()
# router.register(r'stamps', StampViewSet, basename='stamp')

urlpatterns = [
    # Specific action routes - MUST come before detail view to avoid conflicts
    # Order matters: most specific paths first
    path('stamps/worktime-report/excel/', worktime_report_excel, name='worktime-report-excel'),
    path('stamps/worktime-report/pdf/', worktime_report_pdf, name='worktime-report-pdf'),
    path('stamps/worktime-report/', worktime_report, name='worktime-report'),
    path('stamps/todays-progress/', todays_progress, name='todays-progress'),
    path('stamps/monthly-balance/', monthly_balance, name='monthly-balance'),
    path('stamps/balance-screen/', balance_screen_data, name='balance-screen'),
    path('stamps/approve-day/', approve_day, name='approve-day'),
    path('stamps/cancel-approval-day/', cancel_approval_day, name='cancel-approval-day'),
    path('stamps/permissions/', get_user_stamp_permissions_view, name='stamp-permissions'),
    # List and create routes
    path('stamps/', StampViewSet.as_view({'get': 'list', 'post': 'create'}), name='stamp-list'),
    # Detail view with strict UUID regex pattern - only matches valid UUIDs
    # This MUST come last to avoid matching action routes
    # The regex should NOT match "permissions" but adding extra safety in view
    re_path(r'^stamps/(?P<pk>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/$', 
            StampViewSet.as_view({'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'}), 
            name='stamp-detail'),
]
