55 lines
1.4 KiB
Dart
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;
|
|
}
|