using FrontendWorkerService.Models; using FrontendWorkerService.Quartz; using FrontendWorkerService.Quartz.Jobs; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Quartz; using Quartz.Impl; using Quartz.Spi; using Repository.BaseRepository.Implement; using Repository.BaseRepository.Interface; using Repository.FrontendRepository.Implement; using Repository.FrontendRepository.Interface; using Repository.Helper; using Repository.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace FrontendWorkerService { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { IConfiguration configuration = hostContext.Configuration; services.Configure<ObixApiConfig>(configuration.GetSection("ObixApiConfig")); #region DBHelper �`�J services.Configure<DBConfig>(configuration.GetSection("DBConfig")); services.AddTransient<IDatabaseHelper, DatabaseHelper>(); #endregion DBHelper �`�J #region Repository �`�J //services.AddTransient<IBackendRepository, BackendRepository>(); //services.AddTransient<IBackgroundServiceRepository, BackgroundServiceRepository>(); services.AddTransient<IFrontendRepository, FrontendRepository>(); services.AddTransient<IBaseRepository, BaseRepository>(); #endregion Repository �`�J //�K�[Quartz�A�� services.AddTransient<IJobFactory, SingletonJobFactory>(); services.AddTransient<ISchedulerFactory, StdSchedulerFactory>(); services.AddHostedService<QuartzHostedService>(); #region �q�\�]���I��(�]�w�C��01:00 AM ����@��) services.AddSingleton<OnTimeDeviceSubscriptionJob>(); services.AddSingleton( new JobSchedule(jobType: typeof(OnTimeDeviceSubscriptionJob), cronExpression: configuration.GetValue<string>("BackgroundServiceCron:OnTimeDeviceSubscriptionJob")) ); #endregion #region ��s�Y�ɭ�(�]�w5������@��) services.AddSingleton<OnTimeDeviceRawDataJob>(); services.AddSingleton( new JobSchedule(jobType: typeof(OnTimeDeviceRawDataJob), cronExpression: configuration.GetValue<string>("BackgroundServiceCron:OnTimeDeviceRawDataJob")) ); #endregion #region �Y�ɧiĵ�q�\�]���I��(�]�w�C��01:00 AM ����@��) services.AddSingleton<OntimeAlarmDeviceSubscriptionJob>(); services.AddSingleton( new JobSchedule(jobType: typeof(OntimeAlarmDeviceSubscriptionJob), cronExpression: configuration.GetValue<string>("BackgroundServiceCron:OntimeAlarmDeviceSubscriptionJob")) ); #endregion #region ��s�iĵ�]�ƪ��A��(�]�w5������@��) services.AddSingleton<OntimeAlarmDeviceRawDataJob>(); services.AddSingleton( new JobSchedule(jobType: typeof(OntimeAlarmDeviceRawDataJob), cronExpression: configuration.GetValue<string>("BackgroundServiceCron:OntimeAlarmDeviceRawDataJob")) ); #endregion }).ConfigureLogging((hostContext, logFactory) => { IConfiguration configuration = hostContext.Configuration; //logFactory.AddFile("Logs/log-{Date}.txt"); logFactory.AddFile(configuration.GetValue<string>("LoggerPath") + "/log-{Date}.txt"); }); } }