mnemo_cards/mnemo_cards_backend/lib/cron/check_payment.dart
2025-11-16 14:25:27 +03:00

55 lines
1.4 KiB
Dart

import 'package:injectable/injectable.dart';
import 'package:isar/isar.dart';
import 'package:mnemo_cards_backend/api/purchase/payment_manager.dart';
import 'package:mnemo_cards_backend/cron/task.dart';
import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import '../main.dart';
@LazySingleton()
class CheckPaymentTask with Task {
final PaymentManager _paymentManager;
CheckPaymentTask(
this._paymentManager,
);
Future<void> task() => check();
Future<void> check() async {
print('Checking payments...');
final models = await isar.txn(
() async => await isar.paymentModels
.filter()
.not()
.statusEqualTo(PaymentStatus.processed)
.and()
.not()
.statusEqualTo(PaymentStatus.unknown)
.and()
.group(
(q) => q
.paymentSystemEqualTo(PaymentSystem.yookassa)
.or()
.paymentSystemEqualTo(PaymentSystem.rustore),
)
.findAll(),
);
print('Found ${models.length} unprocessed payments');
for (final model in models) {
try {
await _paymentManager.checkAndProcessPayment(model);
} catch (e, s) {
print(e);
print(s);
}
}
}
@override
String get name => 'check_payment';
@override
int get intervalSeconds => 300;
}