from django.urls import path

from apps.smehub.incubation import views

app_name = "smehub_incubation"

urlpatterns = [
    # Hub landing — re-homes Browse / My programme / Mentor / Judge / Cohorts links.
    path("hub/", views.IncubationHubView.as_view(), name="hub"),
    # Public / authenticated browsing
    path("", views.ProgrammeListView.as_view(), name="programme_list"),
    path("p/<slug:slug>/", views.ProgrammeDetailView.as_view(), name="programme_detail"),

    # Competitions — calls with a dynamic application form + judged scores
    path("competitions/", views.CompetitionListView.as_view(), name="competition_list"),
    path("competitions/<int:pk>/", views.CompetitionDetailView.as_view(), name="competition_detail"),

    # Officer programme management
    path("manage/", views.ProgrammeManageListView.as_view(), name="programme_manage_list"),
    # FRSME-INC015 — first-level review queue (Slice B.3a).
    path("manage/applications/", views.ApplicationReviewQueueView.as_view(), name="application_review_queue"),
    path("manage/new/", views.ProgrammeCreateView.as_view(), name="programme_create"),
    path("manage/<int:pk>/edit/", views.ProgrammeUpdateView.as_view(), name="programme_update"),
    path("manage/<int:pk>/rubric/", views.ProgrammeRubricView.as_view(), name="programme_rubric"),
    path("manage/<int:pk>/courses/", views.ProgrammeCoursesView.as_view(), name="programme_courses"),
    path("manage/<int:pk>/publish/", views.publish_programme_view, name="programme_publish"),
    path("manage/<int:pk>/close/", views.close_programme_view, name="programme_close"),
    path("manage/<int:pk>/notify/", views.notify_eligible_view, name="programme_notify"),
    path("manage/<int:pk>/selection/", views.SelectionDashboardView.as_view(), name="selection_dashboard"),
    path("manage/<int:pk>/confirm-cohort/", views.confirm_cohort_view, name="confirm_cohort"),

    # Application — entrepreneur
    path("apply/<slug:slug>/", views.start_application_view, name="application_start"),
    path("application/<int:pk>/", views.ApplicationWizardView.as_view(), name="application_wizard"),
    path("application/<int:pk>/auto-save/", views.application_auto_save_view, name="application_auto_save"),
    path("application/<int:pk>/submit/", views.application_submit_view, name="application_submit"),
    path("application/<int:pk>/withdraw/", views.application_withdraw_view, name="application_withdraw"),
    path(
        "application/<int:pk>/documents/upload/",
        views.application_document_upload_view,
        name="application_document_upload",
    ),
    path(
        "application/<int:pk>/documents/<int:doc_pk>/delete/",
        views.application_document_delete_view,
        name="application_document_delete",
    ),

    # Officer application review
    path("manage/application/<int:pk>/", views.ApplicationDetailView.as_view(), name="application_detail"),
    path("manage/application/<int:pk>/review/", views.application_begin_review_view, name="application_review"),
    path("manage/application/<int:pk>/return/", views.application_return_view, name="application_return"),
    path("manage/application/<int:pk>/assign/", views.AssignJudgesView.as_view(), name="application_assign_judges"),

    # Judge
    path("judge/", views.JudgeQueueView.as_view(), name="judge_queue"),
    path("judge/application/<int:pk>/", views.JudgeScoreView.as_view(), name="judge_score_form"),

    # Cohorts
    path("cohorts/", views.CohortListView.as_view(), name="cohort_list"),
    path("cohorts/<int:pk>/", views.CohortDetailView.as_view(), name="cohort_detail"),
    path("cohorts/<int:pk>/enrol-rep/", views.enrol_cohort_in_courses_view, name="cohort_enrol_rep"),
    path(
        "cohorts/member/<int:pk>/retry-enrolment/",
        views.cohort_member_retry_enrolment_view,
        name="cohort_member_retry_enrolment",
    ),
    path("cohorts/member/<int:pk>/assign-mentor/", views.AssignMentorView.as_view(), name="assign_mentor"),
    path("cohorts/member/<int:pk>/withdraw/", views.WithdrawMemberView.as_view(), name="cohort_withdraw"),
    path("cohorts/member/<int:pk>/complete/", views.ManualCompleteView.as_view(), name="cohort_manual_complete"),
    path("cohorts/member/<int:pk>/manual-training/", views.RecordManualTrainingView.as_view(), name="cohort_manual_training"),
    path("cohorts/member/<int:pk>/readiness/", views.ReadinessAssessmentListView.as_view(), name="readiness_list"),
    path("cohorts/member/<int:pk>/readiness/new/", views.RecordReadinessAssessmentView.as_view(), name="readiness_record"),

    # Mentor
    path("mentor/", views.MentorDashboardView.as_view(), name="mentor_dashboard"),
    path("mentor/assignment/<int:pk>/session/new/", views.BookSessionView.as_view(), name="session_book"),
    path("mentor/session/<int:pk>/complete/", views.complete_session_view, name="session_complete"),
    path("mentor/session/<int:pk>/cancel/", views.cancel_session_view, name="session_cancel"),

    # Entrepreneur dashboard
    path("my/", views.MyProgrammeView.as_view(), name="my_programme"),

    # Certificates (FRSME-INC034)
    path("certificate/<int:pk>/download/", views.certificate_download_view, name="certificate_download"),
]
