using Hangfire; using Hangfire.LiteDB; using Infrastructure.Data; using Infrastructure.Email; using Infrastructure.Web; using IoT.Shared.Services; using IoTNode.DeviceServices.FBee; using IoTNode.DeviceServices.Onvif; using IoTNode.DeviceServices.SerialPortManager; using IoTNode.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace IoTNode { public class Startup : BaseStartup { public Startup(IConfiguration configuration, IWebHostEnvironment env) : base(configuration, env) { } public override void ConfigureServices(IServiceCollection services) { services.AddHangfire(o => o.UseLiteDbStorage("job.db")); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddHostedService(o => o.GetService()); services.AddHostedService(o => o.GetService()); services.AddHostedService(o => o.GetService()); services.AddHostedService(o => o.GetService()); services.AddTransient(); base.ConfigureServices(services); } public override void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { base.Configure(app, env, loggerFactory); app.UseHangfireDashboard(pathMatch: "/job"); app.UseHangfireServer(); //Task.Run(() => //{ // using var scope = app.ApplicationServices.CreateScope(); // var timerRepo = scope.ServiceProvider.GetService>(); // var timers = timerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId != null).ToList(); // foreach (var timer in timers) // { // RecurringJob.AddOrUpdate(timer.Id.ToString(), o => o.TimerHanle(timer.Id), timer.Cron, TimeZoneInfo.Local); // } //}); } } }