- ownerUid je Haushalt (Alt-Haushalte: erster memberUids-Eintrag = Ersteller); Besitzer-Anzeige in Mitglieder- und Haushaltsliste - Haushalt umbenennen (Dialog im Haushalts-Screen); Rules erlauben Clients am Haushalts-Dokument nur noch das Namensfeld - Cloud Functions leaveHousehold (selbst austreten, auch als Sitter) und removeMember (nur Besitzer); beide biegen den aktiven Zeiger des Betroffenen um und legen notfalls einen frischen eigenen Haushalt an - Haushalts-Wechsler im Drawer (PopupMenu, ab zwei Haushalten) - Tages-Checkliste und nächste Fälligkeit aggregieren über alle Haushalte, mit Zwischenüberschrift je Haushalt; Bestätigen schreibt in den Herkunfts-Haushalt der Aufgabe - Widget-Tests: Gruppierung, Besitzer-Rechte, Umbenennen Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
919 B
Dart
32 lines
919 B
Dart
import 'package:flutter/foundation.dart';
|
||
|
||
import '../../plants/domain/plant.dart';
|
||
|
||
enum CareTaskType { watering, fertilizing }
|
||
|
||
/// Eine heute fällige (oder überfällige) Pflegeaufgabe.
|
||
///
|
||
/// Aufgaben werden nicht gespeichert, sondern aus den Pflanzen berechnet:
|
||
/// Fälligkeit = letzte Erledigung + Intervall (Intervall-Modell).
|
||
@immutable
|
||
class DueTask {
|
||
const DueTask({
|
||
required this.plant,
|
||
required this.type,
|
||
required this.dueDate,
|
||
required this.householdId,
|
||
required this.householdName,
|
||
});
|
||
|
||
final Plant plant;
|
||
final CareTaskType type;
|
||
final DateTime dueDate;
|
||
|
||
/// Aus welchem Haushalt die Aufgabe stammt – die Checkliste sammelt
|
||
/// Aufgaben aus allen Haushalten des Nutzers.
|
||
final String householdId;
|
||
final String householdName;
|
||
|
||
/// 0 = heute fällig, 1 = seit gestern überfällig, usw.
|
||
int overdueDays(DateTime today) => today.difference(dueDate).inDays;
|
||
}
|