public async Task CancelReminderAsync(string reminderId) { var reminders = ReminderService.GetRemindersForUser(Context.User.Id) .Where(reminder => reminder.UserId == Context.Member.Id.RawValue && Context.Guild.Channels.ContainsKey(reminder.ChannelId) && reminder.Id.StartsWith(reminderId, StringComparison.CurrentCultureIgnoreCase) ) .OrderBy(reminder => reminder.TriggerAt) .ToList(); switch (reminders.Count) { case 0: await ReplyAsync(NO_REMINDERS_FOUND); break; case 1: await ReminderService.CancelReminderAsync(DbContext, reminders[0]); await ReplyAsync(REMINDER_DELETED); break; default: await ReplyAsync(MULTIPLE_MATCHING_REMINDERS, reminderId); break; } }
public async Task ListRemindersAsync() { var reminders = ReminderService.GetRemindersForUser(Context.Member.Id) .Where(reminder => reminder.UserId == Context.Member.Id.RawValue && Context.Guild.Channels.ContainsKey(reminder.ChannelId)) .OrderBy(reminder => reminder.TriggerAt) .ToList(); switch (reminders.Count) { case 0: await ReplyAsync(NO_REMINDERS_FOUND); return; case <= BatchSize: var embed = await CreateReminderEmbedAsync(reminders); await ReplyAsync(embed : embed.Build()); return; } var numberOfPages = MathEx.CeilingDivision(reminders.Count, BatchSize); var reminderBatches = reminders.Batch(BatchSize); var pageIndex = 0; var reminderPages = new List <Page>(); foreach (var reminderBatch in reminderBatches) { var reminderEmbedBuilder = await CreateReminderEmbedAsync(reminderBatch); reminderEmbedBuilder.Footer = new LocalEmbedFooterBuilder { Text = $"Page [{++pageIndex}/{numberOfPages}]" }; reminderPages.Add(reminderEmbedBuilder.Build()); } var pageProvider = new DefaultPageProvider(reminderPages); var menu = new PagedMenu(Context.User.Id, pageProvider); await Context.Channel.StartMenuAsync(menu); }
public async Task CreateReminderAsync([Remainder] UserReminder reminder) { await ReminderService.CreateReminderAsync(reminder); await ReplyAsync(REMINDER_CREATED); }