get('/login', fn() => (new LoginController())->formular()); $router->post('/login', fn() => (new LoginController())->anmelden()); $router->post('/logout', fn() => (new LoginController())->abmelden()); $router->get('/einrichtung', fn() => (new LoginController())->einrichtungFormular()); $router->post('/einrichtung', fn() => (new LoginController())->einrichtungSpeichern()); $router->get('/', fn() => (new CockpitController())->index()); $router->post('/cockpit/vermoegen/konten', fn() => (new CockpitController())->kontenfilter()); $router->get('/einstellungen', fn() => (new EinstellungenController())->index()); $router->post('/einstellungen', fn() => (new EinstellungenController())->speichern()); $router->post('/einstellungen/log-leeren', fn() => (new EinstellungenController())->logLeeren()); // Konten. Die festen Pfade stehen vor den Mustern mit {id}, sonst schluckt // "/konten/{id}/…" die Route "/konten/neu". $router->get('/konten', fn() => (new KontenController())->index()); $router->get('/konten/neu', fn() => (new KontenController())->neu()); $router->post('/konten/neu', fn() => (new KontenController())->anlegen()); $router->get('/konten/{id}/bearbeiten', fn(array $p) => (new KontenController())->bearbeiten($p)); $router->post('/konten/{id}/bearbeiten', fn(array $p) => (new KontenController())->speichern($p)); $router->post('/konten/{id}/loeschen', fn(array $p) => (new KontenController())->loeschen($p)); // Kontoblatt und Buchungen. $router->get('/konten/{id}', fn(array $p) => (new BuchungenController())->kontoblatt($p)); $router->get('/konten/{id}/buchung', fn(array $p) => (new BuchungenController())->neu($p)); $router->post('/konten/{id}/buchung', fn(array $p) => (new BuchungenController())->anlegen($p)); $router->get('/buchungen/{id}', fn(array $p) => (new BuchungenController())->bearbeiten($p)); $router->post('/buchungen/{id}', fn(array $p) => (new BuchungenController())->speichern($p)); $router->post('/buchungen/{id}/loeschen', fn(array $p) => (new BuchungenController())->loeschen($p)); // Verwaltung: Kategorien, Klassen, Kontengruppen, QIF-Import. $router->get('/verwaltung', fn() => (new VerwaltungController())->index()); $router->get('/verwaltung/kategorien', fn() => (new KategorienController())->index()); $router->get('/verwaltung/kategorien/neu', fn() => (new KategorienController())->neu()); $router->post('/verwaltung/kategorien/neu', fn() => (new KategorienController())->anlegen()); $router->get('/verwaltung/kategorien/{id}', fn(array $p) => (new KategorienController())->bearbeiten($p)); $router->post('/verwaltung/kategorien/{id}', fn(array $p) => (new KategorienController())->speichern($p)); $router->post('/verwaltung/kategorien/{id}/verschieben', fn(array $p) => (new KategorienController())->verschieben($p)); $router->post('/verwaltung/kategorien/{id}/zusammenfuehren', fn(array $p) => (new KategorienController())->zusammenfuehren($p)); $router->post('/verwaltung/kategorien/{id}/loeschen', fn(array $p) => (new KategorienController())->loeschen($p)); $router->get('/verwaltung/klassen', fn() => (new VerwaltungController())->klassen()); $router->post('/verwaltung/klassen/neu', fn() => (new VerwaltungController())->klasseAnlegen()); $router->post('/verwaltung/klassen/{id}', fn(array $p) => (new VerwaltungController())->klasseSpeichern($p)); $router->post('/verwaltung/klassen/{id}/loeschen', fn(array $p) => (new VerwaltungController())->klasseLoeschen($p)); $router->get('/verwaltung/kontengruppen', fn() => (new VerwaltungController())->kontengruppen()); $router->get('/verwaltung/kontengruppen/neu', fn() => (new VerwaltungController())->kontengruppeNeu()); $router->post('/verwaltung/kontengruppen/neu', fn() => (new VerwaltungController())->kontengruppeAnlegen()); $router->get('/verwaltung/kontengruppen/{id}', fn(array $p) => (new VerwaltungController())->kontengruppeBearbeiten($p)); $router->post('/verwaltung/kontengruppen/{id}', fn(array $p) => (new VerwaltungController())->kontengruppeSpeichern($p)); $router->post('/verwaltung/kontengruppen/{id}/loeschen', fn(array $p) => (new VerwaltungController())->kontengruppeLoeschen($p)); // ── Planung: Budgetplaner und Monatsabschluss ─────────────────────────────── $router->get('/planung', fn() => (new PlanungController())->index()); $router->get('/planung/budget', fn() => (new BudgetController())->planer()); $router->get('/planung/budget/verwaltung', fn() => (new BudgetController())->verwaltung()); $router->post('/planung/budget/neu', fn() => (new BudgetController())->anlegen()); $router->post('/planung/budget/{id}/positionen', fn(array $p) => (new BudgetController())->positionenSpeichern($p)); $router->get('/planung/budget/{id}/bearbeiten', fn(array $p) => (new BudgetController())->bearbeiten($p)); $router->post('/planung/budget/{id}/bearbeiten', fn(array $p) => (new BudgetController())->speichern($p)); $router->post('/planung/budget/kopieren', fn() => (new BudgetController())->kopieren()); $router->post('/planung/budget/{id}/aktivieren', fn(array $p) => (new BudgetController())->aktivieren($p)); $router->post('/planung/budget/{id}/loeschen', fn(array $p) => (new BudgetController())->loeschen($p)); $router->get('/planung/monatsabschluss', fn() => (new MonatsabschlussController())->index()); $router->post('/planung/monatsabschluss', fn() => (new MonatsabschlussController())->abschliessen()); $router->get('/planung/monatsabschluss/{id}', fn(array $p) => (new MonatsabschlussController())->snapshot($p)); $router->post('/planung/monatsabschluss/{id}/wiedereroeffnen', fn(array $p) => (new MonatsabschlussController())->wiedereroeffnen($p)); // ── Auswertungen: Berichte, Drilldown, CSV ────────────────────────────────── $router->get('/auswertungen', fn() => (new AuswertungenController())->index()); // Die festen Pfade stehen vor „/auswertungen/bericht/{id}“, sonst schluckt das // Muster auch „/auswertungen/bericht/speichern“. $router->get('/auswertungen/csv', fn() => (new AuswertungenController())->csv()); $router->get('/auswertungen/buchungen', fn() => (new AuswertungenController())->drilldown()); $router->get('/auswertungen/bericht', fn() => (new AuswertungenController())->bericht()); $router->post('/auswertungen/bericht/speichern', fn() => (new AuswertungenController())->speichern()); $router->get('/auswertungen/bericht/{id}', fn(array $p) => (new AuswertungenController())->gespeichert($p)); $router->post('/auswertungen/bericht/{id}/loeschen', fn(array $p) => (new AuswertungenController())->loeschen($p)); $router->get('/auswertungen/gruppen', fn() => (new AuswertungenController())->gruppen()); $router->post('/auswertungen/gruppen/neu', fn() => (new AuswertungenController())->gruppeAnlegen()); $router->post('/auswertungen/gruppen/{id}', fn(array $p) => (new AuswertungenController())->gruppeSpeichern($p)); $router->post('/auswertungen/gruppen/{id}/loeschen', fn(array $p) => (new AuswertungenController())->gruppeLoeschen($p)); $router->get('/verwaltung/import', fn() => (new ImportController())->index()); $router->post('/verwaltung/import/hochladen', fn() => (new ImportController())->hochladen()); $router->post('/verwaltung/import/ausfuehren', fn() => (new ImportController())->ausfuehren()); $router->post('/verwaltung/import/{datei}/loeschen', fn(array $p) => (new ImportController())->loeschen($p)); // Noch nicht gebaute Bereiche: sichtbar in der Navigation, mit Hinweis auf die Phase. foreach (PlatzhalterController::pfade() as $bereich) { $router->get('/' . $bereich, fn() => (new PlatzhalterController())->zeige($bereich)); } try { $router->dispatch(); } catch (\Throwable $e) { DebugLog::fehler($e); http_response_code(500); (new View())->render('layout/500.php', []); }