using Application.Domain.Entities; using Infrastructure.Domain; using Infrastructure.Email; using Infrastructure.Sms; using Infrastructure.UI; using IoT.UI.Shard; using IoTCenter.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; namespace IoTCenter { public class Startup : IoTServiceStartup { public Startup(IConfiguration configuration, IHostingEnvironment env) : base(configuration, env) { } public override void ConfigureServices(IServiceCollection services) { services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddSingleton(); Assembly.GetExecutingAssembly() .GetTypes() .Where(t => t.GetInterfaces().Any(o => o.IsGenericType && o.GetGenericTypeDefinition() == typeof(IEvent<>))) .ToList() .ForEach(t => { services.AddTransient(t.GetInterfaces().Where(o => o.IsGenericType && o.GetGenericTypeDefinition() == typeof(IEvent<>)).First(), t); }); base.ConfigureServices(services); } public override void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { base.Configure(app, env, loggerFactory); Task.Run(() => { app.ApplicationServices.GetService().Start(); }); } public override void ConfigureOptions(IServiceCollection services) { Console.WriteLine(IoT.Resources.Resource.WebFolder); services.ConfigureOptions(new FileConfigureOptions(_env, new List { "IoT.Shared", "IoT.Resources" })); } public override void UseSignalR(IApplicationBuilder app) { this.UseSignalR(app); } public override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(); base.OnModelCreating(modelBuilder); } public override void Seed(DbContext dbContext, IServiceProvider serviceProvider, IConfiguration configuration) { dbContext.Set().Add(new Setting { Longitude = 116.54296875m, Latitude = 41.77131167974391m, Altitude = 0m }); dbContext.SaveChanges(); base.Seed(dbContext, serviceProvider, configuration); } } }