from django.urls import path

from apps.core.views.views import FSMTransitionView

from . import views

app_name = "rides"

urlpatterns = [
    # Global list views
    path("", views.RideListView.as_view(), name="global_ride_list"),
    # Global category views
    path(
        "roller-coasters/",
        views.SingleCategoryListView.as_view(),
        {"category": "RC"},
        name="global_roller_coasters",
    ),
    path(
        "dark-rides/",
        views.SingleCategoryListView.as_view(),
        {"category": "DR"},
        name="global_dark_rides",
    ),
    path(
        "flat-rides/",
        views.SingleCategoryListView.as_view(),
        {"category": "FR"},
        name="global_flat_rides",
    ),
    path(
        "water-rides/",
        views.SingleCategoryListView.as_view(),
        {"category": "WR"},
        name="global_water_rides",
    ),
    path(
        "transports/",
        views.SingleCategoryListView.as_view(),
        {"category": "TR"},
        name="global_transports",
    ),
    path(
        "others/",
        views.SingleCategoryListView.as_view(),
        {"category": "OT"},
        name="global_others",
    ),
    # Search endpoints (must come before slug patterns)
    path("search/models/", views.search_ride_models, name="search_ride_models"),
    path("search/companies/", views.search_companies, name="search_companies"),
    # HTMX endpoints (must come before slug patterns)
    path("coaster-fields/", views.show_coaster_fields, name="coaster_fields"),
    path(
        "search-suggestions/",
        views.get_search_suggestions,
        name="search_suggestions",
    ),
    # Ranking endpoints
    path("rankings/", views.RideRankingsView.as_view(), name="rankings"),
    path(
        "rankings/<slug:ride_slug>/",
        views.RideRankingDetailView.as_view(),
        name="ranking_detail",
    ),
    path(
        "rankings/<slug:ride_slug>/history-chart/",
        views.ranking_history_chart,
        name="ranking_history_chart",
    ),
    path(
        "rankings/<slug:ride_slug>/comparisons/",
        views.ranking_comparisons,
        name="ranking_comparisons",
    ),
    # Company list views
    path("manufacturers/", views.ManufacturerListView.as_view(), name="manufacturer_list"),
    path("designers/", views.DesignerListView.as_view(), name="designer_list"),
    # API endpoints moved to centralized backend/api/v1/rides/ structure
    # Frontend requests to /api/ are proxied to /api/v1/ by Vite
    # Park-specific URLs
    path("create/", views.RideCreateView.as_view(), name="ride_create"),
    path("<slug:ride_slug>/", views.RideDetailView.as_view(), name="ride_detail"),
    path(
        "<slug:ride_slug>/update/",
        views.RideUpdateView.as_view(),
        name="ride_update",
    ),
    # FSM transition endpoint for rides
    # URL: /rides/<ride_slug>/transition/<transition_name>/
    path(
        "<slug:slug>/transition/<str:transition_name>/",
        FSMTransitionView.as_view(),
        {"app_label": "rides", "model_name": "ride"},
        name="ride_transition",
    ),
]
