public SavedTaskExecutor(int id, DiscordClient client, SavedTaskInfo task, SharedData data, DatabaseContextBuilder dbb)
 {
     this.Id       = id;
     this.client   = client;
     this.TaskInfo = task;
     this.shared   = data;
     this.dbb      = dbb;
 }
Exemple #2
0
 public SavedTaskExecutor(int id, IDiscordClient client, SavedTaskInfo task, SharedData data, DBService db)
 {
     this.Id       = id;
     this.client   = client;
     this.TaskInfo = task;
     this.shared   = data;
     this.db       = db;
 }
        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;
            }
        }
Exemple #4
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;
            }
        }