feat: add transaction expiry service

This commit is contained in:
orangdeso 2025-04-08 23:21:40 +07:00
parent 18487e7a2e
commit ea3e1080e0
1 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,54 @@
import 'dart:async';
import 'dart:developer';
import '../../data/repositories/transaction_repository_impl.dart';
class TransactionExpiryService {
static final TransactionExpiryService _instance = TransactionExpiryService._internal();
late TransactionRepositoryImpl _repository;
Timer? _timer;
bool _isRunning = false;
factory TransactionExpiryService() => _instance;
TransactionExpiryService._internal();
void initialize(TransactionRepositoryImpl repository) {
_repository = repository;
_startTimer();
log('[TransactionExpiryService] Service diinisialisasi');
}
void _startTimer() {
if (_isRunning) return;
_timer?.cancel();
_isRunning = true;
_timer = Timer.periodic(Duration(days: 1), (_) {
_checkExpiredTransactions();
});
_checkExpiredTransactions();
log('[TransactionExpiryService] Timer dimulai, interval: 1 day');
}
Future<void> _checkExpiredTransactions() async {
log('[TransactionExpiryService] Memulai pengecekan transaksi kedaluwarsa...');
try {
await _repository.checkAndCancelExpiredTransactions();
log('[TransactionExpiryService] Pengecekan transaksi kedaluwarsa selesai');
} catch (e) {
log('[TransactionExpiryService] Error saat memeriksa transaksi kedaluwarsa: $e');
}
}
void dispose() {
_timer?.cancel();
_timer = null;
_isRunning = false;
log('[TransactionExpiryService] Service dihentikan');
}
bool get isRunning => _isRunning;
}