implemented a comprehensive client-side demo mode triggered by a "demo@" username prefix, serving curated fixture data for all app modules

This commit is contained in:
2026-07-07 20:24:16 +02:00
parent 2668b111f1
commit 9b74c9fd81
45 changed files with 1409 additions and 43 deletions
@@ -0,0 +1,54 @@
import '../../../state/app/modules/marianum_dates/bloc/marianum_dates_state.dart';
import '../demo_persona.dart';
/// Demo fixtures for the school calendar — a handful of upcoming events built
/// relative to "now" and consistent with the demo persona (class 10b).
class DemoMarianumDates {
const DemoMarianumDates._();
static List<MarianumDate> events() {
final today = DateTime.now();
DateTime at(int offset, [int hour = 0, int minute = 0]) => DateTime(
today.year,
today.month,
today.day,
hour,
minute,
).add(Duration(days: offset));
return [
MarianumDate(
uid: 'demo-klausur-mathe',
title: 'Klausur Mathematik ${DemoPersona.className}',
description: 'Erste Klausur bei Herr Müller. Themen: Analysis.',
start: at(4, 9, 45),
end: at(4, 11, 15),
isAllDay: false,
),
MarianumDate(
uid: 'demo-wandertag',
title: 'Wandertag',
description: 'Gemeinsamer Ausflug der Jahrgangsstufe 10.',
start: at(11),
end: at(12),
isAllDay: true,
),
MarianumDate(
uid: 'demo-elternsprechtag',
title: 'Elternsprechtag',
description: 'Anmeldung zu den Gesprächen über das Sekretariat.',
start: at(18, 14, 0),
end: at(18, 19, 0),
isAllDay: false,
),
MarianumDate(
uid: 'demo-zeugniskonferenz',
title: 'Zeugniskonferenz',
description: 'Unterrichtsfrei ab der 4. Stunde.',
start: at(32),
end: at(33),
isAllDay: true,
),
];
}
}