using System.Threading.Tasks.Schedulers;

namespace BBWY.Server.Business
{
    public class TaskSchedulerManager
    {
        public LimitedConcurrencyLevelTaskScheduler SyncOrderTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler ProductSyncTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler SyncRefundOrderTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler SyncAfterOrderTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler JDPopularizeTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler StoreHouseTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler StockNumWarningTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler GOIWarningTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler JDPromotionDelayTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler JDPromotionMonitorTaskScheduler { get; private set; }

        public LimitedConcurrencyLevelTaskScheduler JDPromotionAutoStartTaskScheduler { get; private set; }

        public TaskSchedulerManager()
        {
            SyncOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            SyncRefundOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            SyncAfterOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            PurchaseOrderCallbackTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            ProductSyncTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(2);
            JDPopularizeTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);

            StoreHouseTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(2);

            StockNumWarningTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            GOIWarningTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);

            JDPromotionDelayTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            JDPromotionMonitorTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
            JDPromotionAutoStartTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
        }
    }
}