private void UpdateReportsLists(string reportsList) { int statusIndex; AvailableReport report; if (!string.IsNullOrEmpty(reportsList)) { statusIndex = reportsList.IndexOf("Status"); m_availableReports.Clear(); m_pendingReports.Clear(); foreach (string line in reportsList.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Skip(2)) { report = new AvailableReport(this) { Date = GetReportDate(line.Remove(statusIndex).Trim()), Status = line.Substring(statusIndex).Trim() }; if (report.Status != "Pending") { m_availableReports.Add(report); } else { m_pendingReports.Add(report.Date); } } } }
void TriggerAlerts( Read.AlertRules.AlertRule alertRule, Domain.Alerts.Alerts root, AvailableReport incommingReport) { var openAlert = _openAlertsRepository.GetById(alertRule.HealthRiskId); if(openAlert != null) { root.AddReportToAlert(incommingReport.Id, openAlert.AlertId); return; } int casesThreshold = alertRule.NumberOfCasesThreshold; int healthRiskNumber = alertRule.HealthRiskId; TimeSpan alertRuleInterval = new TimeSpan(alertRule.ThresholdTimeframeInHours, 0, 0); DateTimeOffset horizon = DateTimeOffset.UtcNow - alertRuleInterval; var reportIds = _reportRepository.Query.Where( c => c.Timestamp >= horizon && c.HealthRiskNumber == healthRiskNumber) .Select(_ => _.Id.Value).ToList(); if(reportIds.Count() >= casesThreshold) { root.OpenAlert( Guid.NewGuid(), alertRule.Id, reportIds ); } }
private void UpdateReportsLists(string reportsList) { int statusIndex; AvailableReport report; if (!string.IsNullOrEmpty(reportsList)) { statusIndex = reportsList.IndexOf("Status"); m_availableReports.Clear(); m_pendingReports.Clear(); foreach (string line in reportsList.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Skip(2)) { report = new AvailableReport(this) { Date = GetReportDate(line.Remove(statusIndex).Trim()), Status = line.Substring(statusIndex).Trim() }; if (report.Status != "Pending") m_availableReports.Add(report); else m_pendingReports.Add(report.Date); } } }