/// <summary> /// Initialisiert den Controller /// </summary> /// <param name="logger">Service für Lognachrichten</param> /// <param name="heaterDataService">Service für die aktuellen Heizungsdaten</param> /// <param name="heaterRepository">Repository für die Historiendaten der Heizung</param> public HeaterDataController( ILogger <HeaterDataController> logger, IHeaterDataService heaterDataService, IHeaterRepository heaterRepository) { this.logger = logger; this.heaterDataService = heaterDataService; this.heaterRepository = heaterRepository; }
/// <summary> /// Initialisiert die Klasse /// </summary> /// <param name="logger">Service für Lognachrichten</param> /// <param name="heaterRepository">Repository für die Heizungsdaten</param> /// <param name="heaterDataHub">Hub zum senden von Nachrichten an Clients bezüglich den Heizungsdaten</param> public HeaterDataService( ILogger <HeaterDataService> logger, IHeaterRepository heaterRepository, IHubContext <HeaterDataHub> heaterDataHub) { this.logger = logger; this.heaterRepository = heaterRepository; this.heaterDataHub = heaterDataHub; this.destroyFunctions = new List <Action>(); this.CurrentHeaterValues = new Dictionary <int, HeaterData>(); this.doorOpeningsSinceFireOut = new List <DoorOpening>(); this.heaterValueDescriptionDictionaryPromise = Task.Run <IDictionary <int, ValueDescription> >(() => { // Das ConcurrentDictionary ist hier notwendig, da ansonsten Exceptions auftreten können bei mehreren Threads IDictionary <int, ValueDescription> result = new ConcurrentDictionary <int, ValueDescription>(); var valueDescriptions = this.heaterRepository.GetAllValueDescriptions(); foreach (var valueDescription in valueDescriptions) { result[valueDescription.Id] = valueDescription; } return(result); }); this.heaterValueDescriptionDictionaryPromise.ContinueWith((task) => { this.FillHeaterDataDictionaryByValueDescription(this.CurrentHeaterValues, task.Result); }); // Periodisches Speichern der Daten in der Datenbank machen var saveTimer = new Timer( (timerState) => { this.logger.LogDebug("HistoryDataTimer elapsed. Saving Historydata."); this.updateSinceDBSave = false; if (this.CurrentHeaterValues.Count > 0) { this.heaterRepository.SetHeaterValue(this.CurrentHeaterValues); } }, null, 0, Convert.ToInt32(new TimeSpan(0, 15, 0).TotalMilliseconds)); this.destroyFunctions.Add(() => { saveTimer.Dispose(); saveTimer = null; }); this.errorDictionaryPromise = Task.Run(() => { IDictionary <int, ErrorDescription> result = new ConcurrentDictionary <int, ErrorDescription>(this.heaterRepository.GetAllErrorDictionary()); return(result); }); }
/// <summary> /// Initialisiert den Controller /// </summary> /// <param name="logger">Service für Lognachrichten</param> /// <param name="heaterRepository">Repository für die Historiendaten der Heizung</param> public MailController(ILogger <HeaterDataController> logger, IHeaterRepository heaterRepository) { this.logger = logger; this.heaterRepository = heaterRepository; }