# core/urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.template.response import TemplateResponse
from django.urls import include, path, re_path
from django.views.static import serve
from django.shortcuts import render, redirect
from content.admin import finance_overview_admin, student_ledger_admin
from content.views import (
    finance_export_csv,
    build_student_lookup_context,
    my_invoices,
    invoice_pay, invoice_bulk_checkout_all, invoice_bulk_checkout_selected,
    invoice_bulk_checkout,
)
from django.contrib.admin.views.decorators import staff_member_required
from ui import views as ui_views
from ui import views
from accounts import views as acc_views
from django.shortcuts import render

def student_lookup_admin(request):
    ctx = admin.site.each_context(request)
    ctx.update(build_student_lookup_context(request))
    ctx.setdefault("title", "Student Lookup")
    return TemplateResponse(request, "admin/students/lookup.html", ctx)


# Django Admin url 
@staff_member_required
def student_profile_admin(request):
    # CHANGED: Redirects to the specific hardcoded path
    return redirect('/dj-admin/content/studentprofile/')
    
    
urlpatterns = [
    path("", ui_views.home, name="home"),

    path("content/", include(("content.urls", "content"), namespace="content")),
    path("accounts/", include(("accounts.urls", "accounts"), namespace="accounts")),

    path("dj-admin/finance/overview/", admin.site.admin_view(finance_overview_admin), name="finance-overview"),
    path("dj-admin/finance/export.csv", admin.site.admin_view(finance_export_csv), name="finance-export"),
    path("dj-admin/finance/student-ledger/", admin.site.admin_view(student_ledger_admin),
         name="finance-student-ledger"),
    path("dj-admin/students/lookup/", admin.site.admin_view(student_lookup_admin), name="student-lookup"),
    path("dj-admin/", admin.site.urls),

    path("admin/", acc_views.honeypot, name="hp_admin_root"),
    path("admin/login/", acc_views.honeypot, name="hp_admin_login"),
    path("teacher/login/", acc_views.honeypot, name="hp_teacher_login"),
    path("teacher/signup/", acc_views.honeypot, name="hp_teacher_signup"),

    path("notices/", ui_views.notices_list, name="notices_list"),
    path("notices/<int:pk>/", ui_views.notice_detail, name="notice_detail"),
    path("admissions/", include("content.urls_admissions", namespace="admissions")),

    path("contact/submit/", ui_views.contact_submit, name="contact_submit"),
    path("gallery/", views.gallery_page, name="gallery"),

    path("results/", views.results_index, name="index"),
    path("results/filter/", views.results_filter, name="results_filter"),
    path("results/<int:summary_id>/", views.results_detail, name="results_detail"),
    path("results-debug/", views.results_debug, name="results_debug"),
    
    path(
        "payment/initiate/invoice/<int:invoice_id>/",
        ui_views.initiate_invoice_payment,
        name="initiate_invoice_payment"
    ),
    
    path(
    "payment/invoice/complete/<int:invoice_id>/",
    ui_views.invoice_payment_complete,
    name="invoice_payment_complete"
),

    # ------------------ New Student-Level Attendance Paths ------------------
    # ------------------ Student-Level Attendance UI + APIs ------------------
    
        # Dashboard (all classes)
        path("attendance/", ui_views.attendance_dashboard, name='attendance_dashboard'),
        
        # Single class attendance page
        path("attendance/class/<int:class_id>/", ui_views.attendance_class_page, name='attendance_class_page'),
        
        # API: Fetch all classes & sections
        path("api/attendance/classes/", views.get_classes_and_sections, name="api_get_classes_sections"),
        
        # API: Fetch students for selected class+section
        path("api/attendance/students/<int:class_id>/<str:section_name>/",
             views.get_section_students, name="api_get_section_students"),
        
        # API: Fetch students when no section is used
        path("api/attendance/students/<int:class_id>/",
             views.get_section_students, {'section_name': ''}, name="api_get_section_students_no_section"),
        path("api/attendance/classday/<int:class_id>/", views.attendance_classday_get, name="attendance_classday_get"),
        # API: Save attendance for the day
        path("api/attendance/save/<int:session_id>/", views.save_attendance, name="api_save_attendance"),
    path("studentprofile/", student_profile_admin, name="student-profile"),
    path("me/invoices/", my_invoices, name="my-invoices"),
    path("me/invoices/<int:invoice_id>/pay/", invoice_pay, name="invoice-pay"),
    path("me/invoices/checkout/all/", invoice_bulk_checkout_all, name="invoice-bulk-checkout-all"),
    path("me/invoices/checkout/selected/", invoice_bulk_checkout_selected, name="invoice-bulk-checkout-selected"),
    path("me/invoices/checkout/", invoice_bulk_checkout, name="invoice-bulk-checkout"),
    re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
    re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),
]

# media served in dev/prod-local
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
