import 'package:isar/isar.dart'; import 'package:okane/database/collections/account.dart'; import 'package:okane/database/collections/template.dart'; part 'recurrent.g.dart'; @collection class RecurringTransaction { Id id = Isar.autoIncrement; late int days; DateTime? lastExecution; final template = IsarLink(); final account = IsarLink(); bool isDue(DateTime now) { if (lastExecution == null) { return true; } final expectedNextExecution = lastExecution!.add(Duration(days: days)); if (now.isAfter(expectedNextExecution)) { return true; } return now.difference(expectedNextExecution).inDays.abs() <= (days * 0.5).toInt(); } }