예제 #1
0
        public async Task <bool> AddReminderAsync(Reminder reminder)
        {
            if (reminder.Time < DateTime.Now)
            {
                return(false);
            }

            using var scope = serviceProvider.CreateScope();
            var context = scope.ServiceProvider.GetRequiredService <BullyBotDbContext>();

            await context.Reminders.AddAsync(reminder);

            await context.SaveChangesAsync();


            scheduler.ScheduleTask(reminder.Time, reminder.Id.ToString(), async(s) => await ReminderCallbackAsync(reminder));

            return(true);
        }
예제 #2
0
        // private Process CreateStream(string path)
        // {
        //     return Process.Start(new ProcessStartInfo
        //     {
        //         FileName = "ffmpeg",
        //         Arguments = $"-hide_banner -loglevel panic -i \"{path}\" -ac 2 -f s16le -ar 48000 pipe:1",
        //         UseShellExecute = false,
        //         RedirectStandardOutput = true,
        //     });
        // }


        //DO NOT schedule a recurring task, simply because Wednesday is a half day. gonna have to manually reschedule the alarms each day at, say 6 am?
        private void RescheduleAlarms(ScheduledTask task)
        {
            SchoolSchedule currentSchedule = GetCurrentSchedule();

            //treat as a day off from school.  GetCurrentSchedule will return null on weekends (no school)
            if (currentSchedule == null)
            {
                return;
            }

            foreach (var period in GetCurrentSchedule().Periods)
            {
                if (scheduler.TaskIsScheduled(period.PeriodName) || period.GetStartTime() - DateTime.Now < TimeSpan.Zero)
                {
                    continue;
                }

                scheduler.ScheduleTask(period.GetStartTime(), period.PeriodName, HandleTaskExecuted);
            }
        }