Feat: Fügt Benachrichtigungen für nicht überprüfte Transaktionen hinzu

This commit is contained in:
2026-01-05 01:07:23 +01:00
parent 40eaca3157
commit 6f3d987d19
14 changed files with 676 additions and 31 deletions

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:drift/drift.dart';
import '../Entities/drift_database.dart';
@@ -29,19 +31,29 @@ class TransactionRepository {
}
/// Aktualisiert eine Transaktion in der Datenbank
Future<bool> update(final TransactionsCompanion transaction) {
Future<bool> update(final TransactionsCompanion transaction) async {
final Transaction? transactionInDb = await find(transaction.id.value);
final Transaction? transactionData = transactionInDb?.copyWithCompanion(
transaction,
);
final DateTime date = transaction.date.value!.add(
transaction.date.value!.timeZoneOffset,
);
final TransactionsCompanion transactionToUpdate = TransactionsCompanion(
id: transaction.id,
name: transaction.name,
id: Value(transactionData?.id ?? transaction.id.value),
name: Value(transactionData?.name ?? transaction.name.value),
date: Value(date),
amount: transaction.amount,
checked: transaction.checked,
accountId: transaction.accountId,
recurringTransactionId: transaction.recurringTransactionId,
amount: Value(transactionData?.amount ?? transaction.amount.value),
checked: const Value(true),
accountId: Value(
transactionData?.accountId ?? transaction.accountId.value,
),
recurringTransactionId: Value(
transactionData?.recurringTransactionId ??
transaction.recurringTransactionId.value,
),
updatedAt: Value(DateTime.now()),
);
@@ -69,6 +81,7 @@ class TransactionRepository {
final double? amountMin,
final double? amountMax,
final Account? account,
final bool? checked,
final RecurringTransaction? recurringTransaction,
final int? limit,
final int? offset,
@@ -113,6 +126,10 @@ class TransactionRepository {
query.where((final t) => t.accountId.equals(account.id));
}
if (checked != null) {
query.where((final t) => t.checked.equals(checked));
}
if (recurringTransaction != null) {
query.where(
(final t) => t.recurringTransactionId.equals(recurringTransaction.id),
@@ -262,4 +279,16 @@ class TransactionRepository {
return result;
}
/// Markiert die übergebenen Transaktionen als überprüft
void markTransactionsAsChecked(final List<Transaction> transactions) {
for (final value in transactions) {
final TransactionsCompanion transaction = TransactionsCompanion(
id: Value(value.id),
date: Value(value.date),
checked: const Value(true),
);
unawaited(update(transaction));
}
}
}