feat: add transaction expiry service
This commit is contained in:
parent
18487e7a2e
commit
ea3e1080e0
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue