47 lines
1.3 KiB
Dart
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;
|
|
}
|