using Application.Domain.Entities; using Infrastructure.Email; using Infrastructure.Extensions; using IoT.Shared.Services; using IoT.UI.Shard; using IoTNode.Services; using IoTNode.DeviceServices.FBee; using IoTNode.DeviceServices.Onvif; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.Threading.Tasks; using Hangfire; using Infrastructure.Data; using System.Linq; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Logging; using IoTNode.DeviceServices.SerialPortManager; namespace IoTNode { public class Startup : IoTServiceStartup { public Startup(IConfiguration configuration, IWebHostEnvironment env) : base(configuration, env) { } public override void ConfigureServices(IServiceCollection services) { services.AddTransient(); services.AddTransient(); 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()); base.ConfigureServices(services); } public override void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { base.Configure(app, env, loggerFactory); // Task.Run(() => { using var scope = app.ApplicationServices.CreateScope(); var timerRepo = scope.ServiceProvider.GetService>(); var timers = timerRepo.ReadOnlyTable().Where(o => o.NodeId != null).ToList(); foreach (var timer in timers) { RecurringJob.AddOrUpdate(timer.Id.ToString(), o => o.TimerHanle(timer.Id), timer.Cron, TimeZoneInfo.Local); } var tiggerRepo = scope.ServiceProvider.GetService>(); var tiggers = tiggerRepo.ReadOnlyTable().Where(o => o.NodeId != null).ToList(); foreach (var tigger in tiggers) { IoTNodeEventHandler.Tiggers.TryAdd(tigger.Id, tigger); } }); } public override void Seed(DbContext dbContext, IServiceProvider serviceProvider, IConfiguration configuration) { var id = Helper.Instance.GetMacAddress(); dbContext.Set().Add(new Node { Id = $"nodeid-{id}".ToGuid(), Name = "½Úµã", Number = id, Image = "/images/classroom.png", Type = "Öǻ۽ÌÊÒ" }); dbContext.SaveChanges(); base.Seed(dbContext, serviceProvider, configuration); } } }