using Microsoft.Extensions.DependencyInjection;
using Quartz;
using SlnMesnac.Quartz.Job;
using System;
using System.Threading;

#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* 版权所有 (c) 2024 WenJY 保留所有权利。
* CLR版本：4.0.30319.42000
* 机器名称：LAPTOP-E0N2L34V
* 命名空间：SlnMesnac.Quartz
* 唯一标识：496f8d2b-70e3-4a05-ae18-a9b0fcd06b82
*
* 创建者：WenJY
* 电子邮箱：wenjy@mesnac.com
* 创建时间：2024-03-27 21:58:35
* 版本：V1.0.0
* 描述：
*
*--------------------------------------------------------------------
* 修改人：
* 时间：
* 修改说明：
*
* 版本：V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.Quartz
{
    public static class QuartzSetUp
    {
        [Obsolete]
        public static void AddQuartzSetUp(this IServiceCollection services)
        {
            services.AddQuartz(q =>
            {
                q.UseMicrosoftDependencyInjectionJobFactory();

                q.ScheduleJob<AutoModeJob>(trigger =>
                    trigger.WithCronSchedule("0 0 * * * ? *").WithIdentity("AutoModeJob", "AutoModeJobGroup")
                );

                q.ScheduleJob<InspModeJob>(trigger =>
                    trigger.WithCronSchedule("0 0 * * * ? *").WithIdentity("InspModeJob", "InspModeJobGroup")
                );

                //q.SetProperty("quartz.scheduler.instanceName", "MyScheduler");
                //q.SetProperty("quartz.scheduler.instanceId", "Auto");
                //q.SetProperty("quartz.scheduler.startSchedulerOnStart", "false");

            });

            services.AddQuartzHostedService(options =>
            {
                options.StartDelay = Timeout.InfiniteTimeSpan;
                options.WaitForJobsToComplete = true;
            });

            services.AddSingleton<IScheduler>(provider => {
                var provide = provider.GetRequiredService<ISchedulerFactory>().GetScheduler().Result;
                provide.PauseAll();
                return provide;
            });

        }
    }
}
