from django.urls import include, path

from . import views

app_name = "stiftung"

urlpatterns = [
    # AI Agent
    path("agent/", include("stiftung.agent.urls")),

    # Home - Main landing page after login
    path("", views.home, name="home"),
    # CSV Import URLs (legacy)
    path("import/", views.csv_import_list, name="csv_import_list"),
    path("import/neu/", views.csv_import_create, name="csv_import_create"),
    # Unified Import/Export Hub
    path("daten/", views.import_export_hub, name="import_export_hub"),
    path("daten/export/", views.csv_export, name="csv_export"),
    path("daten/import/upload/", views.csv_import_upload, name="csv_import_upload"),
    path("daten/import/ausfuehren/", views.csv_import_execute, name="csv_import_execute"),
    # Destinatär URLs (Förderungsempfänger)
    path("destinataere/", views.destinataer_list, name="destinataer_list"),
    path(
        "destinataere/<uuid:pk>/", views.destinataer_detail, name="destinataer_detail"
    ),
    path("destinataere/neu/", views.destinataer_create, name="destinataer_create"),
    path(
        "destinataere/<uuid:pk>/bearbeiten/",
        views.destinataer_update,
        name="destinataer_update",
    ),
    path(
        "destinataere/<uuid:pk>/loeschen/",
        views.destinataer_delete,
        name="destinataer_delete",
    ),
    path(
        "destinataere/<uuid:pk>/archivieren/",
        views.destinataer_toggle_archiv,
        name="destinataer_toggle_archiv",
    ),
    path(
        "destinataere/<uuid:pk>/notiz/",
        views.destinataer_notiz_create,
        name="destinataer_notiz_create",
    ),
    path(
        "destinataere/<uuid:pk>/export/",
        views.destinataer_export,
        name="destinataer_export",
    ),
    # Paechter URLs (Landpächter)
    path("paechter/", views.paechter_list, name="paechter_list"),
    path("paechter/<uuid:pk>/", views.paechter_detail, name="paechter_detail"),
    path("paechter/neu/", views.paechter_create, name="paechter_create"),
    path(
        "paechter/<uuid:pk>/bearbeiten/", views.paechter_update, name="paechter_update"
    ),
    path("paechter/<uuid:pk>/loeschen/", views.paechter_delete, name="paechter_delete"),
    path("paechter/<uuid:pk>/export/", views.paechter_export, name="paechter_export"),
    # Legacy Person URLs removed (Destinatäre ersetzen Personen)
    # Land URLs
    path("laendereien/", views.land_list, name="land_list"),
    path("laendereien/<uuid:pk>/", views.land_detail, name="land_detail"),
    path("laendereien/neu/", views.land_create, name="land_create"),
    path("laendereien/<uuid:pk>/bearbeiten/", views.land_update, name="land_update"),
    path("laendereien/<uuid:pk>/loeschen/", views.land_delete, name="land_delete"),
    path("laendereien/<uuid:pk>/export/", views.land_export, name="land_export"),
    # Landabrechnung URLs
    path("landabrechnungen/", views.land_abrechnung_list, name="land_abrechnung_list"),
    path(
        "landabrechnungen/<uuid:pk>/",
        views.land_abrechnung_detail,
        name="land_abrechnung_detail",
    ),
    path(
        "landabrechnungen/neu/",
        views.land_abrechnung_create,
        name="land_abrechnung_create",
    ),
    path(
        "landabrechnungen/<uuid:pk>/bearbeiten/",
        views.land_abrechnung_update,
        name="land_abrechnung_update",
    ),
    path(
        "landabrechnungen/<uuid:pk>/loeschen/",
        views.land_abrechnung_delete,
        name="land_abrechnung_delete",
    ),
    # Vereinheitlichte Verpachtung URLs (direkt im Land)
    path(
        "laendereien/<uuid:land_pk>/verpachtung/neu/",
        views.land_verpachtung_create,
        name="land_verpachtung_create",
    ),
    path(
        "laendereien/<uuid:land_pk>/verpachtung/bearbeiten/",
        views.land_verpachtung_edit,
        name="land_verpachtung_edit",
    ),
    path(
        "laendereien/<uuid:land_pk>/verpachtung/beenden/",
        views.land_verpachtung_end,
        name="land_verpachtung_end",
    ),
    # LandVerpachtung URLs (neue Verpachtungen)
    path(
        "laendereien/verpachtungen/<uuid:pk>/",
        views.land_verpachtung_detail,
        name="land_verpachtung_detail",
    ),
    path(
        "laendereien/verpachtungen/<uuid:pk>/bearbeiten/",
        views.land_verpachtung_update,
        name="land_verpachtung_update",
    ),
    path(
        "laendereien/verpachtungen/<uuid:pk>/beenden/",
        views.land_verpachtung_end_direct,
        name="land_verpachtung_end_direct",
    ),
    # Verpachtung URLs (Management Overview)
    path("verpachtungen/", views.verpachtung_list, name="verpachtung_list"),
    path("verpachtungen/<uuid:pk>/", views.verpachtung_detail, name="verpachtung_detail"),
    path("verpachtungen/neu/", views.verpachtung_create, name="verpachtung_create"),
    path(
        "verpachtungen/<uuid:pk>/bearbeiten/",
        views.verpachtung_update,
        name="verpachtung_update",
    ),
    path(
        "verpachtungen/<uuid:pk>/loeschen/",
        views.verpachtung_delete,
        name="verpachtung_delete",
    ),
    # Förderung URLs
    path("foerderungen/", views.foerderung_list, name="foerderung_list"),
    path("foerderungen/<uuid:pk>/", views.foerderung_detail, name="foerderung_detail"),
    path("foerderungen/neu/", views.foerderung_create, name="foerderung_create"),
    path(
        "foerderungen/<uuid:pk>/bearbeiten/",
        views.foerderung_update,
        name="foerderung_update",
    ),
    path(
        "foerderungen/<uuid:pk>/loeschen/",
        views.foerderung_delete,
        name="foerderung_delete",
    ),
    # Dokumente-URLs (DMS) – Legacy-Paperless-URLs entfernt (Phase 3)
    # Jahresbericht URLs
    path("berichte/", views.bericht_list, name="bericht_list"),
    path(
        "berichte/jahresbericht/",
        views.jahresbericht_generate_redirect,
        name="jahresbericht_generate_redirect",
    ),
    path(
        "berichte/jahresbericht/<int:jahr>/",
        views.jahresbericht_generate,
        name="jahresbericht_generate",
    ),
    path(
        "berichte/jahresbericht/<int:jahr>/pdf/",
        views.jahresbericht_pdf,
        name="jahresbericht_pdf",
    ),
    path(
        "berichte/zusammenstellen/",
        views.bericht_zusammenstellen,
        name="bericht_zusammenstellen",
    ),
    path(
        "berichte/<str:vorlage_key>/",
        views.bericht_vorlage,
        name="bericht_vorlage",
    ),
    # Geschäftsführung URLs
    path("geschaeftsfuehrung/", views.geschaeftsfuehrung, name="geschaeftsfuehrung"),
    path("geschaeftsfuehrung/konten/", views.konto_list, name="konto_list"),
    path("geschaeftsfuehrung/konten/neu/", views.konto_create, name="konto_create"),
    path(
        "geschaeftsfuehrung/konten/<uuid:pk>/", views.konto_detail, name="konto_detail"
    ),
    path(
        "geschaeftsfuehrung/konten/<uuid:pk>/bearbeiten/",
        views.konto_edit,
        name="konto_edit",
    ),
    path(
        "geschaeftsfuehrung/verwaltungskosten/",
        views.verwaltungskosten_list,
        name="verwaltungskosten_list",
    ),
    path(
        "geschaeftsfuehrung/verwaltungskosten/neu/",
        views.verwaltungskosten_create,
        name="verwaltungskosten_create",
    ),
    path(
        "geschaeftsfuehrung/verwaltungskosten/<uuid:pk>/",
        views.verwaltungskosten_detail,
        name="verwaltungskosten_detail",
    ),
    path(
        "geschaeftsfuehrung/verwaltungskosten/<uuid:pk>/bearbeiten/",
        views.verwaltungskosten_edit,
        name="verwaltungskosten_edit",
    ),
    path(
        "geschaeftsfuehrung/verwaltungskosten/<uuid:pk>/loeschen/",
        views.verwaltungskosten_delete,
        name="verwaltungskosten_delete",
    ),
    path(
        "verwaltungskosten/mark-paid/",
        views.mark_expense_paid,
        name="mark_expense_paid",
    ),
    path(
        "geschaeftsfuehrung/rentmeister/",
        views.rentmeister_list,
        name="rentmeister_list",
    ),
    path(
        "geschaeftsfuehrung/rentmeister/neu/",
        views.rentmeister_create,
        name="rentmeister_create",
    ),
    path(
        "geschaeftsfuehrung/rentmeister/<uuid:pk>/",
        views.rentmeister_detail,
        name="rentmeister_detail",
    ),
    path(
        "geschaeftsfuehrung/rentmeister/<uuid:pk>/bearbeiten/",
        views.rentmeister_edit,
        name="rentmeister_edit",
    ),
    path(
        "geschaeftsfuehrung/rentmeister/<uuid:pk>/ausgaben/",
        views.rentmeister_ausgaben,
        name="rentmeister_ausgaben",
    ),
    # Administration URLs
    path("administration/", views.administration, name="administration"),
    path("administration/settings/", views.app_settings, name="app_settings"),
    path("administration/email/", views.email_settings, name="email_settings"),
    path("administration/audit-log/", views.audit_log_list, name="audit_log_list"),
    path("administration/backup/", views.backup_management, name="backup_management"),
    path(
        "administration/backup/<uuid:backup_id>/download/",
        views.backup_download,
        name="backup_download",
    ),
    path("administration/backup/restore/", views.backup_restore, name="backup_restore"),
    path(
        "administration/backup/<uuid:backup_id>/cancel/",
        views.backup_cancel,
        name="backup_cancel",
    ),
    path(
        "administration/unterstuetzungen/",
        views.unterstuetzungen_list,
        name="unterstuetzungen_list",
    ),
    path(
        "administration/unterstuetzungen/<uuid:pk>/bearbeiten/",
        views.unterstuetzung_edit,
        name="unterstuetzung_edit",
    ),
    path(
        "administration/unterstuetzungen/<uuid:pk>/loeschen/",
        views.unterstuetzung_delete,
        name="unterstuetzung_delete",
    ),
    # Unterstützungen URLs (direct access from Destinataer)
    path("unterstuetzungen/", views.unterstuetzungen_all, name="unterstuetzungen_all"),
    path(
        "unterstuetzungen/neu/",
        views.unterstuetzung_create,
        name="unterstuetzung_create",
    ),
    path(
        "unterstuetzungen/<uuid:pk>/",
        views.unterstuetzung_detail,
        name="unterstuetzung_detail",
    ),
    path(
        "unterstuetzungen/<uuid:pk>/bezahlt/",
        views.unterstuetzung_mark_paid,
        name="unterstuetzung_mark_paid",
    ),
    path(
        "unterstuetzungen/wiederkehrend/",
        views.wiederkehrende_unterstuetzungen,
        name="wiederkehrende_unterstuetzungen",
    ),
    # AJAX endpoints
    path(
        "api/destinataer/<uuid:destinataer_id>/info/",
        views.get_destinataer_info,
        name="get_destinataer_info",
    ),
    # Authentication URLs
    path("login/", views.user_login, name="login"),
    path("logout/", views.user_logout, name="logout"),
    # User Management URLs
    path("administration/users/", views.user_management, name="user_management"),
    path("administration/users/create/", views.user_create, name="user_create"),
    path("administration/users/<int:pk>/", views.user_detail, name="user_detail"),
    path("administration/users/<int:pk>/edit/", views.user_edit, name="user_edit"),
    path(
        "administration/users/<int:pk>/password/",
        views.user_change_password,
        name="user_change_password",
    ),
    path(
        "administration/users/<int:pk>/permissions/",
        views.user_permissions,
        name="user_permissions",
    ),
    path(
        "administration/users/<int:pk>/delete/", views.user_delete, name="user_delete"
    ),
    # Two-Factor Authentication URLs
    path("auth/2fa/setup/", views.two_factor_setup, name="two_factor_setup"),
    path("auth/2fa/qr/", views.two_factor_qr, name="two_factor_qr"),
    path("auth/2fa/verify/", views.two_factor_verify, name="two_factor_verify"),
    path("auth/2fa/disable/", views.two_factor_disable, name="two_factor_disable"),
    path("auth/2fa/backup-tokens/", views.backup_tokens, name="backup_tokens"),
    # Hilfsbox URLs
    path("help-box/edit/", views.edit_help_box, name="edit_help_box"),
    path("help-box/admin/", views.edit_help_box, name="help_boxes_admin"),
    # Phase 4: Globale Suche (Cmd+K)
    path("api/suche/", views.globale_suche_api, name="globale_suche_api"),

    # API URLs
    path("api/land-stats/", views.land_stats_api, name="land_stats_api"),
    path("api/health/", views.health_check, name="health_check"),
    # Veranstaltungsmodul
    path("veranstaltungen/", views.veranstaltung_list, name="veranstaltung_list"),
    path("veranstaltungen/neu/", views.veranstaltung_create, name="veranstaltung_create"),
    path("veranstaltungen/<uuid:pk>/", views.veranstaltung_detail, name="veranstaltung_detail"),
    path("veranstaltungen/<uuid:pk>/bearbeiten/", views.veranstaltung_update, name="veranstaltung_update"),
    path("veranstaltungen/<uuid:pk>/loeschen/", views.veranstaltung_delete, name="veranstaltung_delete"),
    path(
        "veranstaltungen/<uuid:pk>/serienbrief/",
        views.veranstaltung_serienbrief_pdf,
        name="veranstaltung_serienbrief_pdf",
    ),
    path(
        "veranstaltungen/<uuid:pk>/serienbrief-vorschau/",
        views.veranstaltung_serienbrief_vorschau,
        name="veranstaltung_serienbrief_vorschau",
    ),
    # Teilnehmer CRUD
    path(
        "veranstaltungen/<uuid:veranstaltung_pk>/teilnehmer/neu/",
        views.teilnehmer_create,
        name="teilnehmer_create",
    ),
    path(
        "veranstaltungen/<uuid:veranstaltung_pk>/teilnehmer/<uuid:pk>/bearbeiten/",
        views.teilnehmer_update,
        name="teilnehmer_update",
    ),
    path(
        "veranstaltungen/<uuid:veranstaltung_pk>/teilnehmer/<uuid:pk>/loeschen/",
        views.teilnehmer_delete,
        name="teilnehmer_delete",
    ),
    # Gramps integration (probe)
    path("api/gramps/search/", views.gramps_search_api, name="gramps_search_api"),
    path("api/gramps/debug/", views.gramps_debug_api, name="gramps_debug_api"),
    # Quarterly Confirmations
    path(
        "quarterly-confirmations/create/<uuid:destinataer_id>/",
        views.quarterly_confirmation_create,
        name="quarterly_confirmation_create",
    ),
    path(
        "quarterly-confirmations/<uuid:pk>/edit/",
        views.quarterly_confirmation_edit,
        name="quarterly_confirmation_edit",
    ),
    path(
        "quarterly-confirmations/<uuid:pk>/update/",
        views.quarterly_confirmation_update,
        name="quarterly_confirmation_update",
    ),
    path(
        "quarterly-confirmations/<uuid:pk>/approve/",
        views.quarterly_confirmation_approve,
        name="quarterly_confirmation_approve",
    ),
    path(
        "quarterly-confirmations/<uuid:pk>/reset/",
        views.quarterly_confirmation_reset,
        name="quarterly_confirmation_reset",
    ),
    # Geschichte URLs
    path("geschichte/", views.geschichte_list, name="geschichte_list"),
    path("geschichte/neu/", views.geschichte_create, name="geschichte_create"),
    path("geschichte/<slug:slug>/", views.geschichte_detail, name="geschichte_detail"),
    path("geschichte/<slug:slug>/bearbeiten/", views.geschichte_edit, name="geschichte_edit"),
    path("geschichte/<slug:slug>/bild-upload/", views.geschichte_bild_upload, name="geschichte_bild_upload"),
    path("geschichte/<slug:slug>/bild/<uuid:bild_id>/loeschen/", views.geschichte_bild_delete, name="geschichte_bild_delete"),
    
    # E-Mail-Eingang Destinatäre
    path("email-eingang/", views.email_eingang_list, name="email_eingang_list"),
    path("email-eingang/<uuid:pk>/", views.email_eingang_detail, name="email_eingang_detail"),
    path("email-eingang/<uuid:pk>/loeschen/", views.email_eingang_delete, name="email_eingang_delete"),
    path("email-eingang/poll/", views.email_eingang_poll_trigger, name="email_eingang_poll_trigger"),
    # Kalender URLs
    path("kalender/", views.kalender_view, name="kalender"),
    path("kalender/admin/", views.kalender_admin, name="kalender_admin"),
    path("kalender/neu/", views.kalender_create, name="kalender_create"),
    path("kalender/<uuid:pk>/", views.kalender_detail, name="kalender_detail"),
    path("kalender/<uuid:pk>/bearbeiten/", views.kalender_edit, name="kalender_edit"),
    path("kalender/<uuid:pk>/loeschen/", views.kalender_delete, name="kalender_delete"),
    path("kalender/api/events/", views.kalender_api_events, name="kalender_api_events"),

    # Phase 2: Destinatär-Timeline (2a)
    path(
        "destinataere/<uuid:pk>/timeline/",
        views.destinataer_timeline,
        name="destinataer_timeline",
    ),

    # Phase 2: Nachweis-Board (2b)
    path("nachweis-board/", views.nachweis_board, name="nachweis_board"),
    path(
        "nachweis-board/erinnerung/",
        views.batch_erinnerung_senden,
        name="batch_erinnerung_senden",
    ),

    # Phase 2: Zahlungs-Pipeline (2c)
    path("zahlungs-pipeline/", views.zahlungs_pipeline, name="zahlungs_pipeline"),
    path(
        "unterstuetzungen/<uuid:pk>/freigeben/",
        views.unterstuetzung_freigeben,
        name="unterstuetzung_freigeben",
    ),
    path(
        "unterstuetzungen/<uuid:pk>/nachweis-eingereicht/",
        views.unterstuetzung_nachweis_eingereicht,
        name="unterstuetzung_nachweis_eingereicht",
    ),
    path(
        "unterstuetzungen/<uuid:pk>/abschliessen/",
        views.unterstuetzung_abschliessen,
        name="unterstuetzung_abschliessen",
    ),
    path("sepa-export/", views.sepa_xml_export, name="sepa_xml_export"),

    # Phase 2: Pächter-Workflow (2d)
    path("paechter/workflow/", views.paechter_workflow, name="paechter_workflow"),

    # Phase 4: Upload-Portal – Admin-seitige Auslöser
    path(
        "quarterly-confirmations/<uuid:nachweis_pk>/aufforderung-senden/",
        views.nachweis_aufforderung_senden,
        name="nachweis_aufforderung_senden",
    ),
    path(
        "nachweis-board/batch-aufforderung-senden/",
        views.batch_nachweis_aufforderung_senden,
        name="batch_nachweis_aufforderung_senden",
    ),

    # Phase 5: Onboarding – Admin-Seite
    path(
        "destinataere/onboarding/einladen/",
        views.onboarding_einladung_senden,
        name="onboarding_einladung_senden",
    ),
    path(
        "destinataere/onboarding/einladungen/",
        views.onboarding_einladung_liste,
        name="onboarding_einladung_liste",
    ),
    path(
        "destinataere/onboarding/einladungen/<uuid:pk>/widerrufen/",
        views.onboarding_einladung_widerrufen,
        name="onboarding_einladung_widerrufen",
    ),
    # Bestätigungsschreiben
    path(
        "destinataere/<uuid:pk>/bestaetigung/",
        views.bestaetigung_vorschau,
        name="bestaetigung_vorschau",
    ),
    path(
        "destinataere/<uuid:pk>/bestaetigung/versenden/",
        views.bestaetigung_versenden,
        name="bestaetigung_versenden",
    ),

    # Dokument-Vorlagen-Editor
    path("administration/vorlagen/", views.vorlagen_liste, name="vorlagen_liste"),
    path("administration/vorlagen/<uuid:pk>/", views.vorlage_editor, name="vorlage_editor"),
    path("administration/vorlagen/<uuid:pk>/zuruecksetzen/", views.vorlage_zuruecksetzen, name="vorlage_zuruecksetzen"),
    path("administration/vorlagen/<uuid:pk>/vorschau/", views.vorlage_vorschau, name="vorlage_vorschau"),
    path("administration/vorlagen/alle-zuruecksetzen/", views.vorlagen_alle_zuruecksetzen, name="vorlagen_alle_zuruecksetzen"),

    # Phase 3: DMS – Django-natives Dokumentenmanagement
    path("dms/", views.dms_list, name="dms_list"),
    path("dms/hochladen/", views.dms_upload, name="dms_upload"),
    path("dms/suche/", views.dms_search_api, name="dms_search_api"),
    path("dms/<uuid:pk>/", views.dms_detail, name="dms_detail"),
    path("dms/<uuid:pk>/herunterladen/", views.dms_download, name="dms_download"),
    path("dms/<uuid:pk>/bearbeiten/", views.dms_edit, name="dms_edit"),
    path("dms/<uuid:pk>/loeschen/", views.dms_delete, name="dms_delete"),
]
