private static bool CheckTime(AlarmTime time, DateTime now, DateTime lastAlarm) { // если прошло время звонка будильника // и от этого времени не прошло 5 минут // и будильник сегодня еще не звонил var date = GetDateTime(time, now, lastAlarm); return lastAlarm < date && date < now; }
private void Alarm(AlarmTime[] alarms) { Logger.Info("ALARM!"); if (alarms.Any(a => a.PlaySound)) PlaySound(); foreach (var alarm in alarms) { Logger.Info("Run event handlers: {0} ({1})", alarm.Name, alarm.Id); Run(AlarmStartedForPlugins, x => x(alarm.Id)); if (alarm.UserScript != null) { Logger.Info("Run script: {0} ({1})", alarm.UserScript.Name, alarm.UserScript.Id); Context.GetPlugin<ScriptsPlugin>().ExecuteScript(alarm.UserScript); } } Logger.Info("Run subscribed scripts"); this.RaiseScriptEvent(x => x.AlarmStartedForScripts); }
public static DateTime GetDateTime(AlarmTime time, DateTime now, DateTime lastAlarm) { var date = now.Date.AddHours(time.Hours).AddMinutes(time.Minutes); if (date < lastAlarm || date.AddMinutes(5) < now) date = date.AddDays(1); return date; }