public async Task UpdateConsumer(long consumer, long outageId) { while (!ReliableDictionariesInitialized) { await Task.Delay(1000); } using (var unitOfWork = new UnitOfWork()) { try { var consumerHistoricals = new List <ConsumerHistorical>(1); if (await UnenergizedConsumers.ContainsKeyAsync(consumer)) { consumerHistoricals.Add(new ConsumerHistorical() { OutageId = outageId, ConsumerId = consumer, OperationTime = DateTime.Now, DatabaseOperation = DatabaseOperation.UPDATE }); //await UnenergizedConsumers.SetAsync(consumer, 0); } unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals); unitOfWork.Complete(); } catch (Exception e) { string message = $"{baseLogString} UpdateConsumer => Exception: {e.Message}"; Logger.LogError(message, e); } } }
public async Task Commit() { try { this.unitOfWork.Complete(); await OpenedSwitches.ClearAsync(); await UnenergizedConsumers.ClearAsync(); await HistoryModelChanges.ClearAsync(); string message = $"{baseLogString} Commit => {MicroserviceNames.OmsHistoryDBManagerService} confirmed model changes."; Logger.LogInformation(message); await LogAllReliableCollections(); } catch (Exception e) { string message = $"{baseLogString} Commit => Exception: {e.Message}"; Logger.LogError(message, e); } finally { this.unitOfWork.Dispose(); this.unitOfWork = null; } }
public async Task OnConsumerBlackedOut(List <long> consumers, long?outageId) { while (!ReliableDictionariesInitialized) { await Task.Delay(1000); } using (var unitOfWork = new UnitOfWork()) { try { var consumerHistoricals = new List <ConsumerHistorical>(); foreach (var consumer in consumers) { if (!await UnenergizedConsumers.ContainsKeyAsync(consumer)) { consumerHistoricals.Add(new ConsumerHistorical() { OutageId = outageId, ConsumerId = consumer, OperationTime = DateTime.Now, DatabaseOperation = DatabaseOperation.INSERT }); await UnenergizedConsumers.SetAsync(consumer, 0); } } unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals); unitOfWork.Complete(); } catch (Exception e) { string message = $"{baseLogString} OnConsumersBlackedOut => Exception: {e.Message}"; Logger.LogError(message, e); } } }
public async Task OnConsumersEnergized(HashSet <long> consumers) { while (!ReliableDictionariesInitialized) { await Task.Delay(1000); } using (var unitOfWork = new UnitOfWork()) { try { var consumerHistoricals = new List <ConsumerHistorical>(); var copy = (await UnenergizedConsumers.GetDataCopyAsync()).Keys.ToList(); var changedConsumers = copy.Intersect(consumers).ToList(); foreach (var consumer in changedConsumers) { var consumerHistorical = new ConsumerHistorical() { ConsumerId = consumer, OperationTime = DateTime.Now, DatabaseOperation = DatabaseOperation.DELETE, }; consumerHistoricals.Add(consumerHistorical); } foreach (var changed in changedConsumers) { if (await UnenergizedConsumers.ContainsKeyAsync(changed)) { await UnenergizedConsumers.TryRemoveAsync(changed); } } unitOfWork.ConsumerHistoricalRepository.AddRange(consumerHistoricals); unitOfWork.Complete(); } catch (Exception e) { string message = $"{baseLogString} OnConsumersEnergized => Exception: {e.Message}"; Logger.LogError(message, e); } } }
private async Task LogAllReliableCollections() { while (!ReliableDictionariesInitialized) { await Task.Delay(1000); } StringBuilder sb = new StringBuilder(); sb.AppendLine("Reliable Collections"); sb.AppendLine("OpenedSwitches =>"); var openedSwitches = await OpenedSwitches.GetEnumerableDictionaryAsync(); foreach (var element in openedSwitches) { sb.AppendLine($"Key => {element.Key}, Value => 0x{element.Value:X16}"); } sb.AppendLine(); sb.AppendLine("UnenergizedConsumers =>"); var unenergizedConsumers = await UnenergizedConsumers.GetEnumerableDictionaryAsync(); foreach (var element in unenergizedConsumers) { sb.AppendLine($"Key => 0x{element.Key:X16}, Value => 0x{element.Value:X16}"); } sb.AppendLine(); sb.AppendLine("HistoryModelChanges =>"); var historyModelChanges = await HistoryModelChanges.GetEnumerableDictionaryAsync(); foreach (var element in historyModelChanges) { sb.AppendLine($"Key => 0x{element.Key:X16}, Value => changes count: {element.Value.Count}"); } sb.AppendLine(); Logger.LogDebug($"{baseLogString} LogAllReliableCollections => {sb}"); }