<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

define('INDEX_LOAD', true);

require_once __DIR__ . '/vendor/autoload.php';

require_once('config/40633914BF.php');

// Session für CSRF-Schutz starten
session_start();

// Usermanagment
require_once 'classes/Session.php';

// Datenbankverbindung herstellen
require_once 'classes/Database.php';
// Sicheres Abrufen von GET/POST-Daten
require_once 'classes/Request.php';
// Seite neu laden
require_once 'classes/Reload.php';
// Usermanagment
require_once 'classes/User.php';
// Security Tocken Funktionen
require_once 'classes/security.php';

// Standardseite setzen
$page = Request::get('page', 'home');

require_once 'controllers/login/defaultController.php';  // Standard-Homepage (Projekte-Liste)

// Routing-Logik
switch ($page) {
    case 'projects':
        require 'controllers/project/listController.php';  // Projekte-Liste anzeigen
        break;

    case 'project_detail':
        require 'controllers/project/detailController.php';  // Projekt-Formular (Neuanlage/Bearbeitung)
        break;
    case 'project_form':
        require 'controllers/project/formController.php';  // Projekt-Formular (Neuanlage/Bearbeitung)
        break;
    case 'project_save':
        require 'controllers/project/saveController.php';  // Projekt speichern
        break;
    case 'project_pdf':
        require 'controllers/project/pdfController.php';  // Projekt als PDF
        break;
    case 'project_csv':
        require 'controllers/project/csvController.php';  // Projekt als PDF
        break;

    case 'cycles':
    case 'cycle_overview':
        require 'controllers/cycles/listController.php';  // Projekte-Liste anzeigen
        break;
    case 'cycle_form':
        require 'controllers/cycles/formController.php';  // Projekt-Formular (Neuanlage/Bearbeitung)
        break;
    case 'cycle_add_project':
        require 'controllers/cycles/project_addController.php';  // Projekt speichern
        break;
    case 'cycle_project_refreshTeacherCompetence':
        require 'controllers/cycles/project_refreshTeacherCompetenceController.php';  // Projekt speichern
        break;
    case 'cycle_stock':
        require 'controllers/cycles/stockController.php';  // Projekt speichern
        break;
    case 'cycle_close_step0':
        require 'controllers/cycles/close_step0Controller.php';  // Projekt speichern
        break;
    case 'cycle_refresh_stock':
        require 'controllers/cycles/refresh_stockController.php';  // Projekt speichern
        break;
    case 'cycle_close_step1':
        require 'controllers/cycles/close_step1Controller.php';  // Projekt speichern
        break;
    case 'cycle_close_step2':
        require 'controllers/cycles/close_step2Controller.php';  // Projekt speichern
        break;
    case 'cycle_close_step3':
        require 'controllers/cycles/close_step3Controller.php';  // Projekt speichern
        break;
    case 'cycle_prepare':
        require 'controllers/cycles/prepareController.php';  // Projekt speichern
        break;
    case 'cycle_prepare_readonly':
        require 'controllers/cycles/prepareController.php';  // Projekt speichern
        break;
    case 'cycle_order_pdf':
        require 'controllers/cycles/order_pdfController.php';  // Projekt speichern
        break;
    case 'cycle_order_csv':
        require 'controllers/cycles/order_csvController.php';  // Projekt speichern
        break;
    case 'cycle_upload_taifun':
        require 'controllers/cycles/upload_taifunController.php';  // Projekt speichern
        // Weiterleitung nach dem Speichern
        Reload::to("index.php?page=cycle_prepare&id=$cycleId", "Taifun-Datei hochgeladen und Preise aktualisiert");
        exit;
    case 'cycle_update_price':
        require 'controllers/cycles/update_priceController.php';  // Projekt speichern
        break;
    case 'cycle_payment':
        require 'controllers/cycles/paymentController.php';  // Projekt speichern
        break;
    case 'cycle_update_quantity':
        require 'controllers/cycles/updateQuantityController.php';  // Projekt speichern
        break;
    case 'cycle_magazin_pdf':
        require 'controllers/cycles/magazin_pdfController.php';  // Projekt speichern
        break;
    case 'cycle_magazin_csv':
        require 'controllers/cycles/magazin_csvController.php';  // Projekt speichern
        break;
    case 'cycle_edupay_pdf':
        require 'controllers/cycles/edupay_pdfController.php';  // Projekt speichern
        break;
    case 'cycle_edupay_csv':
        require 'controllers/cycles/edupay_csvController.php';  // Projekt speichern
        break;
    case 'cycle_order_overview_pdf':
        require 'controllers/cycles/order_overview_pdfController.php';  // Projekt speichern
        break;

    case 'search_articles':
        require 'controllers/article/searchController.php';  // Artikel suchen (AJAX)
        break;
    case 'add_article':
        require 'controllers/article/addController.php';  // Artikel hinzufügen (AJAX)
        break;
    case 'project_upload_taifun':
        require 'controllers/cycles/upload_taifunController.php';  // Projekt speichern
        // Weiterleitung nach dem Speichern
        Reload::to("index.php", "Taifun-Datei hochgeladen und Preise aktualisiert");
        exit;

    case 'logout':
        $user->logOut();
        // Reload nach Logout
        Reload::to("index.php", "Logout erfolgreich");
        exit;
    case 'downloads':
        require 'controllers/downloads/indexController.php';  // Projekt speichern
        exit;

    default:
        require 'controllers/project/listController.php';  // Standard-Homepage (Projekte-Liste)
        break;
}
