# ============================================================
# LMIS – CLEAN URLS, SECURITY & ROUTING (FINAL CLEAN VERSION)
# ============================================================

# PHP version must be selected in the hosting control panel. Do not hard-code
# a cPanel handler here: it breaks PHP-FPM, LiteSpeed and non-EasyApache hosts.

# ============================================================
# CORE SETTINGS
# ============================================================
Options -Indexes
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
# ============================================================
# PWA FILES - SERVE DIRECTLY
# ============================================================

<IfModule mod_mime.c>
    AddType application/manifest+json .json
    AddType application/javascript .js
</IfModule>

RewriteRule ^manifest\.json$ - [L]
RewriteRule ^service-worker\.js$ - [L]
RewriteRule ^offline\.php$ - [L]
RewriteRule ^assets/pwa/ - [L]

# Session cookie settings are applied by the PHP bootstrap so this file stays
# portable across mod_php, PHP-FPM, LiteSpeed and CGI environments.

# ============================================================
# FORCE HTTPS
# ============================================================
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteCond %{HTTP:CF-Visitor} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]





# ============================================================
# ALLOW DIRECT ACCESS TO PUBLIC UPLOADS & VERIFICATION
# ============================================================
# Learner assessment evidence is private. It must pass through the
# authenticated evidence controller below; public resources remain available.
RewriteRule ^uploads/assignments/submissions/ - [F,L]
RewriteRule ^uploads/ - [L]
RewriteRule ^verify/enrollment/([A-Za-z0-9\-_]+)/?$ modules/enrollments/verify.php?token=$1 [L,QSA]
RewriteRule ^enrollments/confirmation/([0-9]+)/?$ modules/enrollments/confirmation.php?id=$1 [L,QSA]
RewriteRule ^enrollments/email-confirmation/?$ modules/enrollments/email_confirmation.php [L,QSA]

# ============================================================
# LEGACY URL REDIRECTS (SEO + SAFE REDIRECTS)
# ============================================================
RewriteCond %{THE_REQUEST} \s/+modules/dashboard/index\.php [NC]
RewriteRule ^modules/dashboard/index\.php$ /dashboard [R=301,L]

RewriteCond %{THE_REQUEST} \s/+login\.php [NC]
RewriteRule ^login\.php$ /login [R=301,L]

RewriteCond %{THE_REQUEST} \s/+verify\.php [NC]
RewriteRule ^verify\.php$ /verify [R=301,L]

# Legacy role login pages caused redirect loops. All roles authenticate via
# the shared /login page; authenticated users land on their role dashboard.
RewriteRule ^facilitator/login\.php$ /facilitator/dashboard [R=302,L,NE]
RewriteRule ^assessor/login\.php$ /assessor/dashboard [R=302,L,NE]
RewriteRule ^moderator/login\.php$ /moderator/dashboard [R=302,L,NE]
RewriteRule ^verifier/login\.php$ /verifier/dashboard [R=302,L,NE]

# Old password recovery filenames -> one canonical reset URL
RewriteCond %{THE_REQUEST} \s/+reset-password\.php [NC]
RewriteRule ^reset-password\.php$ /reset-password [R=301,L]

# ============================================================
# AUTH ROUTES
# ============================================================
RewriteRule ^login/?$ login.php [L,QSA]
RewriteRule ^logout/?$ logout.php [L,QSA]
RewriteRule ^verify/?$ verify.php [L,QSA]

# Password recovery — canonical name
RewriteRule ^reset-password/?$ reset-password.php [L,QSA]

# Compatibility for any old cached/bookmarked URL
RewriteRule ^forgot-password/?$ /reset-password [R=301,L]

# LMIS AI Assistant clean route
RewriteRule ^ai-assistant/chat/?$ modules/system/ai-assistant-chat.php [L,QSA]

# ============================================================
# DASHBOARD
# ============================================================
RewriteRule ^dashboard/?$ modules/dashboard/index.php [L,QSA]
# FACILITATOR PORTAL — assignment-scoped delivery workspace
RewriteRule ^facilitator/?$ modules/dashboard/facilitators/index.php [L,QSA]
RewriteRule ^facilitator/dashboard/?$ modules/dashboard/facilitators/index.php [L,QSA]
RewriteRule ^facilitator/interventions/?$ modules/dashboard/facilitators/interventions.php [L,QSA]
RewriteRule ^facilitator/learners/?$ modules/dashboard/facilitators/learners.php [L,QSA]
RewriteRule ^facilitator/learners/([0-9]+)/?$ modules/dashboard/facilitators/learners.php?intervention_id=$1 [L,QSA]
RewriteRule ^facilitator/learner-record/?$ modules/dashboard/facilitators/learner-record.php [L,QSA]
RewriteRule ^facilitator/score-report/?$ modules/certifications/score_report.php [L,QSA]
RewriteRule ^facilitator/delivery/?$ modules/dashboard/facilitators/delivery.php [L,QSA]
RewriteRule ^facilitator/attendance/?$ modules/dashboard/facilitators/attendance.php [L,QSA]
RewriteRule ^facilitator/progress/?$ modules/dashboard/facilitators/progress.php [L,QSA]
RewriteRule ^facilitator/history/?$ modules/dashboard/facilitators/history.php [L,QSA]
RewriteRule ^facilitator/reports/?$ modules/dashboard/facilitators/reports.php [L,QSA]
RewriteRule ^facilitator/reports/pdf/?$ modules/certifications/role_report.php [L,QSA]

# ============================================================
# ASSESSOR PORTAL
# Dedicated assessor workspace. Keep these before broad blocks.
# ============================================================
RewriteRule ^assessor/?$ modules/dashboard/assessors/index.php [L,QSA]
RewriteRule ^assessor/dashboard/?$ modules/dashboard/assessors/index.php [L,QSA]
RewriteRule ^assessor/interventions/?$ modules/dashboard/assessors/interventions.php [L,QSA]
RewriteRule ^assessor/learners/?$ modules/dashboard/assessors/learners.php [L,QSA]
RewriteRule ^assessor/learners/([0-9]+)/?$ modules/dashboard/assessors/learners.php?intervention_id=$1 [L,QSA]
RewriteRule ^assessor/learner-record/?$ modules/dashboard/assessors/learner-record.php [L,QSA]
RewriteRule ^assessor/score-report/?$ modules/certifications/score_report.php [L,QSA]
RewriteRule ^assessor/queue/?$ modules/dashboard/assessors/queue.php [L,QSA]
RewriteRule ^assessor/review/?$ modules/dashboard/assessors/review.php [L,QSA]
RewriteRule ^assessor/evidence/?$ modules/dashboard/assessors/evidence.php [L,QSA]
RewriteRule ^assessor/results/?$ modules/dashboard/assessors/results.php [L,QSA]
RewriteRule ^assessor/history/?$ modules/dashboard/assessors/history.php [L,QSA]
RewriteRule ^assessor/reports/?$ modules/dashboard/assessors/reports.php [L,QSA]
RewriteRule ^assessor/reports/pdf/?$ modules/certifications/role_report.php [L,QSA]

# ============================================================
# MODERATOR PORTAL — independent internal QA workspace
# ============================================================
RewriteRule ^moderator/?$ modules/dashboard/moderators/index.php [L,QSA]
RewriteRule ^moderator/dashboard/?$ modules/dashboard/moderators/index.php [L,QSA]
RewriteRule ^moderator/interventions/?$ modules/dashboard/moderators/interventions.php [L,QSA]
RewriteRule ^moderator/learners/?$ modules/dashboard/moderators/learners.php [L,QSA]
RewriteRule ^moderator/learners/([0-9]+)/?$ modules/dashboard/moderators/learners.php?intervention_id=$1 [L,QSA]
RewriteRule ^moderator/learner-record/?$ modules/dashboard/moderators/learner-record.php [L,QSA]
RewriteRule ^moderator/score-report/?$ modules/certifications/score_report.php [L,QSA]
RewriteRule ^moderator/queue/?$ modules/dashboard/moderators/queue.php [L,QSA]
RewriteRule ^moderator/review/?$ modules/dashboard/moderators/review.php [L,QSA]
RewriteRule ^moderator/evidence/?$ modules/dashboard/moderators/evidence.php [L,QSA]
RewriteRule ^moderator/outcomes/?$ modules/dashboard/moderators/outcomes.php [L,QSA]
RewriteRule ^moderator/history/?$ modules/dashboard/moderators/history.php [L,QSA]
RewriteRule ^moderator/reports/?$ modules/dashboard/moderators/reports.php [L,QSA]
RewriteRule ^moderator/reports/pdf/?$ modules/certifications/role_report.php [L,QSA]
# ============================================================
# VERIFIER PORTAL — assigned readiness and audit-control workspace
# ============================================================
RewriteRule ^verifier/?$ modules/dashboard/verifiers/index.php [L,QSA]
RewriteRule ^verifier/dashboard/?$ modules/dashboard/verifiers/index.php [L,QSA]
RewriteRule ^verifier/interventions/?$ modules/dashboard/verifiers/interventions.php [L,QSA]
RewriteRule ^verifier/learners/?$ modules/dashboard/verifiers/learners.php [L,QSA]
RewriteRule ^verifier/learners/([0-9]+)/?$ modules/dashboard/verifiers/learners.php?intervention_id=$1 [L,QSA]
RewriteRule ^verifier/queue/?$ modules/dashboard/verifiers/queue.php [L,QSA]
RewriteRule ^verifier/review/?$ modules/dashboard/verifiers/review.php [L,QSA]
RewriteRule ^verifier/evidence/?$ modules/dashboard/verifiers/evidence.php [L,QSA]
RewriteRule ^verifier/decisions/?$ modules/dashboard/verifiers/decisions.php [L,QSA]
RewriteRule ^verifier/reports/?$ modules/dashboard/verifiers/reports.php [L,QSA]
# Bulk SOR generation
RewriteRule ^certifications/generate-bulk-sor/?$ modules/certifications/generate_bulk_sor.php [L,QSA]

# Bulk Certificate generation
RewriteRule ^certifications/generate-bulk-certificate/?$ modules/certifications/generate_bulk_certificate.php [L,QSA]

# Single SOR generation
RewriteRule ^certifications/generate-sor/?$ modules/certifications/generate_sor.php [L,QSA]

# View SOR by ID
RewriteRule ^certifications/sor/([0-9]+)/?$ modules/certifications/view_sor.php?id=$1 [L,QSA]
RewriteRule ^certifications/bulk-download/?$ modules/certifications/bulk_download.php [L,QSA]

# ============================================================
# POE MODULE ROUTES
# ============================================================

# POE Dashboard - List all interventions
RewriteRule ^poe/?$ modules/poe/index.php [L,QSA]

# POE Intervention View - View learners in an intervention
RewriteRule ^poe/intervention/([0-9]+)/?$ modules/poe/view.php?intervention_id=$1 [L,QSA]
RewriteRule ^learner/programme/topic/([0-9]+)/?$ modules/dashboard/learners/programme/topic.php?id=$1 [L,QSA]
# POE Single Learner View
RewriteRule ^poe/view/([0-9]+)/?$ modules/poe/learner.php?learner_id=$1 [L,QSA]

# POE Single Learner Export - ZIP (single learner)
RewriteRule ^poe/export-zip/([0-9]+)/?$ modules/poe/export-zip.php?learner_id=$1 [L,QSA]

# POE Single Learner Export - PDF (single learner)
RewriteRule ^poe/export-pdf/([0-9]+)/?$ modules/poe/export-pdf.php?learner_id=$1 [L,QSA]

# POE Single Learner Export - Legacy export (single learner)
RewriteRule ^poe/export/([0-9]+)/?$ modules/poe/export.php?learner_id=$1 [L,QSA]

# POE Intervention Export - PDF (legacy - single intervention report)
RewriteRule ^poe/export-intervention/([0-9]+)/?$ modules/poe/export_intervention.php?intervention_id=$1 [L,QSA]

# POE Intervention Export - ZIP (ALL learners under intervention)
RewriteRule ^poe/export-intervention-zip/([0-9]+)/?$ modules/poe/export-intervention-zip.php?intervention_id=$1 [L,QSA]
# ============================================================
# ZOOM / TEAMS / MEET SESSIONS MODULE ROUTES
# ============================================================

# Zoom Sessions - Main routes
RewriteRule ^zoom-sessions/?$ modules/zoom_sessions/index.php [L,QSA]
RewriteRule ^zoom-sessions/add/?$ modules/zoom_sessions/add.php [L,QSA]
RewriteRule ^zoom-sessions/view/([0-9]+)/?$ modules/zoom_sessions/view.php?id=$1 [L,QSA]
RewriteRule ^zoom-sessions/edit/([0-9]+)/?$ modules/zoom_sessions/edit.php?id=$1 [L,QSA]
RewriteRule ^zoom-sessions/delete/([0-9]+)/?$ modules/zoom_sessions/delete.php?id=$1 [L,QSA]

# Microsoft Teams Sessions
RewriteRule ^zoom-sessions/teams/add/?$ modules/zoom_sessions/teams/add.php [L,QSA]

# Google Meet Sessions
RewriteRule ^zoom-sessions/meet/add/?$ modules/zoom_sessions/meet/add.php [L,QSA]

RewriteRule ^learner/profile/?$ modules/dashboard/learners/profile.php [L,QSA]
RewriteRule ^learners/profile-pdf/([0-9]+)/?$ modules/learners/profile_pdf.php?id=$1 [L,QSA]
# Learner profile PDF
# =====================================================
# LEARNER LESSONS
# =====================================================

RewriteRule ^learner/lesson/?$ modules/dashboard/learners/programme/lesson.php [L,QSA]

RewriteRule ^learner/lesson/([0-9]+)/?$ modules/dashboard/learners/programme/lesson.php?id=$1 [L,QSA]

RewriteRule ^learner/lesson/([0-9]+)/module/([0-9]+)/?$ modules/dashboard/learners/programme/lesson.php?id=$1&module_id=$2 [L,QSA]
# Learner Lesson View

RewriteRule ^poe/reports/([0-9]+)/?$ modules/poe/reports.php?intervention_id=$1 [L,QSA]
RewriteRule ^poe/reports/upload/([0-9]+)/(assessor|moderator)/?$ modules/poe/upload_report.php?intervention_id=$1&type=$2 [L,QSA]
RewriteRule ^poe/reports/delete/([0-9]+)/?$ modules/poe/delete_report.php?id=$1 [L,QSA]
RewriteRule ^learner/lesson/notes/save/?$ modules/dashboard/learners/programme/save-note.php [L,QSA]

# ============================================================
# TOPICS MODULE
# ============================================================
RewriteRule ^topics/?$ modules/topics/index.php [L,QSA]
RewriteRule ^topics/add/?$ modules/topics/add.php [L,QSA]
RewriteRule ^topics/edit/([0-9]+)/?$ modules/topics/edit.php?id=$1 [L,QSA]
RewriteRule ^topics/view/([0-9]+)/?$ modules/topics/view.php?id=$1 [L,QSA]
RewriteRule ^topics/delete/([0-9]+)/?$ modules/topics/delete.php?id=$1 [L,QSA]
RewriteRule ^topics/get-by-module/?$ modules/topics/ajax/get-by-module.php [L,QSA]
# Add these before your general catch-all rewrite rule.
RewriteRule ^assignments/get-modules/?$ modules/assignments/get-modules.php [L,QSA]
RewriteRule ^assignments/get-topics/?$ modules/assignments/get-topics.php [L,QSA]
RewriteRule ^assignments/get-lessons/?$ modules/assignments/get-lessons.php [L,QSA]
# Topics AJAX – load lessons by module
RewriteRule ^topics/get-lessons-by-module/?$ modules/topics/ajax/get-lessons-by-module.php [L,QSA]

# ============================================================
# SMS SETTINGS
# /system/sms → /modules/system/sms/index.php
# ============================================================
RewriteRule ^system/sms/?$ modules/system/sms/index.php [L,QSA]
# LEARNER REPORTS
# ==========================================================
RewriteRule ^logbook/?$ modules/logbook/index.php [L,QSA]
RewriteRule ^logbook/create/?$ modules/logbook/create.php [L,QSA]
RewriteRule ^logbook/view/([0-9]+)/?$ modules/logbook/view.php?id=$1 [L,QSA]
RewriteRule ^logbook/requirements/?$ modules/logbook/requirements.php [L,QSA]
RewriteRule ^logbook/requirements/create/?$ modules/logbook/create_requirement.php [L,QSA]
RewriteRule ^logbook/requirements/edit/([0-9]+)/?$ modules/logbook/edit_requirement.php?id=$1 [L,QSA]
RewriteRule ^learner/reports/certificates/?$ modules/dashboard/learners/reports/certificate_sor.php [L,QSA]
RewriteRule ^learner/poe/workplace-logbook/([0-9]+)/?$ modules/dashboard/learners/poe/workplace-logbook.php?module_id=$1 [L,QSA]
# Learner Workplace Logbook
RewriteRule ^dashboard/learners/poe/workplace-logbook/?$ modules/dashboard/learners/poe/workplace-logbook.php [L,QSA]
RewriteRule ^dashboard/learners/poe/workplace-logbook/([0-9]+)/?$ modules/dashboard/learners/poe/workplace-logbook.php?module_id=$1 [L,QSA]
RewriteRule ^dashboard/learners/poe/view-logbook/([0-9]+)/?$ modules/dashboard/learners/poe/view-logbook.php?module_id=$1 [L,QSA]
# Cleaner optional route
RewriteRule ^learner/poe/workplace-logbook/?$ modules/dashboard/learners/poe/workplace-logbook.php [L,QSA]
RewriteRule ^learner/reports/enrollment-confirmation/?$ modules/dashboard/learners/reports/enrollment_confirmation.php [L,QSA]
RewriteRule ^learner/reports/enrollment-confirmation/([0-9]+)/?$ modules/dashboard/learners/reports/enrollment_confirmation.php?id=$1 [L,QSA]
# ============================================================
# QUIZZES MODULE - ALL RULES FIRST (BEFORE BLOCK)
# ============================================================
# Learner Support
RewriteRule ^learner/communication/?$ modules/dashboard/learners/communication/index.php [L,QSA]
RewriteRule ^learner/my-teacher/?$ modules/dashboard/learners/my-teacher/index.php [L,QSA]
RewriteRule ^quizzes/ajax/upload-webcam-clip/?$ modules/quizzes/ajax/upload-webcam-clip.php [L,QSA]
RewriteRule ^quizzes/ai-generator/([0-9]+)/?$ modules/quizzes/ai-generator.php?quiz_id=$1 [L,QSA]
RewriteRule ^quizzes/webcam-clip/([0-9]+)/?$ modules/quizzes/webcam-clip.php?id=$1 [L,QSA]

# Learner Assessment Evidence
RewriteRule ^learner/poe/?$ modules/dashboard/learners/poe/index.php [L,QSA]
RewriteRule ^learner/fisa/?$ modules/dashboard/learners/fisa/index.php [L,QSA]
RewriteRule ^learner/eisa/?$ modules/dashboard/learners/eisa/index.php [L,QSA]
RewriteRule ^learner/logbook/?$ modules/dashboard/learners/logbook/index.php [L,QSA]
RewriteRule ^eisa/ajax/get-learners/?$ modules/eisa/ajax_learners.php [L,QSA]

# Learner Documents & Reports
RewriteRule ^learner/documents/?$ modules/dashboard/learners/documents/index.php [L,QSA]
RewriteRule ^learner/reports/?$ modules/dashboard/learners/reports/index.php [L,QSA]
# Admin/Staff Routes
# ============================================================
# QUIZ REVIEW ROUTE
# ============================================================

RewriteRule ^quizzes/review/([0-9]+)/?$ modules/quizzes/review.php?id=$1 [L,QSA]
RewriteRule ^quizzes/submissions/?$ modules/quizzes/submissions.php [L,QSA]
RewriteRule ^quizzes/?$ modules/quizzes/index.php [L,QSA]
RewriteRule ^quizzes/create/?$ modules/quizzes/create.php [L,QSA]
RewriteRule ^quizzes/edit/([0-9]+)/?$ modules/quizzes/edit.php?id=$1 [L,QSA]
RewriteRule ^quizzes/view/([0-9]+)/?$ modules/quizzes/view.php?id=$1 [L,QSA]
RewriteRule ^quizzes/questions/([0-9]+)/?$ modules/quizzes/questions.php?quiz_id=$1 [L,QSA]
RewriteRule ^quizzes/add-question/([0-9]+)/?$ modules/quizzes/add-questions.php?quiz_id=$1 [L,QSA]
RewriteRule ^quizzes/edit-question/([0-9]+)/?$ modules/quizzes/edit-question.php?id=$1 [L,QSA]
RewriteRule ^quizzes/delete-question/([0-9]+)/?$ modules/quizzes/delete-question.php?id=$1 [L,QSA]
RewriteRule ^quizzes/publish/([0-9]+)/?$ modules/quizzes/publish.php?quiz_id=$1 [L,QSA]
RewriteRule ^quizzes/results/([0-9]+)/?$ modules/quizzes/results.php?quiz_id=$1 [L,QSA]
RewriteRule ^quizzes/attempts/([0-9]+)/?$ modules/quizzes/attempts.php?quiz_id=$1 [L,QSA]

# Learner Quiz Routes
RewriteRule ^learner/quiz/([0-9]+)/?$ modules/quizzes/take_quiz.php?id=$1 [L,QSA]
RewriteRule ^learner/quiz/results/([0-9]+)/?$ modules/quizzes/quiz-results.php?attempt_id=$1 [L,QSA]
RewriteRule ^quizzes/my-attempts/?$ modules/quizzes/my-attempts.php [L,QSA]
RewriteRule ^learner/module-feedback/?$ modules/dashboard/learners/programme/module-feedback.php [L,QSA]

# ============================================================
# BACKUP MODULE
# ============================================================
RewriteRule ^systems/backup/create/?$ modules/system/backup_create.php [L,QSA]
RewriteRule ^systems/backup/restore/?$ modules/system/backup_restore.php [L,QSA]
RewriteRule ^systems/backup/delete/?$ modules/system/backup_delete.php [L,QSA]

# Administrator — create, edit, save, delete and report
RewriteRule ^system/learner-induction/new/?$ modules/system/learner-induction.php?new=1 [L,QSA]
RewriteRule ^system/learner-induction/edit/([0-9]+)/?$ modules/system/learner-induction.php?edit_id=$1 [L,QSA]
RewriteRule ^system/learner-induction/delete/([0-9]+)/?$ modules/system/learner-induction-delete.php?id=$1 [L,QSA]
RewriteRule ^system/learner-induction/save/?$ modules/system/learner-induction-save.php [L,QSA]
RewriteRule ^system/learner-induction/report/?$ modules/system/learner-induction-report.php [L,QSA]
RewriteRule ^system/learner-induction/?$ modules/system/learner-induction.php [L,QSA]

# Learner
RewriteRule ^learner/induction/save-progress/?$ modules/dashboard/learners/induction-save-progress.php [L,QSA]
RewriteRule ^learner/induction/complete/?$ modules/dashboard/learners/induction-complete.php [L,QSA]
RewriteRule ^learner/induction/?$ modules/dashboard/learners/induction.php [L,QSA]

# ==================================================
# Learner Live Sessions
# ==================================================
RewriteRule ^dashboard/learners/sessions/?$ modules/dashboard/learners/sessions/index.php [L,QSA]
# ==================================================
# Learner Live Session Details
# ==================================================
RewriteRule ^dashboard/learners/sessions/([0-9]+)/?$ modules/dashboard/learners/sessions/view.php?id=$1 [L,QSA]

# ============================================================
# ASSIGNMENTS MODULE ROUTES
# ============================================================

# INDEX
RewriteRule ^assignments/?$ modules/assignments/index.php [L,QSA]

# CREATE
RewriteRule ^assignments/add/?$ modules/assignments/add.php [L,QSA]

# VIEW (assignment details page)
RewriteRule ^assignments/view/([0-9]+)/?$ modules/assignments/view.php?id=$1 [L,QSA]

# EDIT
RewriteRule ^assignments/edit/([0-9]+)/?$ modules/assignments/edit.php?id=$1 [L,QSA]

# DELETE
RewriteRule ^assignments/delete/([0-9]+)/?$ modules/assignments/delete.php?id=$1 [L,QSA]

# Learner assignment resource download
RewriteRule ^learner/assignment/resource/([^/]+)/?$ modules/assignments/download-resource.php?file=$1 [L,QSA]

# Authenticated learner evidence download (learner owner or assigned staff)
RewriteRule ^assessment-evidence/download/([0-9]+)/?$ modules/assessment_evidence/download.php?id=$1 [L,QSA]
RewriteRule ^assessment-evidence/submission/([0-9]+)/?$ modules/assessment_evidence/download.php?submission_id=$1 [L,QSA]
RewriteRule ^assessment-evidence/version/([0-9]+)/?$ modules/assessment_evidence/download.php?version_id=$1 [L,QSA]

# SUBMISSIONS
RewriteRule ^assignments/submissions/([0-9]+)/?$ modules/assignments/submissions.php?id=$1 [L,QSA]

# AJAX → LOAD MODULES
# Quiz Submission
RewriteRule ^quizzes/submit-quiz/?$ modules/quizzes/submit-quiz.php [L,QSA]

# AJAX Endpoints for Quizzes (must be before block rule)
RewriteRule ^quizzes/ajax/get-question/?$ modules/quizzes/ajax/get-question.php [L,QSA]
RewriteRule ^quizzes/ajax/save-answer/?$ modules/quizzes/ajax/save-answer.php [L,QSA]


# Quiz Review (with ID)

# Optional fallback (query string support)
RewriteRule ^quizzes/review/?$ modules/quizzes/review.php [L,QSA]

# ============================================================
# ⭐⭐⭐ FIXED: ALLOW LEARNER PORTAL ACCESS ⭐⭐⭐
# ============================================================
# These rules must come BEFORE the block rule below

# Allow Learner Portal - Direct access
RewriteRule ^modules/dashboard/learners/portal\.php$ - [L]

# Allow entire learner dashboard directory
RewriteRule ^modules/dashboard/learners/ - [L]

# Allow admin dashboard
RewriteRule ^modules/dashboard/index\.php$ - [L]

# Allow facilitator dashboard
RewriteRule ^modules/dashboard/facilitators/ - [L]

# Allow assessor dashboard
RewriteRule ^modules/dashboard/assessors/ - [L]

# Allow moderator dashboard
RewriteRule ^modules/dashboard/moderators/ - [L]

# Allow verifier dashboard
RewriteRule ^modules/dashboard/verifiers/ - [L]

# Shared role-portal stylesheets only (shared PHP internals remain blocked)
RewriteRule ^modules/dashboard/shared/(role-portals|typography)\.css$ - [L]

# The AI endpoint is an authenticated application endpoint. Allow the clean
# route's internal target and the documented fallback to reach PHP; the
# endpoint itself performs session, CSRF, role and licence checks.
RewriteRule ^modules/system/ai-assistant-chat\.php$ - [L]

# Allow specific public module paths
RewriteRule ^modules/certifications/verify_certificate\.php$ - [L]
RewriteRule ^modules/certifications/view_sor\.php$ - [L]
RewriteRule ^modules/enrollments/verify\.php$ - [L]

# ============================================================
# BLOCK DIRECT ACCESS TO INTERNAL STRUCTURE
# ============================================================
RewriteCond %{THE_REQUEST} \s/+modules/ [NC]
RewriteRule ^modules/ - [F,L]

# ============================================================
# LEARNER LESSON ROUTES
# ============================================================
RewriteRule ^learner/lesson/([0-9]+)$ modules/dashboard/learners/programme/lesson.php?id=$1 [L,QSA]
RewriteRule ^learner/programme/([0-9]+)$ modules/dashboard/learners/programme/view.php?id=$1 [L,QSA]
RewriteRule ^learner/programme$ modules/dashboard/learners/programme/index.php [L,QSA]
RewriteRule ^programs/export-course/([0-9]+)/?$ modules/programs/export_course.php?id=$1 [L,QSA]
# ============================================================
# USERS (CLEAN ROUTES)
# ============================================================

# User Edit (dynamic ID)
RewriteRule ^users/edit/([0-9]+)/?$ modules/users/edit.php?id=$1 [L,QSA]
RewriteRule ^users/delete/([0-9]+)/?$ modules/users/delete.php?id=$1 [L,QSA]

# Certificate Editor Routes
RewriteRule ^systems/certificates/editor/?$ modules/systems/certificate-editor.php [L,QSA]
RewriteRule ^systems/certificates/save-template/?$ modules/systems/certificate-ajax.php [L,QSA]
RewriteRule ^systems/certificates/load-template/?$ modules/systems/certificate-ajax.php?load=1 [L,QSA]
RewriteRule ^systems/certificates/generate-pdf/?$ modules/systems/certificate-ajax.php [L,QSA]

# ============================================================
# LEARNER PORTAL (SCALABLE STRUCTURE)
# ============================================================
RewriteRule ^learner/?$ modules/dashboard/learners/portal.php [L,QSA]
RewriteRule ^learner/dashboard/?$ modules/dashboard/learners/portal.php [L,QSA]
RewriteRule ^learner/tasks/?$ modules/dashboard/learners/tasks.php [L,QSA]
RewriteRule ^learner/progress/?$ modules/dashboard/learners/progress.php [L,QSA]
RewriteRule ^learner/evidence/?$ modules/dashboard/learners/evidence.php [L,QSA]
RewriteRule ^learner/finance/?$ modules/dashboard/learners/finance.php [L,QSA]
RewriteRule ^learner/statements/?$ modules/dashboard/learners/statements.php [L,QSA]
RewriteRule ^learner/results/?$ modules/dashboard/learners/results.php [L,QSA]
RewriteRule ^learner/certificates/?$ modules/dashboard/learners/certificates.php [L,QSA]
RewriteRule ^systems/certificates-preview/?$ modules/system/certificates_preview.php [L,QSA]
RewriteRule ^learner/settings/?$ modules/dashboard/learners/settings.php [L,QSA]
# ============================================================
# CERTIFICATIONS → VIEW SOR
# ============================================================
# View SOR
RewriteRule ^certifications/view-sor/([0-9]+)/?$ modules/certifications/view_sor.php?id=$1 [L,QSA]
# Load Dynamic Report
RewriteRule ^reports/load/?$ modules/reports/load_report.php [L,QSA]
RewriteRule ^systems/certificate-editor/?$ modules/systems/certificate-editor.php [L,QSA]

# Learner Profile Report
RewriteRule ^reports/learner-profile/([0-9]+)/?$ modules/reports/learner_profile.php?id=$1 [L,QSA]
RewriteRule ^reports/learners/([0-9]+)/?$ modules/reports/learner_profile.php?id=$1 [L,QSA]
# Generate Plain Certificate
RewriteRule ^certifications/generate-plain/?$ modules/certifications/generate_plain.php [L,QSA]

# Generate SOR

# Delete Certificate
RewriteRule ^certifications/delete/([0-9]+)/?$ modules/certifications/delete.php?id=$1 [L,QSA]

# Revoke Certificate
RewriteRule ^certifications/revoke/([0-9]+)/?$ modules/certifications/revoke.php?id=$1 [L,QSA]

RewriteRule ^learner/invoices/?$ modules/dashboard/learners/invoices/index.php [L,QSA]
RewriteRule ^learner/messages/?$ modules/dashboard/learners/messages.php [L,QSA]
RewriteRule ^learner/announcements/?$ modules/dashboard/learners/announcements.php [L,QSA]
RewriteRule ^profile/?$ modules/users/profile.php [L,QSA]

# Certificate Routes
RewriteRule ^system/certificate-editor/?$ modules/system/certificate-editor.php [L,QSA]
RewriteRule ^systems/certificate-ajax/?$ modules/system/certificate-ajax.php [L,QSA]
# ============================================================
# LEARNER → ASSIGNMENTS
# ============================================================

RewriteRule ^learner/assignments/?$ modules/assignments/learner-assignments.php [L,QSA]
RewriteRule ^learner/assignments/view/([0-9]+)/?$ modules/assignments/learner-view.php?id=$1 [L,QSA]

# ============================================================
# APPLICATIONS MODULE
# ============================================================
RewriteRule ^applications/?$ modules/applications/index.php [L,QSA]
RewriteRule ^applications/([0-9]+)/?$ modules/applications/view.php?id=$1 [L,QSA]

RewriteRule ^applications/cancel/?$ modules/applications/cancel.php [L,QSA]
RewriteRule ^applications/approve/?$ modules/applications/approve.php [L,QSA]
RewriteRule ^applications/approve/([0-9]+)/?$ modules/applications/approve.php?id=$1 [L,QSA]
RewriteRule ^applications/reject/?$ modules/applications/reject.php [L,QSA]
RewriteRule ^applications/delete/?$ modules/applications/delete.php [L,QSA]
RewriteRule ^applications/send-email/?$ modules/applications/send-email.php [L,QSA]
RewriteRule ^applications/bulk-sms/?$ modules/applications/bulk-sms.php [L,QSA]
RewriteRule ^applications/bulk-email/?$ modules/applications/bulk-email.php [L,QSA]




# ============================================================
# CLIENTS MODULE
# ============================================================
RewriteRule ^clients/?$ modules/clients/index.php [L,QSA]
RewriteRule ^clients/add/?$ modules/clients/add.php [L,QSA]
RewriteRule ^clients/edit/([0-9]+)/?$ modules/clients/edit.php?id=$1 [L,QSA]
RewriteRule ^clients/delete/([0-9]+)/?$ modules/clients/delete.php?id=$1 [L,QSA]
RewriteRule ^clients/enrollment-confirmation-pdf/?$ modules/clients/enrollment-confirmation-pdf.php [L,QSA]
RewriteRule ^clients/enrollment-confirmation/?$ modules/clients/enrollment-confirmation.php [L,QSA]
# ============================================================
# ENQUIRIES MODULE
# ============================================================
RewriteRule ^enquiries/?$ modules/enquiries/index.php [L,QSA]
RewriteRule ^enquiries/view/([0-9]+)/?$ modules/enquiries/view.php?id=$1 [L,QSA]
RewriteRule ^enquiries/update-status/?$ modules/enquiries/update-status.php [L,QSA]
RewriteRule ^enquiries/add/?$ modules/enquiries/add.php [L,QSA]
RewriteRule ^enquiries/send-link/?$ modules/enquiries/send-link.php [L,QSA]
RewriteRule ^enquiries/get-enquiry-ajax\.php$ modules/enquiries/get-enquiry-ajax.php [L,QSA]
RewriteRule ^enquiries/bulk-email\.php$ modules/enquiries/bulk-email.php [L,QSA]
RewriteRule ^enquiries/single-email\.php$ modules/enquiries/single-email.php [L,QSA]
RewriteRule ^enquiries/add-ajax\.php$ modules/enquiries/add-ajax.php [L,QSA]
RewriteRule ^applications/pdf-enrollment/?$ modules/applications/pdf-enrollment.php [L,QSA]
# ============================================================
# PERSONAL / PERSONNEL MODULE
# ============================================================
RewriteRule ^personal/?$ modules/personal/index.php [L,QSA]
RewriteRule ^personal/add/?$ modules/personal/add.php [L,QSA]
RewriteRule ^personal/view/([0-9]+)/?$ modules/personal/view.php?id=$1 [L,QSA]
RewriteRule ^personal/edit/([0-9]+)/?$ modules/personal/edit.php?id=$1 [L,QSA]
RewriteRule ^personal/delete/([0-9]+)/?$ modules/personal/delete.php?id=$1 [L,QSA]

# ============================================================
# ATTENDANCE MODULE
# ============================================================
RewriteRule ^attendance/?$ modules/attendance/index.php [L,QSA]
RewriteRule ^attendance/add/?$ modules/attendance/add.php [L,QSA]
RewriteRule ^attendance/view/([0-9]+)/?$ modules/attendance/view.php?id=$1 [L,QSA]
RewriteRule ^attendance/edit/([0-9]+)/?$ modules/attendance/edit.php?id=$1 [L,QSA]
RewriteRule ^attendance/delete/([0-9]+)/?$ modules/attendance/delete.php?id=$1 [L,QSA]

# =========================================================
# LEARNER MODULE TRACKING
# =========================================================
RewriteRule ^dashboard/learners/module/([0-9]+)/?$ modules/dashboard/learners/track_module.php?module_id=$1 [L,QSA]

# ============================================================
# LEARNERS MODULE
# ============================================================
RewriteRule ^learners/?$ modules/learners/index.php [L,QSA]
RewriteRule ^learners/add/?$ modules/learners/add.php [L,QSA]
RewriteRule ^learners/view/([0-9]+)/?$ modules/learners/view.php?id=$1 [L,QSA]
RewriteRule ^learners/edit/([0-9]+)/?$ modules/learners/edit.php?id=$1 [L,QSA]
RewriteRule ^learners/delete/([0-9]+)/?$ modules/learners/delete.php?id=$1 [L,QSA]
RewriteRule ^learners/import/?$ modules/learners/import.php [L,QSA]
RewriteRule ^learners/export/?$ modules/learners/export.php [L,QSA]
RewriteRule ^learners/bulk-delete/?$ modules/learners/bulk_delete.php [L,QSA]
RewriteRule ^dashboard/learners/sessions/join/([0-9]+)/?$ modules/dashboard/learners/sessions/join.php?id=$1 [L,QSA]

# =========================================================
# ATTENDANCE MODULE REWRITE RULES
# =========================================================

# Redirect /attendance/register-pdf.php to the actual file
RewriteRule ^attendance/register-pdf\.php$ modules/attendance/register-pdf.php [L,QSA]

# Clean URL for PDF: /attendance/register-pdf?id=123
RewriteRule ^attendance/register-pdf/([0-9]+)$ modules/attendance/register-pdf.php?id=$1 [L,QSA]

# Clean URL with date: /attendance/register-pdf/123/2024-01-01
RewriteRule ^attendance/register-pdf/([0-9]+)/([0-9]{4}-[0-9]{2}-[0-9]{2})$ modules/attendance/register-pdf.php?id=$1&date=$2 [L,QSA]
# ============================================================
# ENROLLMENTS MODULE
# ============================================================
RewriteRule ^enrollments/?$ modules/enrollments/index.php [L,QSA]
RewriteRule ^enrollments/add/?$ modules/enrollments/add.php [L,QSA]
RewriteRule ^enrollments/view/([0-9]+)/?$ modules/enrollments/view.php?id=$1 [L,QSA]
RewriteRule ^enrollments/edit/([0-9]+)/?$ modules/enrollments/edit.php?id=$1 [L,QSA]
RewriteRule ^enrollments/delete/([0-9]+)/?$ modules/enrollments/delete.php?id=$1 [L,QSA]
RewriteRule ^enrollments/bulk/?$ modules/enrollments/bulk.php [L,QSA]

# ============================================================
# PROGRAMS MODULE
# ============================================================
RewriteRule ^programs/?$ modules/programs/index.php [L,QSA]
RewriteRule ^programs/add/?$ modules/programs/add.php [L,QSA]
RewriteRule ^programs/view/([0-9]+)/?$ modules/programs/view.php?id=$1 [L,QSA]
RewriteRule ^programs/edit/([0-9]+)/?$ modules/programs/edit.php?id=$1 [L,QSA]
RewriteRule ^programs/delete/([0-9]+)/?$ modules/programs/delete.php?id=$1 [L,QSA]

# ============================================================
# PROGRAM MODULES
# ============================================================
RewriteRule ^program-modules/?$ modules/program_modules/index.php [L,QSA]
RewriteRule ^program-modules/add/?$ modules/program_modules/add.php [L,QSA]
RewriteRule ^program-modules/view/([0-9]+)/?$ modules/program_modules/view.php?id=$1 [L,QSA]
RewriteRule ^program-modules/edit/([0-9]+)/?$ modules/program_modules/edit.php?id=$1 [L,QSA]
RewriteRule ^program-modules/delete/([0-9]+)/?$ modules/program_modules/delete.php?id=$1 [L,QSA]

# ============================================================
# LESSON PLANS
# ============================================================
RewriteRule ^lesson-plans/?$ modules/lesson_plans/index.php [L,QSA]
RewriteRule ^lesson-plans/add/?$ modules/lesson_plans/add.php [L,QSA]
RewriteRule ^lesson-plans/view/([0-9]+)/?$ modules/lesson_plans/view.php?id=$1 [L,QSA]
RewriteRule ^lesson-plans/edit/([0-9]+)/?$ modules/lesson_plans/edit.php?id=$1 [L,QSA]
RewriteRule ^lesson-plans/delete/([0-9]+)/?$ modules/lesson_plans/delete.php?id=$1 [L,QSA]

# ============================================================
# COMMUNICATION MODULE
# ============================================================
RewriteRule ^communication/?$ modules/communication/index.php [L,QSA]
RewriteRule ^communication/announcements/?$ modules/communication/announcements/index.php [L,QSA]
RewriteRule ^communication/announcements/add/?$ modules/communication/announcements/add.php [L,QSA]
RewriteRule ^communication/announcements/edit/([0-9]+)/?$ modules/communication/announcements/edit.php?id=$1 [L,QSA]
RewriteRule ^communication/announcements/view/([0-9]+)/?$ modules/communication/announcements/view.php?id=$1 [L,QSA]
RewriteRule ^communication/announcements/delete/([0-9]+)/?$ modules/communication/announcements/delete.php?id=$1 [L,QSA]
RewriteRule ^communication/discussions/?$ modules/communication/discussions/index.php [L,QSA]
RewriteRule ^communication/messages/?$ modules/communication/messages/index.php [L,QSA]
RewriteRule ^communication/messages/inbox/?$ modules/communication/messages/index.php [L,QSA]
RewriteRule ^communication/messages/sent/?$ modules/communication/messages/sent.php [L,QSA]
RewriteRule ^communication/messages/compose/?$ modules/communication/messages/compose.php [L,QSA]
RewriteRule ^communication/messages/view/([0-9]+)/?$ modules/communication/messages/view.php?id=$1 [L,QSA]
RewriteRule ^communication/email/?$ modules/communication/email/index.php [L,QSA]
RewriteRule ^communication/email/compose/?$ modules/communication/email/compose.php [L,QSA]

# Reply
RewriteRule ^communication/messages/reply/([0-9]+)/?$ modules/communication/messages/reply.php?id=$1 [L,QSA]

# Delete
RewriteRule ^communication/messages/delete/([0-9]+)/?$ modules/communication/messages/delete.php?id=$1 [L,QSA]

# Conversations
RewriteRule ^communication/messages/conversations/?$ modules/communication/messages/conversations.php [L,QSA]
RewriteRule ^communication/messages/ajax/([a-zA-Z0-9_-]+)/?$ modules/communication/messages/ajax/$1.php [L,QSA]

# Discussions Index

# Add Discussion
RewriteRule ^communication/discussions/add/?$ modules/communication/discussions/add.php [L,QSA]

# View Discussion
RewriteRule ^communication/discussions/view/([0-9]+)/?$ modules/communication/discussions/view.php?id=$1 [L,QSA]

# Delete Discussion
RewriteRule ^communication/discussions/delete/([0-9]+)/?$ modules/communication/discussions/delete.php?id=$1 [L,QSA]

# ============================================================
# ASSESSMENTS MODULE
# ============================================================
RewriteRule ^assessments/?$ modules/assessments/index.php [L,QSA]
RewriteRule ^assessments/add/?$ modules/assessments/add.php [L,QSA]
RewriteRule ^assessments/edit/([0-9]+)/?$ modules/assessments/edit.php?id=$1 [L,QSA]
RewriteRule ^assessments/delete/([0-9]+)/?$ modules/assessments/delete.php?id=$1 [L,QSA]

# ============================================================
# TRAINING INTERVENTIONS
# ============================================================
RewriteRule ^interventions/?$ modules/training_interventions/index.php [L,QSA]
RewriteRule ^interventions/add/?$ modules/training_interventions/add.php [L,QSA]
RewriteRule ^interventions/verifier-assignments/?$ modules/training_interventions/verifier-assignments.php [L,QSA]
RewriteRule ^interventions/view/([0-9]+)/?$ modules/training_interventions/view.php?id=$1 [L,QSA]
RewriteRule ^interventions/edit/([0-9]+)/?$ modules/training_interventions/edit.php?id=$1 [L,QSA]
RewriteRule ^interventions/delete/([0-9]+)/?$ modules/training_interventions/delete.php?id=$1 [L,QSA]

# ============================================================
# CERTIFICATIONS MODULE
# ============================================================
RewriteRule ^certifications/?$ modules/certifications/index.php [L,QSA]
RewriteRule ^verify/certificate/([A-Fa-f0-9]{64})/?$ modules/certifications/verify_certificate.php?ref=$1 [L,QSA]
RewriteRule ^verify/sor/([A-Fa-f0-9]{64})/?$ modules/certifications/verify_sor.php?ref=$1 [L,QSA]
RewriteRule ^verify/sor/([A-Za-z0-9\-]+)/?$ modules/certifications/view_sor.php?ref=$1&public=1 [L,QSA]
RewriteRule ^certifications/view/([0-9]+)/?$ modules/certifications/view_certificate.php?id=$1 [L,QSA]
RewriteRule ^certifications/generate/?$ modules/certifications/generate_certificate.php [L,QSA]
# ============================================================
# ACCOUNTS + SHARED FINANCE ROUTES
# ============================================================
#
# ACCOUNTS DASHBOARD
# ------------------
# Accounts has its own dashboard only:
#
#   Sidebar name: Dashboard
#   Clean URL:    /accounts
#   Physical:     /modules/dashboard/accounts/index.php
#
# All other Finance links below are EXACTLY the same clean URLs
# used by the Super Administrator Finance section.
# ============================================================

RewriteRule ^accounts/?$ modules/dashboard/accounts/index.php [L,QSA]
RewriteRule ^accounts/learners/?$ modules/dashboard/accounts/learners.php [L,QSA]

# Old Accounts dashboard URLs -> canonical /accounts
# Keep 302 while testing to avoid cached permanent redirects.
RewriteRule ^accounts/dashboard/?$ modules/dashboard/accounts/index.php [L,QSA]
RewriteRule ^accounts/index/?$ modules/dashboard/accounts/index.php [L,QSA]

# Existing Super Administrator / Finance dashboard
RewriteRule ^finance-dashboard/?$ modules/finance_dashboard/index.php [L,QSA]


# ============================================================
# SHARED FINANCE — EXACT SUPER ADMINISTRATOR NAMES / URLS
# ============================================================
#
# Sidebar name          Clean URL
# ------------------------------------------------------------
# Quotations            /quotations
# Invoices              /invoices
# Items                 /items
# Payments              /payments
# Recurring Billing Management  /recurring-billing
# Learner Stipend Payments      /stipends
# Learner Accounts               /accounts/learners
#
# Accounts must use these SAME links. Do not create
# /accounts/invoices, /accounts/payments, etc.
# ============================================================


# ------------------------------------------------------------
# QUOTATIONS
# Sidebar name: Quotations
# Main URL: /quotations
# ------------------------------------------------------------
RewriteRule ^quotations/?$ modules/invoices/quotations/all.php [L,QSA]
RewriteRule ^quotations/add/?$ modules/invoices/quotations/add.php [L,QSA]
RewriteRule ^quotations/view/([0-9]+)/?$ modules/invoices/quotations/view.php?id=$1 [L,QSA]
RewriteRule ^quotations/edit/([0-9]+)/?$ modules/invoices/quotations/edit.php?id=$1 [L,QSA]
RewriteRule ^quotations/delete/([0-9]+)/?$ modules/invoices/quotations/delete.php?id=$1 [L,QSA]
RewriteRule ^quotations/pdf/([0-9]+)/?$ modules/invoices/quotations/pdf.php?id=$1 [L,QSA]
RewriteRule ^quotations/convert/([0-9]+)/?$ modules/invoices/quotations/convert.php?id=$1 [L,QSA]
RewriteRule ^quotations/export/?$ modules/invoices/quotations/export.php [L,QSA]


# ------------------------------------------------------------
# INVOICES
# Sidebar name: Invoices
# Main URL: /invoices
# ------------------------------------------------------------
RewriteRule ^invoices/?$ modules/invoices/index.php [L,QSA]
RewriteRule ^invoices/add/?$ modules/invoices/add.php [L,QSA]
RewriteRule ^invoices/view/([0-9]+)/?$ modules/invoices/view.php?id=$1 [L,QSA]
RewriteRule ^invoices/edit/([0-9]+)/?$ modules/invoices/edit.php?id=$1 [L,QSA]
RewriteRule ^invoices/delete/([0-9]+)/?$ modules/invoices/delete.php?id=$1 [L,QSA]
RewriteRule ^invoices/pdf/([0-9]+)/?$ modules/invoices/pdf.php?id=$1 [L,QSA]
RewriteRule ^invoices/statement/?$ modules/invoices/statement.php [L,QSA]
RewriteRule ^invoices/export/?$ modules/invoices/export.php [L,QSA]


# ------------------------------------------------------------
# ITEMS
# Sidebar name: Items
# Main URL: /items
#
# These physical pages are already part of the shared
# Administrator/Super Administrator finance workflow.
# ------------------------------------------------------------
RewriteRule ^items/?$ modules/items/index.php [L,QSA]
RewriteRule ^items/add/?$ modules/items/add.php [L,QSA]
RewriteRule ^items/view/([0-9]+)/?$ modules/items/view.php?id=$1 [L,QSA]
RewriteRule ^items/edit/([0-9]+)/?$ modules/items/edit.php?id=$1 [L,QSA]


# ------------------------------------------------------------
# PAYMENTS
# Sidebar name: Payments
# Main URL: /payments
# ------------------------------------------------------------
RewriteRule ^payments/?$ modules/invoices/payments/all.php [L,QSA]
RewriteRule ^payments/add/?$ modules/invoices/payments/add.php [L,QSA]
RewriteRule ^payments/record/([0-9]+)/?$ modules/invoices/payments/record.php?invoice_id=$1 [L,QSA]
RewriteRule ^payments/process/?$ modules/invoices/payments/process.php [L,QSA]
RewriteRule ^payments/view/([0-9]+)/?$ modules/invoices/payments/view.php?id=$1 [L,QSA]
RewriteRule ^payments/edit/([0-9]+)/?$ modules/invoices/payments/edit.php?id=$1 [L,QSA]
RewriteRule ^payments/delete/([0-9]+)/?$ modules/invoices/payments/delete.php?id=$1 [L,QSA]
RewriteRule ^payments/export/?$ modules/invoices/payments/export.php [L,QSA]


# ------------------------------------------------------------
# RECURRING BILLING MANAGEMENT
# Super Administrator + Accounts User
# ------------------------------------------------------------
RewriteRule ^recurring-billing/?$ modules/invoices/recurring-billing/index.php [L,QSA]
RewriteRule ^recurring-billing/add/?$ modules/invoices/recurring-billing/add.php [L,QSA]
RewriteRule ^recurring-billing/view/([0-9]+)/?$ modules/invoices/recurring-billing/view.php?id=$1 [L,QSA]
RewriteRule ^recurring-billing/edit/([0-9]+)/?$ modules/invoices/recurring-billing/edit.php?id=$1 [L,QSA]
RewriteRule ^recurring-billing/delete/([0-9]+)/?$ modules/invoices/recurring-billing/delete.php?id=$1 [L,QSA]
RewriteRule ^recurring-billing/action/?$ modules/invoices/recurring-billing/action.php [L,QSA]
RewriteRule ^recurring-billing/export/?$ modules/invoices/recurring-billing/export.php [L,QSA]

# ------------------------------------------------------------
# LEARNER STIPEND PAYMENTS
# Super Administrator + Accounts User
# ------------------------------------------------------------
RewriteRule ^stipends/?$ modules/invoices/stipends/index.php [L,QSA]
RewriteRule ^stipends/add/?$ modules/invoices/stipends/add.php [L,QSA]
RewriteRule ^stipends/view/([0-9]+)/?$ modules/invoices/stipends/view.php?id=$1 [L,QSA]
RewriteRule ^stipends/edit/([0-9]+)/?$ modules/invoices/stipends/edit.php?id=$1 [L,QSA]
RewriteRule ^stipends/delete/([0-9]+)/?$ modules/invoices/stipends/delete.php?id=$1 [L,QSA]
RewriteRule ^stipends/action/?$ modules/invoices/stipends/action.php [L,QSA]
RewriteRule ^stipends/export/?$ modules/invoices/stipends/export.php [L,QSA]


# ------------------------------------------------------------
# FINANCE SYSTEM PAGE
# Shared internal finance settings/page where authorised.
# ------------------------------------------------------------
RewriteRule ^systems/finance/?$ modules/system/finance/index.php [L,QSA]


# ============================================================
# CALENDAR MODULE ROUTES (ADD BEFORE GENERIC ROUTES)
# ============================================================

RewriteRule ^calendar/tasks-api/?$ modules/calendar/tasks-api.php [QSA,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^calendar/events/?$ modules/calendar/events.php [L,QSA]
RewriteRule ^calendar/todos/?$ modules/calendar/todos.php [L,QSA]
RewriteRule ^calendar/add/?$ modules/calendar/add_event.php [L,QSA]
RewriteRule ^calendar/complete/([0-9]+)/?$ modules/calendar/complete.php?id=$1 [L,QSA]
RewriteRule ^calendar/delete/([0-9]+)/?$ modules/calendar/delete.php?id=$1 [L,QSA]

# ============================================================
# DOCUMENTS MODULE
# ============================================================

# Documents Dashboard
RewriteRule ^documents/?$ modules/documents/index.php [L,QSA]

# Upload Document
RewriteRule ^documents/upload/?$ modules/documents/upload.php [L,QSA]

# Delete Document
RewriteRule ^documents/delete/([0-9]+)/?$ modules/documents/delete.php?id=$1 [L,QSA]
# ============================================================

# ZOOM SESSIONS MODULE

# ============================================================


# ============================================================
# SEARCH MODULE ROUTE
# ============================================================
RewriteRule ^search/?$ modules/search/index.php [L,QSA]
RewriteRule ^search/live/?$ modules/search/ajax_live.php [L,QSA]

# Accounts Financial Reports
RewriteRule ^reports/finance/?$ modules/reports/finance.php [L,QSA]
RewriteRule ^reports/payments/?$ modules/reports/payments.php [L,QSA]
RewriteRule ^reports/balances/?$ modules/reports/balances.php [L,QSA]

# ============================================================
# REPORTS MODULE
# ============================================================
RewriteRule ^reports/?$ modules/reports/index.php [L,QSA]
RewriteRule ^reports/overview/?$ modules/reports/overview.php [L,QSA]
RewriteRule ^reports/learners/?$ modules/reports/learners.php [L,QSA]
RewriteRule ^reports/enrollments/?$ modules/reports/enrollments.php [L,QSA]
RewriteRule ^reports/programs/?$ modules/reports/programs.php [L,QSA]

# ============================================================
# CALENDAR MODULE
# ============================================================
RewriteRule ^calendar/?$ modules/calendar/index.php [L,QSA]
RewriteRule ^calendar/add-event/?$ modules/calendar/add_event.php [L,QSA]

# ============================================================
# SYSTEM / SETTINGS MODULE
# ============================================================
RewriteRule ^settings/?$ modules/system/index.php [L,QSA]
RewriteRule ^system/?$ modules/system/index.php [L,QSA]
RewriteRule ^systems/org/?$ modules/system/org.php [L,QSA]
RewriteRule ^systems/branding/?$ modules/system/branding.php [L,QSA]
RewriteRule ^systems/email/?$ modules/system/email.php [L,QSA]
RewriteRule ^systems/email/signature/?$ modules/system/email_signature.php [L,QSA]
RewriteRule ^systems/email/templates/?$ modules/system/email_templates.php [L,QSA]
RewriteRule ^systems/certificates/?$ modules/system/certificates.php [L,QSA]
RewriteRule ^systems/license/?$ modules/system/license.php [L,QSA]
RewriteRule ^systems/update/?$ modules/system/update.php [L,QSA]
RewriteRule ^systems/maintenance/?$ modules/system/maintenance.php [L,QSA]
RewriteRule ^systems/api/?$ modules/system/api.php [L,QSA]
# ============================================================
# USERS MODULE
#
# Accounts User uses:
# - /users?role=Learner        learner login access
# - /users/edit/{id}           own profile
# - /users/resend-login/{id}   resend login details
# ============================================================
RewriteRule ^users/?$ modules/users/index.php [L,QSA]
RewriteRule ^users/add/?$ modules/users/add.php [L,QSA]
RewriteRule ^users/resend-login/([0-9]+)/?$ modules/users/resend-login.php?id=$1 [L,QSA]
RewriteRule ^users/([0-9]+)/edit/?$ modules/users/edit.php?id=$1 [L,QSA]
RewriteRule ^users/([0-9]+)/?$ modules/users/view.php?id=$1 [L,QSA]

# ============================================================
# FISA / EISA MODULES
# ============================================================
RewriteRule ^fisa/?$ modules/fisa/index.php [L,QSA]
RewriteRule ^eisa/?$ modules/eisa/index.php [L,QSA]

RewriteRule ^eisa/view/([0-9]+)/?$ modules/eisa/view.php?id=$1 [L,QSA]
RewriteRule ^eisa/edit/([0-9]+)/?$ modules/eisa/edit.php?id=$1 [L,QSA]
RewriteRule ^eisa/delete/([0-9]+)/?$ modules/eisa/delete.php?id=$1 [L,QSA]

# ============================================================
# DISPATCH MODULE
# Administrator / Super Administrator / legacy Manager
# These explicit routes stay before generic module routes.
# ============================================================
RewriteRule ^dispatch/?$ modules/dispatch/dashboard.php [L,QSA]
RewriteRule ^dispatch/add/?$ modules/dispatch/add.php [L,QSA]
RewriteRule ^dispatch/view/([0-9]+)/?$ modules/dispatch/view.php?id=$1 [L,QSA]
RewriteRule ^dispatch/edit/([0-9]+)/?$ modules/dispatch/edit.php?id=$1 [L,QSA]
RewriteRule ^dispatch/tracking/([0-9]+)/?$ modules/dispatch/tracking.php?id=$1 [L,QSA]
RewriteRule ^dispatch/delete/([0-9]+)/?$ modules/dispatch/delete.php?id=$1 [L,QSA]

# ============================================================
# REMOVE .PHP EXTENSION (AFTER EXPLICIT ROUTES)
# ============================================================
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L,QSA]

# ============================================================
# GENERIC MODULE ROUTES (MUST STAY LAST)
# ============================================================
RewriteRule ^([a-zA-Z0-9_-]+)/?$ modules/$1/index.php [L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ modules/$1/$2.php [L,QSA]

# ============================================================
# DEFAULT - ROUTE TO INDEX (IF ALL ELSE FAILS)
# ============================================================
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

# ============================================================
# END
# ============================================================
