Esempio n. 1
0
        /// <summary>
        /// Raises the <see cref="TaskStarted" /> event.
        /// </summary>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected virtual void OnTaskStarted(ScheduledTaskEventArgs e)
        {
            EventHandler <ScheduledTaskEventArgs> handler;

            handler = this.TaskStarted;

            if (handler != null)
            {
                handler(this, e);
            }
        }
        private void OnScheduledTaskAdded(object sender, ScheduledTaskEventArgs e)
        {
            IScheduledTask scheduledTask = this.repository.ScheduledTasks.GetById(e.ScheduledTaskId);

            if (scheduledTask == null)
            {
                return;
            }

            this.AddScheduledTask(scheduledTask);
        }
        public void NotifyAdd()
        {
            this.Repository.RaiseEvents = true;

            FakeSerializableScheduledTask scheduledTask = new FakeSerializableScheduledTask()
            {
                Id       = Guid.NewGuid(),
                Schedule = new OneTimeScheduleDefinition(DateTime.UtcNow)
            };

            ScheduledTaskEventArgs args = Helpers.WaitForEvent <ScheduledTaskEventArgs>(this.Timeout,
                                                                                        handler => this.Repository.Added += handler,
                                                                                        () => this.Repository.Add(scheduledTask));

            Assert.AreEqual(scheduledTask.Id, args.ScheduledTaskId);
        }
Esempio n. 4
0
        private void OnScheduledTimeReached(object sender, ScheduledTaskEventArgs e)
        {
            if (Alarms.Count <= 0)
            {
                return;
            }

            foreach (Alarm alarm in Alarms)
            {
                if (alarm.AlarmGuid == e.Guid)
                {
                    Logger.Log($"ALARM >>> {alarm.AlarmMessage}");
                    if (alarm.ShouldUseTTS)
                    {
                        Task.Run(async() => await TTSService.SpeakText($"Sir, {alarm.AlarmMessage}", true).ConfigureAwait(false));
                    }

                    Helpers.InBackgroundThread(async() => await PlayAlarmSound(alarm.AlarmGuid).ConfigureAwait(false));
                    alarm.IsCompleted = true;

                    if (!alarm.ShouldRepeat)
                    {
                        foreach (SchedulerConfig task in Core.Scheduler.Configs)
                        {
                            if (task.Guid == e.Guid)
                            {
                                if (task.SchedulerTimer != null)
                                {
                                    task.SchedulerTimer.Dispose();
                                }
                            }
                        }
                    }

                    return;
                }
            }
        }
        private void OnScheduledTaskUpdated(object sender, ScheduledTaskEventArgs e)
        {
            IScheduledTask scheduledTask = this.repository.ScheduledTasks.GetById(e.ScheduledTaskId);

            if (scheduledTask == null)
            {
                this.RemoveScheduledTask(e.ScheduledTaskId);

                return;
            }

            if (this.scheduledTasks.ContainsKey(e.ScheduledTaskId))
            {
                if (!this.CalculateNextExecutionTime(scheduledTask))
                {
                    this.RemoveScheduledTask(scheduledTask.Id);
                }
            }
            else
            {
                this.AddScheduledTask(scheduledTask);
            }
        }
 private void OnScheduledTaskDeleted(object sender, ScheduledTaskEventArgs e)
 {
     this.RemoveScheduledTask(e.ScheduledTaskId);
 }
Esempio n. 7
0
        private void OnScheduledTimeReached(object sender, ScheduledTaskEventArgs e)
        {
            if (Alarms.Count <= 0)
            {
                return;
            }

            if (sender == null || e == null)
            {
                return;
            }

            AlarmConfig?configToRemove = new AlarmConfig();

            foreach (KeyValuePair <AlarmConfig, SchedulerConfig> alarmConfig in Alarms)
            {
                if (alarmConfig.Key == null || alarmConfig.Value == null)
                {
                    continue;
                }

                if (alarmConfig.Value.Guid != null && alarmConfig.Value.Guid.Equals(e.Guid))
                {
                    Logger.Log($"ALARM >>> {alarmConfig.Key.AlarmMessage}");

                    if (alarmConfig.Key.ShouldUseTTS)
                    {
                        Task.Run(async() => await TTS.SpeakText($"Sir, {alarmConfig.Key.AlarmMessage}", true).ConfigureAwait(false));
                    }

                    if (alarmConfig.Key.AlarmGuid != null)
                    {
                        Helpers.InBackgroundThread(async() => await PlayAlarmSound(alarmConfig.Key.AlarmGuid).ConfigureAwait(false));
                    }

                    if (alarmConfig.Key.ShouldRepeat && !alarmConfig.Key.Snooze)
                    {
                        alarmConfig.Key.Scheduler = null;
                        alarmConfig.Key.Scheduler = new Scheduler();
                        if (e.SchedulerConfig != null)
                        {
                            SchedulerConfig config = new SchedulerConfig()
                            {
                                Guid           = e.Guid,
                                ScheduledSpan  = e.SchedulerConfig.RepeatInterval,
                                RepeatInterval = e.SchedulerConfig.RepeatInterval
                            };

                            config.SchedulerObjects.Add(alarmConfig.Key);
                            alarmConfig.Key.Scheduler.SetScheduler(config);
                            alarmConfig.Key.Scheduler.ScheduledTimeReached += OnScheduledTimeReached;
                            Logger.Log($"Alarm will repeat exactly after {e.SchedulerConfig.RepeatInterval.Hours} from now.");
                        }
                    }
                    else
                    {
                        configToRemove = alarmConfig.Key;
                    }
                }
            }

            if (configToRemove != null)
            {
                Alarms.Remove(configToRemove);
            }
        }
Esempio n. 8
0
 private void SchedulerTaskStartedHandler(object sender, ScheduledTaskEventArgs e)
 {
     this.OnTaskStarted(e);
 }
        private void JobManagerTaskStartedHandler(object sender, ScheduledTaskEventArgs e)
        {
            this.WriteLog("Task Started: {0}", e.Task.Name);

            this.SetIcon();
        }