/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { RockContext rockContext = new RockContext(); SystemTestService monitorTestService = new SystemTestService(rockContext); var qry = monitorTestService.Queryable().OrderBy(t => t.Id); // set the datasource as a query. This allows the grid to only fetch the records that need to be shown based on the grid page and page size gList.SetLinqDataSource(qry); gList.DataBind(); }
public void Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; var rockContext = new RockContext(); var systemCommunication = dataMap.GetString("NotificationCommunication").AsGuid(); var notificationGroup = dataMap.GetString("NotificationGroup").AsGuid(); SystemTestService systemTestService = new SystemTestService(rockContext); SystemTestHistoryService systemTestHistoryService = new SystemTestHistoryService(rockContext); var systemTests = systemTestService.Queryable() .Where(t => t.RunIntervalMinutes.HasValue) .ToList(); int count = 0; List <string> alarms = new List <string>(); foreach (var test in systemTests) { var cutOffDate = RockDateTime.Now.AddMinutes(test.RunIntervalMinutes.Value * -1); var histories = systemTestHistoryService.Queryable() .Where(h => h.SystemTestId == test.Id && h.CreatedDateTime > cutOffDate).Any(); if (!histories) { count++; var result = test.Run(); if (test.MeetsAlarmCondition(result)) { alarms.Add(test.Name); } } } if (alarms.Any()) { SendNotifications(alarms, systemCommunication, notificationGroup); context.Result = string.Format($"Ran {count} test{( count != 1 ? "s" : "" )}. Alarms: {string.Join( ", ", alarms )}"); } else { context.Result = string.Format($"Ran {count} test{( count != 1 ? "s" : "" )}."); } }