"""
URL configuration for the courses app.
"""
from django.urls import path
from apps.courses import exam_views, growth_views, practical_views, views

app_name = 'courses'

urlpatterns = [
    path('', views.CourseListView.as_view(), name='course_list'),

    # Part 8 ASAP — free diagnostic (public, no login)
    path(
        '<slug:slug>/diagnostic/',
        growth_views.DiagnosticIntroView.as_view(),
        name='diagnostic_intro',
    ),
    path(
        '<slug:slug>/diagnostic/quiz/',
        growth_views.DiagnosticQuizView.as_view(),
        name='diagnostic_quiz',
    ),
    path(
        '<slug:slug>/diagnostic/lead/',
        growth_views.DiagnosticLeadView.as_view(),
        name='diagnostic_lead',
    ),
    path(
        'diagnostic/result/<int:pk>/',
        growth_views.DiagnosticResultView.as_view(),
        name='diagnostic_result',
    ),

    # Part 5 — course exam engine (before slug catch-alls)
    path(
        'exam/start/<slug:slug>/',
        exam_views.StartCourseExamView.as_view(),
        name='exam_start',
    ),
    path(
        'exam/<int:attempt_id>/launch/',
        exam_views.CourseExamLaunchView.as_view(),
        name='exam_launch',
    ),
    path(
        'exam/<int:attempt_id>/',
        exam_views.TakeCourseExamView.as_view(),
        name='take_exam',
    ),
    path(
        'exam/<int:attempt_id>/begin/',
        exam_views.BeginCourseTimedExamView.as_view(),
        name='begin_timed_exam',
    ),
    path(
        'exam/<int:attempt_id>/event/',
        exam_views.CourseExamEventView.as_view(),
        name='exam_event',
    ),
    path(
        'exam/<int:attempt_id>/save-answer/',
        exam_views.CourseExamSaveAnswerView.as_view(),
        name='exam_save_answer',
    ),
    path(
        'exam/<int:attempt_id>/result/',
        exam_views.CourseExamResultView.as_view(),
        name='exam_result',
    ),
    path(
        'exam/<int:attempt_id>/practical/',
        practical_views.PracticalSubmitView.as_view(),
        name='practical_submit',
    ),

    # Part 7 — practical review queue (staff)
    path(
        'practical/review/',
        practical_views.PracticalReviewQueueView.as_view(),
        name='practical_review_queue',
    ),
    path(
        'practical/review/<int:pk>/',
        practical_views.PracticalReviewDetailView.as_view(),
        name='practical_review_detail',
    ),

    path('<slug:slug>/learn/', views.CourseLearningPathView.as_view(), name='learning_path'),
    path(
        '<slug:slug>/learn/modules/<int:module_id>/complete/',
        views.MarkModuleCompleteView.as_view(),
        name='module_complete',
    ),
    path('<slug:slug>/', views.CourseDetailView.as_view(), name='course_detail'),

    # Teacher / Admin course management
    path('create/new/', views.CourseCreateView.as_view(), name='course_create'),
    path('<int:pk>/edit/', views.CourseEditView.as_view(), name='course_edit'),
    path('<int:pk>/delete/', views.CourseDeleteView.as_view(), name='course_delete'),
    path('<int:pk>/manage/', views.ManageCourseView.as_view(), name='manage_course'),

    # Module management
    path('<int:course_pk>/modules/add/', views.ModuleCreateView.as_view(), name='module_create'),
    path('modules/<int:pk>/edit/', views.ModuleEditView.as_view(), name='module_edit'),
    path('modules/<int:pk>/delete/', views.ModuleDeleteView.as_view(), name='module_delete'),

    # Lesson management
    path('modules/<int:module_pk>/lessons/add/', views.LessonCreateView.as_view(), name='lesson_create'),
    path('lessons/<int:pk>/', views.LessonDetailView.as_view(), name='lesson_detail'),
    path('lessons/<int:pk>/edit/', views.LessonEditView.as_view(), name='lesson_edit'),
    path('lessons/<int:pk>/delete/', views.LessonDeleteView.as_view(), name='lesson_delete'),
]
