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<TransactionTemplate>();

  final account = IsarLink<Account>();

  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();
  }
}