Files
Holzleitner-Lieferservice-App/lib/feature/delivery/model/tour_day_text.dart
Dennis Nemec 2ff331294e fix: Tour-Datum — Leer-Texte, veraltete Antworten, Kalenderfenster
- Leer-Ansichten (Auswählen, Sortieren, Beladen, Ausliefern) nennen den
  gewählten Tag statt immer „heute": „Für den 02.09.2026 ist keine Tour
  zugewiesen." (TourDayText).
- TourBloc: Loads/Refreshes laufen nebenläufig; bei schnellem
  Datumswechsel konnte die langsamere Antwort des vorigen Tages die Tour
  des gewählten Tages überschreiben. Jetzt schreibt nur die jüngste
  Anfrage ihr Ergebnis.
- Kalender reicht 90 statt 14 Tage zurück (z. B. nachimportierte Touren
  vom Monatsanfang).
- Test: neuer Fahrer startet auf „heute", auch wenn der vorige einen
  anderen Tag gewählt hatte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:04:56 +02:00

41 lines
1.3 KiB
Dart

/// Formulierung des gewählten Tour-Tags für Fließtexte, z. B. in den
/// Leer-Ansichten („Für heute ist keine Tour zugewiesen." bzw. „Für den
/// 22.09.2026 …").
///
/// `null` als gewähltes Datum heißt „heute" (Server-Default, siehe
/// `TourDateCubit`). Heute/morgen/gestern werden relativ zur Geräte-Uhr
/// benannt, alle anderen Tage mit Datum.
class TourDayText {
const TourDayText._(this._relative, this.date);
factory TourDayText.of(DateTime? selected, {DateTime? now}) {
final clock = now ?? DateTime.now();
final today = DateTime(clock.year, clock.month, clock.day);
final day = selected == null
? today
: DateTime(selected.year, selected.month, selected.day);
final relative = switch (day.difference(today).inDays) {
0 => 'heute',
1 => 'morgen',
-1 => 'gestern',
_ => null,
};
return TourDayText._(relative, _format(day));
}
final String? _relative;
/// Datum als „TT.MM.JJJJ".
final String date;
/// Umstandsangabe: „heute" / „am 22.09.2026".
String get when => _relative ?? 'am $date';
/// Nach „für": „heute" / „den 22.09.2026".
String get afterFor => _relative ?? 'den $date';
static String _format(DateTime d) =>
'${d.day.toString().padLeft(2, '0')}.'
'${d.month.toString().padLeft(2, '0')}.${d.year}';
}