public void AddHistoryTimeline(HistoryTimeline model) { this.HistoryTimeline.Add(model); this.CalculateUpDown(); }
public void CalculateUpDown() { HistoryTimeline = HistoryTimeline.OrderByDescending(o => o.CreatedUtc).ToList(); History = History.OrderByDescending(o => o.CreatedUtc).ToList(); HistoryHealth = HistoryHealth.OrderByDescending(o => o.CreatedUtc).ToList(); LastReportedUtc = CreatedUtc; var hasErrors = false; var isUp = false; var list = HistoryHealth.Where(o => o.Errors.Length > 0 || o.Internet.HasValue && o.Internet.Value == false || o.Permissions.HasValue && o.Permissions.Value == false ) .OrderByDescending(o => o.CreatedUtc).ToList(); hasErrors = list.Count > 0; while (!isUp) { if (History.Count > 0) { var h = History.OrderBy(o => o.CreatedUtc).Last(); if (h != null) { isUp = h.CreatedUtc.AddMinutes(Program.ClientConfig.OfflineAfterMinutes) > DateTime.UtcNow; LastReportedUtc = h.CreatedUtc; } } if (HistoryHealth.Count > 0) { var h = HistoryHealth.OrderBy(o => o.CreatedUtc).Last(); if (h != null) { isUp = h.CreatedUtc.AddMinutes(Program.ClientConfig.OfflineAfterMinutes) > DateTime.UtcNow; if (h.CreatedUtc > LastReportedUtc) { LastReportedUtc = h.CreatedUtc; } } } if (HistoryTimeline.Count > 0) { var h = HistoryTimeline.OrderBy(o => o.CreatedUtc).Last(); if (h != null) { isUp = h.CreatedUtc.AddMinutes(Program.ClientConfig.OfflineAfterMinutes) > DateTime.UtcNow; if (h.CreatedUtc > LastReportedUtc) { LastReportedUtc = h.CreatedUtc; } } } break; } if (hasErrors) { StatusUp = isUp ? UpDownStatus.UpWithErrors : UpDownStatus.DownWithErrors; } else { StatusUp = isUp ? UpDownStatus.Up : UpDownStatus.Down; } }