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