from django.urls import path

from apps.smehub.onboarding import views

app_name = "smehub_onboarding"

urlpatterns = [
    # Public registration & verification
    path("register/", views.RegisterView.as_view(), name="register"),
    path("verify-email/sent/", views.verify_email_sent, name="verify_email_sent"),
    path("verify-email/resend/", views.resend_verification, name="verify_email_resend"),
    path("verify-email/<str:token>/", views.verify_email, name="verify_email"),

    # Public help / mentor directory / newsletter (legacy-migration surfaces)
    path("faq/", views.FaqListView.as_view(), name="faq"),
    path("community/", views.CommunityArchiveView.as_view(), name="community_archive"),
    path("mentors/", views.MentorDirectoryView.as_view(), name="mentor_directory"),
    path("mentors/<int:pk>/", views.MentorDetailView.as_view(), name="mentor_detail"),
    path("mentors/<int:pk>/request-meeting/", views.RequestMentorMeetingView.as_view(), name="mentor_request_meeting"),
    path("my/meetings/", views.MyMeetingRequestsView.as_view(), name="my_meeting_requests"),
    path("my/meetings/<int:pk>/cancel/", views.cancel_meeting_request_view, name="meeting_request_cancel"),
    path("mentor/meetings/", views.MentorMeetingInboxView.as_view(), name="mentor_meeting_inbox"),
    path("mentor/meetings/<int:pk>/respond/", views.respond_meeting_request_view, name="meeting_request_respond"),
    path("admin/newsletter/", views.NewsletterSubscriberListView.as_view(), name="newsletter_subscribers"),
    path("admin/meetings/", views.MeetingRequestListView.as_view(), name="meeting_requests"),
    path("admin/analytics/", views.SmeAnalyticsView.as_view(), name="sme_analytics"),

    # Authenticated dashboard & profile
    path("", views.MyDashboardView.as_view(), name="my_dashboard"),
    path("profile/", views.EntrepreneurProfileWizardView.as_view(), name="entrepreneur_profile_wizard"),
    path("profile/role/", views.RoleProfileCompletionView.as_view(), name="role_profile_complete"),

    # Business
    path("business/new/", views.BusinessRegisterView.as_view(), name="business_register"),
    path("business/", views.MyBusinessesView.as_view(), name="my_businesses"),
    path("business/<int:business_id>/", views.BusinessDetailView.as_view(), name="business_detail"),
    path("business/<int:business_id>/affiliation/", views.AIHAffiliationView.as_view(), name="business_aih"),

    # Admin queues
    path("admin/queue/entrepreneurs/", views.EntrepreneurQueueView.as_view(), name="entrepreneur_queue"),
    path("admin/queue/entrepreneurs/<int:pk>/", views.EntrepreneurDetailView.as_view(), name="entrepreneur_detail"),
    path("admin/queue/entrepreneurs/<int:pk>/verify/", views.verify_entrepreneur_view, name="entrepreneur_verify"),
    path("admin/queue/entrepreneurs/<int:pk>/reject/", views.reject_entrepreneur_view, name="entrepreneur_reject"),
    path("admin/queue/entrepreneurs/<int:pk>/more-info/", views.request_more_info_view, name="entrepreneur_request_info"),
    path("admin/queue/entrepreneurs/bulk-verify/", views.bulk_verify_view, name="entrepreneur_bulk_verify"),

    path("admin/queue/businesses/", views.BusinessQueueView.as_view(), name="business_queue"),
    path("admin/queue/businesses/<int:pk>/", views.BusinessDetailAdminView.as_view(), name="business_detail_admin"),
    path("admin/queue/businesses/<int:pk>/affiliation/", views.AdminAIHAffiliationView.as_view(), name="business_affiliation_admin"),
    path("admin/queue/businesses/<int:pk>/verify/", views.verify_business_view, name="business_verify"),
    path("admin/queue/businesses/<int:pk>/reject/", views.reject_business_view, name="business_reject"),
    path("admin/queue/businesses/<int:pk>/revoke/", views.revoke_business_view, name="business_revoke"),

    path("admin/register/", views.BackendRegisterView.as_view(), name="backend_register"),

    # Innovation lane (Phase 6.1)
    path("innovations/", views.InnovationCatalogueView.as_view(), name="innovation_catalogue"),
    path("innovations/<int:pk>/", views.InnovationDetailView.as_view(), name="innovation_detail"),
    path("my/innovations/", views.MyInnovationsView.as_view(), name="my_innovations"),
    path("my/innovations/new/", views.InnovationCreateView.as_view(), name="innovation_create"),
    path("my/innovations/<int:pk>/edit/", views.InnovationUpdateView.as_view(), name="innovation_edit"),
    path("my/innovations/<int:pk>/withdraw/", views.withdraw_innovation_view, name="innovation_withdraw"),

    # Vetting workspace
    path("admin/vetting/", views.VettingQueueView.as_view(), name="vetting_queue"),
    path("admin/vetting/<int:pk>/", views.VettingFormView.as_view(), name="innovation_vetting"),
    path("admin/vetting/<int:pk>/score/", views.submit_score_view, name="innovation_score"),
    path("admin/vetting/<int:pk>/recommend/", views.submit_recommendation_view, name="innovation_recommend"),
    path("admin/vetting/<int:pk>/assign/", views.assign_evaluator_view, name="innovation_assign_evaluator"),
    path("admin/vetting/<int:pk>/decide/", views.vet_application_view, name="innovation_decide"),
    path("admin/vetting/<int:pk>/onboard/", views.onboard_innovation_view, name="innovation_onboard"),
]
