Exemple #1
0
        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
                );
            }
            

        }
Exemple #3
0
        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);
                }
            }
        }