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; }
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); Guid alarmId = alarm.Id; Run(AlarmStartedForPlugins, x => x(alarmId)); 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); }
private static DateTime GetDate(AlarmTime time, DateTime now, DateTime lastAlarm) { var date = now.Date.AddHours(time.Hours).AddMinutes(time.Minutes); return date > lastAlarm ? date : date.AddDays(1); }