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

47 lines
1.3 KiB
Dart

import 'package:isar/isar.dart';
import 'package:mnemo_cards_backend/cron/task.dart';
import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart';
import '../discounts/discounts_manager.dart';
import '../main.dart';
class DiscountCampaignTask with Task {
final DiscountsManager _discountsManager;
DiscountCampaignTask(this._discountsManager);
@override
String get name => 'discount_campaign';
@override
Future<void> task() async {
final campaigns = await isar.txn(() async {
return await isar.discountCampaignModels
.filter()
.statusEqualTo(DiscountCampaignModelStatus.created)
.or()
.statusEqualTo(DiscountCampaignModelStatus.active)
.findAll();
});
final now = DateTime.now();
for (final campaign in campaigns) {
switch (campaign.status) {
case DiscountCampaignModelStatus.created:
_discountsManager.changeCampaignStatus(campaign);
break;
case DiscountCampaignModelStatus.active:
_discountsManager.changeCampaignStatus(campaign);
break;
case DiscountCampaignModelStatus.expired:
// Ignoring
break;
case DiscountCampaignModelStatus.disabled:
// Ignoring
break;
}
}
}
@override
int get intervalSeconds => 15 * 60;
}