"""
URL configuration for APIproj project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/5.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""

from django.contrib import admin
from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from rest_framework_simplejwt.views import TokenRefreshView
from flashcard import views as flashcard_views
from knowledge import views as knowledge_views
from course import views as course_views
from exercise import views as exercise_views
from mindmap import views as mindmap_views
from user import views as user_views
from webhook import views as webhook_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('flashcard/', flashcard_views.FlashcardListView.as_view(), name='flashcard_list'),
    path('flashcard/<str:pid>/', flashcard_views.FlashcardDetailView.as_view(), name='flashcard_detail'),
    path('flashcard_review/', flashcard_views.ReviewFlashcard.as_view(), name='flashcard_review'),
    path('format/flashcard/', flashcard_views.FormatFlashcardKnowledge.as_view(), name='format_flashcard'),
    path('knowledge/', knowledge_views.KnowledgeListView.as_view(), name='knowledge_list'),
    path('knowledge/<str:pid>/', knowledge_views.KnowledgeDetailView.as_view(), name='knowledge_detail'),
    path('prompt/knowledge/', flashcard_views.KnowledgePrompt.as_view(), name='knowledge_prompt'),
    path('course/', course_views.CourseListView.as_view(), name='course_list'),
    path('course/<str:pid>/', course_views.CourseDetailView.as_view(), name='course_detail'),
    path('public/course/', course_views.PublicCourseListView.as_view(), name='public_course_list'),
    path('public/course/<str:accessCode>/', course_views.PublicCourseView.as_view(), name='public_course'),
    path('create_slides/', course_views.CreateSlidesView.as_view(), name='create_slides'),
    path('generate_course/', course_views.GenerateCourseView.as_view(), name='generate_course'),
    path('exercise/', exercise_views.ExerciseListView.as_view(), name='exercise_list'),
    path('exercise/<str:pid>/', exercise_views.ExerciseDetailView.as_view(), name='exercise_detail'),
    path('correct_exercise/', exercise_views.CorrectExercise.as_view(), name='correct_exercise'),
    path('mindmap/', mindmap_views.MindmapListView.as_view(), name='mindmap_list'),
    path('mindmap/<str:pid>/', mindmap_views.MindmapDetailView.as_view(), name='mindmap_detail'),
    path('user/<str:pid>/', user_views.UserView.as_view(), name='user_detail'), # identifier peut être un publicIdentifier ou une adresse email
    path('generic-user/', user_views.GenericUserView.as_view(), name='generic_user'),
    path('authentication/', user_views.UserAuthentificationView.as_view(), name='authentication'),
    path('refresh/', TokenRefreshView.as_view(), name='refresh'),
    path('send_email/send_code/', user_views.ManagePassword.as_view(), name='send_email_send_code'),
    path('webhook/stripe/checkout_completed/', webhook_views.stripe_webhook_checkout_completed, name='stripe_webhook_checkout_completed'),
    path('webhook/stripe/subscription_deleted/', webhook_views.stripe_webhook_subscription_deleted, name='stripe_webhook_subscription_deleted'),
    path('webhook/log_error/', webhook_views.log_error, name='log_error'),
]


urlpatterns = format_suffix_patterns(urlpatterns)

