Dritter Aufgabentyp repotting im Intervall-Modell: optionales repottingIntervalMonths + lastRepotted/By am Pflanzenprofil, Formular mit Intervall-Feld und Datums-Auswahl, Umtopf-Zeile im Detail, Aufgaben in Checkliste und Sammel-Push (reminders.ts gespiegelt), Sitter dürfen bestätigen (Rules-Allowlist). Monats-Arithmetik kürzt den 31. auf den Monatsletzten. Ende-zu-Ende-Widget-Test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
930 B
Dart
32 lines
930 B
Dart
import 'package:flutter/foundation.dart';
|
||
|
||
import '../../plants/domain/plant.dart';
|
||
|
||
enum CareTaskType { watering, fertilizing, repotting }
|
||
|
||
/// 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;
|
||
}
|