public void ProcessAlarms() { var alarmQueue = alarmDS.GetUnconfirmedAlarms(); Logger.WriteLine("found " + alarmQueue.Rows.Count + " unconfirmed alarms in the queue"); for (int i = 0; i < alarmQueue.Count; i++) { var alarm = alarmQueue[i]; LogDetails(alarm); string[] numbers = alarmDS.GetPhoneNumbers(alarm.list); if (numbers.Length == 0) { Console.WriteLine("Warning: no phone numbers defined ");; continue; } int minutesBeforeNextPhone = 5; if (alarmDS.CurrentActivity(alarm.id, minutesBeforeNextPhone)) // any activity in last x minutes. { Logger.WriteLine("waiting on id = " + alarm.id + " it has activity in the last " + minutesBeforeNextPhone + " minutes"); continue; } alarm.current_list_index = UpdateCurrentPhoneIndex(alarm, numbers); var c = new AsteriskCallFile(numbers[alarm.current_list_index]); c.AddVariable("siteid", alarm.siteid); c.AddVariable("parameter", alarm.parameter); c.AddVariable("value", alarm.value.ToString()); c.AddVariable("id", alarm.id.ToString()); c.AddVariable("phone", numbers[alarm.current_list_index]); SendCallFile(c); alarmDS.SaveTable(alarmQueue); } }