from django.shortcuts import render
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView

from .views import (
    # ViewSets API
    LanguageViewSet, CategoryViewSet, ExhibitionViewSet,
    ArtworkViewSet, VisitViewSet, FavoriteViewSet,
    CommentViewSet, StatisticsViewSet, UserProfileViewSet,
    VirtualRoomViewSet, VirtualTourSessionViewSet,

    # Vues Django pour templates
    home_view, artwork_list_view, artwork_detail_view,
    qr_scan_view, add_to_favorites, remove_from_favorites,
    favorites_view, add_comment, category_view,
    exhibition_view, search_view, virtual_tour_view, artwork_3d_view, artwork_creation_wizard, virtual_tour_debug,
    virtual_tour_js_debug, virtual_tour_rooms_api, resend_activation, activate_account
)

# Configuration du routeur API
router = DefaultRouter()
router.register(r'languages', LanguageViewSet, basename='language')
router.register(r'categories', CategoryViewSet, basename='category')
router.register(r'exhibitions', ExhibitionViewSet, basename='exhibition')
router.register(r'artworks', ArtworkViewSet, basename='artwork')
router.register(r'visits', VisitViewSet, basename='visit')
router.register(r'favorites', FavoriteViewSet, basename='favorite')
router.register(r'comments', CommentViewSet, basename='comment')
router.register(r'statistics', StatisticsViewSet, basename='statistics')
router.register(r'users', UserProfileViewSet, basename='user')
router.register(r'virtual-tour/rooms', VirtualRoomViewSet, basename='virtual-room')
router.register(r'virtual-tour/sessions', VirtualTourSessionViewSet, basename='virtual-tour-session')

urlpatterns = [
    # ==================== PAGES WEB (Templates HTML) ====================
    # Page d'accueil
    path('', home_view, name='home'),

    # Œuvres
    path('artworks/', artwork_list_view, name='artwork_list'),
    path('artwork/<uuid:slug>/', artwork_detail_view, name='artwork_detail'),
    path('search/', search_view, name='search'),

    # Scanner QR
    path('scan/', qr_scan_view, name='qr_scan'),

    # Favoris
    path('favorites/', favorites_view, name='favorites'),
    path('artwork/<uuid:artwork_id>/favorite/add/', add_to_favorites, name='add_to_favorites'),
    path('artwork/<uuid:artwork_id>/favorite/remove/', remove_from_favorites, name='remove_from_favorites'),
    path('artwork/<uuid:pk>/3d/', artwork_3d_view, name='artwork_3d_view'),
    path('admin/artwork/wizard/', artwork_creation_wizard, name='artwork_creation_wizard'),
    # Dans urls.py, ajoutez :
    path('virtual-tour/debug/', virtual_tour_debug, name='virtual_tour_debug'),
    path('virtual-tour/rooms.js', virtual_tour_js_debug, name='virtual_tour_js'),
    path('api/virtual-tour/rooms/', virtual_tour_rooms_api, name='virtual_tour_rooms_api'),
    path('resend-activation/', resend_activation, name='resend_activation'),
    path('activation-sent/', lambda r: render(r, 'artworks/activation_sent.html'), name='activation_sent'),



    # Commentaires
    path('artwork/<uuid:artwork_id>/comment/', add_comment, name='add_comment'),

    # Catégories et Expositions
    path('category/<slug:slug>/', category_view, name='category_detail'),
    path('exhibition/<slug:slug>/', exhibition_view, name='exhibition_detail'),

    # Tour virtuel 3D
    path('virtual-tour/', virtual_tour_view, name='virtual_tour'),

    # ==================== API REST ====================
    path('api/v1/', include(router.urls)),

    # Authentication JWT
    path('api/v1/auth/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/v1/auth/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]