Beispiel #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            var appConfiguration = Configuration.Get <AppConfiguration>();

            var httpClient        = new HttpClient();
            var zWayService       = new ZWayService(httpClient, LoggerFactory.CreateLogger <ZWayService>());
            var weatherService    = new WeatherService(httpClient, LoggerFactory.CreateLogger <WeatherService>());
            var sunService        = new SunService(httpClient, LoggerFactory.CreateLogger <SunService>());
            var virtualService    = new DeviceGroupService(zWayService);
            var aggregatedService = new AggregatedDeviceService(zWayService, virtualService, weatherService, sunService);
            var statisticsService = new StatisticsService(LoggerFactory.CreateLogger <StatisticsService>(), aggregatedService, appConfiguration.Statistics);


            zWayService.InitAsync(appConfiguration.ZWay).Wait();
            weatherService.InitAsync(appConfiguration.Weather).Wait();
            sunService.InitAsync(appConfiguration.Sun).Wait();
            virtualService.Init(appConfiguration.DeviceGroups);
            aggregatedService.Init(appConfiguration.ToggleAutomationRules);
            statisticsService.Init();

            services.AddMvc();
            services.AddSingleton <HttpClient>(new HttpClient());
            services.AddSingleton <IDeviceService>(aggregatedService);
            services.AddSingleton <VersionService>(new VersionService());
            services.AddSingleton <StatisticsService>(statisticsService);
            //services.AddSignalR();
        }