from django.urls import path

from apps.mel.reports import views

app_name = "mel_reports"

urlpatterns = [
    path("", views.ReportListView.as_view(), name="report_list"),
    path("generate/", views.ReportGenerateView.as_view(), name="report_generate"),
    path("<int:pk>/", views.ReportDetailView.as_view(), name="report_detail"),
    path("<int:pk>/dashboard/", views.ReportDashboardView.as_view(), name="report_dashboard"),
    path("<int:pk>/narrative/", views.ReportNarrativeView.as_view(), name="report_narrative"),
    path("<int:pk>/publish/", views.ReportPublishView.as_view(), name="report_publish"),
    path("<int:pk>/unpublish/", views.ReportUnpublishView.as_view(), name="report_unpublish"),
    path("<int:pk>/transition/", views.ReportTransitionView.as_view(), name="report_transition"),
    path(
        "<int:pk>/download/<str:fmt>/",
        views.ReportArtifactDownloadView.as_view(),
        name="report_download",
    ),
    path(
        "<int:pk>/share-token/",
        views.ReportShareTokenView.as_view(),
        name="report_share_token",
    ),
    path(
        "public/<str:token>/",
        views.PublicReportView.as_view(),
        name="public_report",
    ),
    path("templates/", views.TemplateListView.as_view(), name="template_list"),
    path("templates/new/", views.TemplateCreateView.as_view(), name="template_create"),
    path(
        "templates/<slug:slug>/edit/",
        views.TemplateUpdateView.as_view(),
        name="template_update",
    ),
    path(
        "templates/<slug:slug>/builder/",
        views.ReportBuilderView.as_view(),
        name="report_builder",
    ),
    path(
        "<int:pk>/sections/<int:section_id>/",
        views.ReportSectionFragmentView.as_view(),
        name="report_section_fragment",
    ),
    path(
        "schedules/",
        views.ScheduledReportListView.as_view(),
        name="scheduled_reports",
    ),
    path(
        "schedules/new/",
        views.ScheduledReportCreateView.as_view(),
        name="scheduled_report_create",
    ),
    path(
        "schedules/<int:pk>/toggle/",
        views.ScheduledReportToggleView.as_view(),
        name="scheduled_report_toggle",
    ),
    path(
        "schedules/<int:pk>/run/",
        views.ScheduledReportRunNowView.as_view(),
        name="scheduled_report_run",
    ),
    path(
        "compliance-alerts/",
        views.ComplianceAlertListView.as_view(),
        name="compliance_alerts",
    ),
    path(
        "compliance-alerts/new/",
        views.ComplianceAlertCreateView.as_view(),
        name="compliance_alert_create",
    ),
    path(
        "compliance-alerts/<int:pk>/resolve/",
        views.ComplianceAlertResolveView.as_view(),
        name="compliance_alert_resolve",
    ),
    path("smehub/donor/", views.SMEHubDonorReportView.as_view(), name="smehub_donor"),
    path(
        "smehub/learning/",
        views.SMEHubLearningReportView.as_view(),
        name="smehub_learning",
    ),
    # G18 — Webhook distribution
    path("webhooks/", views.WebhookListView.as_view(), name="webhooks_list"),
    path("webhooks/add/", views.WebhookCreateView.as_view(), name="webhooks_create"),
    path(
        "webhooks/<int:pk>/edit/",
        views.WebhookUpdateView.as_view(),
        name="webhooks_update",
    ),
    path(
        "webhooks/<int:pk>/delete/",
        views.WebhookDeleteView.as_view(),
        name="webhooks_delete",
    ),
]
