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;
        }