Пример #1
0
 public SavedTaskExecutor(int id, DiscordClient client, SavedTaskInfo task, SharedData data, DatabaseContextBuilder dcb)
 {
     this.Id       = id;
     this.client   = client;
     this.TaskInfo = task;
     this.shared   = data;
     this.dcb      = dcb;
 }
Пример #2
0
        public static async Task ScheduleAsync(SharedData shared, DatabaseContextBuilder dcb, DiscordClient client, SavedTaskInfo task)
        {
            SavedTaskExecutor texec = null;

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

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

                        texec = new SavedTaskExecutor(dbtask.Id, client, task, shared, dcb);
                    }
                }

                texec.Schedule();
            } catch (Exception e)
            {
                await texec?.UnscheduleAsync();

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