Запустить сервис в первый рабочий день месяца

Пытаюсь с помощью QuartZ запустить сервис раз в месяц, а конкретно в 1,2 или 3 числе(в рабочий день), с помошью функций var workingDay = _pik.GetWorkingDay(DateTime.Now); можно узнать рабочий или нет день.

Как это сделать ?

        internal class SmsSenderJob : IJob
        {
            private static readonly CancellationTokenSource cancellationToken = new CancellationTokenSource();
            private readonly double amount = 5;
            private readonly HttpClient _client = new HttpClient();
    
            private readonly IPik _pik;
            private readonly ILogger<SmsSenderJob> _logger;
    
            public SmsSenderJob(IPik pik, ILogger<SmsSenderJob> logger)
            {
                _logger = logger;
                _pik = pik;
            }
    
            public async Task Execute(IJobExecutionContext context)
            {
                Console.Writline("Hello");
            }
         }


 

        public class JobsScheduler
        {
            private readonly IScheduler _scheduler;
            private ILogger _logger;
            private IPik _pik;
    
            private IServiceCollection Services { get; }
            private IServiceProvider Provider { get; }
    
            public JobsScheduler(IPik _pik)
            {
                _pik= pik;
                Services = new ServiceCollection();
                Provider = Services.BuildServiceProvider();
    
                NameValueCollection props = new NameValueCollection
                {
                    { "quartz.serializer.type", "binary" }
                };
    
                StdSchedulerFactory factory = new StdSchedulerFactory(props);
                _scheduler = factory.GetScheduler().Result;
    
                IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", false, true);
                IConfigurationRoot configuration = builder.Build();
            }
    
            public async Task Start()
            {
                try
                {
                    var workingDay = _pik.GetWorkingDay(DateTime.Now);
    
                    await _scheduler.Start();
    
                    IJobDetail job = JobBuilder.Create<SmsSenderJob>().Build();
    
                    ITrigger trigger = TriggerBuilder.Create()
                        .WithIdentity("asd", "dfgfd")
                        .StartNow()
                        .WithSimpleSchedule(x => x.WithIntervalInMinutes(1)
                            .RepeatForever())
                        .Build();
    
                    await _scheduler.ScheduleJob(job, trigger);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "Error while trying to start scheduler");
    
                }
            }
        }

Ответы (0 шт):