from django.urls import path, include, re_path
from rest_framework.routers import DefaultRouter
from .views import (
    FeedbackEventViewSet, FeedbackCategoryViewSet,
    FeedbackViewSet, PublicFeedbackView,
    FeedbackDashboardView, FeedbackConfigView,
    PublicEventDetailView, PublicEventCategoriesView, PublicFeedbackSubmitView,
    PublicEventStatsView,
)

router = DefaultRouter()
router.register(r'events', FeedbackEventViewSet, basename='feedback-event')
router.register(r'categories', FeedbackCategoryViewSet, basename='feedback-category')
router.register(r'entries', FeedbackViewSet, basename='feedback-entry')

# Slug pattern: must contain at least one letter — pure numeric pk strings (e.g. '1') have no
# letters and won't match, so PATCH/PUT/DELETE on /events/{pk}/ falls through to the DRF router
_SLUG = r'(?P<slug>[a-zA-Z0-9-]*[a-zA-Z][a-zA-Z0-9-]*)'

urlpatterns = [
    # Public slug-based endpoints (must come before router to match first)
    # re_path with negative lookahead prevents these from matching numeric pk values
    re_path(rf'^events/{_SLUG}/stats/$', PublicEventStatsView.as_view(), name='public-event-stats'),
    re_path(rf'^events/{_SLUG}/categories/$', PublicEventCategoriesView.as_view(), name='public-event-categories'),
    re_path(rf'^events/{_SLUG}/$', PublicEventDetailView.as_view(), name='public-event-detail'),
    path('submit/', PublicFeedbackSubmitView.as_view(), name='public-feedback-submit'),
    path('public/', PublicFeedbackView.as_view(), name='public-feedback-legacy'),
    path('dashboard/', FeedbackDashboardView.as_view(), name='feedback-dashboard'),
    path('config/', FeedbackConfigView.as_view(), name='feedback-config'),
    # Admin endpoints (require auth)
    path('', include(router.urls)),
]
