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 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; }