public static async Task ScheduleAsync(SharedData shared, DatabaseContextBuilder dbb, DiscordClient client, SavedTaskInfo task)
        {
            SavedTaskExecutor texec = null;

            try {
                using (DatabaseContext db = dbb.CreateContext()) {
                    if (task is SendMessageTaskInfo)
                    {
                        var dbtask = DatabaseReminder.FromSavedTaskInfo(task);
                        db.Reminders.Add(dbtask);
                        await db.SaveChangesAsync();

                        texec = new SavedTaskExecutor(dbtask.Id, client, task, shared, dbb);
                    }
                    else
                    {
                        var dbtask = DatabaseSavedTask.FromSavedTaskInfo(task);
                        db.SavedTasks.Add(dbtask);
                        await db.SaveChangesAsync();

                        texec = new SavedTaskExecutor(dbtask.Id, client, task, shared, dbb);
                    }
                }
                texec.Schedule();
            } catch (Exception e) {
                await texec?.UnscheduleAsync();

                shared.LogProvider.Log(LogLevel.Warning, e);
                throw;
            }
        }
Example #2
0
        public static async Task ScheduleAsync(SharedData shared, DBService db, IDiscordClient client, SavedTaskInfo task)
        {
            SavedTaskExecutor texec = null;

            try {
                int id = await db.AddSavedTaskAsync(task);

                texec = new SavedTaskExecutor(id, client, task, shared, db);
                texec.Schedule();
            } catch (Exception e) {
                await texec?.UnscheduleAsync();

                shared.LogProvider.LogException(LogLevel.Warning, e);
                throw;
            }
        }