public async Task Template() { var config = _epgpConfigurationService.GetConfiguration(); if (!config.Templates.Any()) { await ReplyAsync($"No raid templates are currently configured. Try !{GroupName} help"); return; } var pageBuilder = new PageFormatBuilder() .AddColumn("Template ID") .AddColumn("EP Start Bonus") .AddColumn("EP End Bonus") .AddColumn("Duration") .AlternateRowColors(); foreach (var template in config.Templates) { pageBuilder.AddRow(new[] { template.TemplateId, $"{template.StartBonus} EP", $"{template.EndBonus} EP", TimeSpan.FromMinutes(template.RaidDurationMinutes).ToString("g") }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task PrintTemplateInfo(string templateId) { var template = await GetTemplate(templateId); if (template == null) { await ReplyAsync("No template by that name could be found"); return; } var kvps = _templateConfigurationService.GetPropertyData(template); var pageBuilder = new PageFormatBuilder() .AddColumn("Property Key") .AddColumn("Property Name") .AddColumn("Current Value") .AlternateRowColors(); pageBuilder.AddRow(new[] { "N/A", "Template Name", template.Id }); foreach (var kvp in kvps) { pageBuilder.AddRow(new[] { kvp.Key.ToString(), kvp.Name, kvp.Value.ToString() }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task Configuration() { var config = _epgpConfigurationService.GetConfiguration(); var pageBuilder = new PageFormatBuilder() .AddColumn("Configuration Property Key") .AddColumn("Property Name") .AddColumn("Value") .AlternateRowColors(); var properties = config.GetType().GetProperties() .Where(pi => Attribute.IsDefined(pi, typeof(ConfigurationKeyAttribute))); foreach (var propertyInfo in properties) { var key = propertyInfo.GetCustomAttribute <ConfigurationKeyAttribute>().Key; var name = propertyInfo.Name; var value = propertyInfo.GetValue(config); string valueString = string.Empty; if (((int)value).ToString() != value.ToString()) { valueString = $" ({value.ToString()})"; } pageBuilder.AddRow(new[] { key.ToString(), name, $"{(int)value}{valueString}" }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task Template(string templateId) { EpgpRaidTemplate template; try { template = _epgpConfigurationService.GetTemplate(templateId); } catch (ArgumentException ex) { await ReplyAsync(ex.Message); return; } var pageBuilder = new PageFormatBuilder() .AddColumn("Configuration Property Key") .AddColumn("Property Name") .AddColumn("Value") .AlternateRowColors() .AddRow(new[] { "N/A", nameof(EpgpRaidTemplate.TemplateId), template.TemplateId }); var properties = template.GetType().GetProperties() .Where(pi => Attribute.IsDefined(pi, typeof(ConfigurationKeyAttribute))); foreach (var propertyInfo in properties) { var key = propertyInfo.GetCustomAttribute <ConfigurationKeyAttribute>().Key; var name = propertyInfo.Name; var value = propertyInfo.GetValue(template); pageBuilder.AddRow(new[] { key.ToString(), name, value.ToString() }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
private async Task Report(IMessageChannel messageChannel, IEnumerable <EpgpAlias> aliases) { var formatBuilder = new PageFormatBuilder() .AlternateRowColors() .AddColumn("Member") .AddColumn("EP") .AddColumn("GP") .AddColumn("PR"); //var header = $"{Header}\n{HorizontalRule}"; //var formattedAliases = new List<string>(); //var alternate = false; foreach (var alias in aliases) { formatBuilder.AddRow(new[] { alias.Name, alias.EffortPoints.ToString(), alias.GearPoints.ToString(), ((double)alias.EffortPoints / alias.GearPoints).ToString("F2") }); } await _pageService.SendPages(messageChannel, formatBuilder.Build()); }
public async Task PrintConfig() { var config = await AddOrGetRaidTemplate(); var configPropertyData = _templateConfigurationService.GetPropertyData(config).ToList().OrderBy(pi => pi.Key); var pageBuilder = new PageFormatBuilder() .AddColumn("Property Key") .AddColumn("Property Name") .AddColumn("Current Value") .AlternateRowColors(); foreach (var kvp in configPropertyData) { var valueString = kvp.Value.ToString(); if (kvp.Key == typeof(RecurringRaidTemplate) .GetProperty(nameof(RecurringRaidTemplate.ResetDayOfWeek)) .GetCustomAttribute <ConfigurationKeyAttribute>().Key) { valueString = $"{kvp.Value} ({((DayOfWeek) kvp.Value)})"; } pageBuilder.AddRow(new[] { kvp.Key.ToString(), kvp.Name, valueString }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task Characters(IGuildUser user) { List <EpgpAlias> aliases; await using (var dbContext = new BuzzBotDbContext(_configuration)) { var guildUser = dbContext.GuildUsers.Include(gu => gu.Aliases).FirstOrDefault(usr => usr.Id == user.Id); if (guildUser == null) { await ReplyAsync("No record of that user exists."); return; } aliases = guildUser.Aliases; if (!aliases.Any()) { await ReplyAsync("No aliases found for that user."); return; } if (!aliases.Any(a => a.IsActive)) { var primary = aliases.FirstOrDefault(a => a.IsPrimary); if (primary != null) { primary.IsActive = true; } await dbContext.SaveChangesAsync(); } } var pageBuilder = new PageFormatBuilder() .AddColumn("Alias") .AddColumn("Is Primary?") .AddColumn("Is Active?") .AddColumn("EP") .AddColumn("GP") .AddColumn("PR"); foreach (var alias in aliases) { pageBuilder.AddRow(new[] { alias.Name, alias.IsPrimary ? "Yes" : "No", alias.IsActive ? "Yes" : "No", alias.EffortPoints.ToString(), alias.GearPoints.ToString(), ((double)alias.EffortPoints / alias.GearPoints).ToString("F2") }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task PrintLootHistory(IMessageChannel channel, EpgpAlias alias, bool asAdmin) { alias = _dbContext.Aliases .Include(a => a.AwardedItems) .ThenInclude(ri => ri.Transaction) .Include(a => a.AwardedItems) .ThenInclude(ri => ri.Item) .Include(a => a.AwardedItems) .ThenInclude(ri => ri.Raid) .FirstOrDefault(a => a.Id == alias.Id); if (alias == null) { await channel.SendMessageAsync("Unable to locate record of that user in the database."); return; } if (!alias.AwardedItems.Any()) { await channel.SendMessageAsync("There are no records of items being awarded to that user."); return; } var pageBuilder = new PageFormatBuilder() .AlternateRowColors() .AddColumn("Item Name:") .AddColumn("Raid") .AddColumn("Time (UTC)") .AddColumn("GP"); if (asAdmin) { pageBuilder.AddHiddenColumn("Transaction ID"); } foreach (var raidItem in alias.AwardedItems.OrderByDescending(ai => ai.Transaction.TransactionDateTime)) { var row = new List <string>() { raidItem.Item.Name, raidItem.Raid.Name, raidItem.Transaction.TransactionDateTime.ToString("g"), raidItem.Transaction.Value.ToString() }; if (asAdmin) { row.Add(raidItem.TransactionId.ToString("N")); } pageBuilder.AddRow(row.ToArray()); } await _pageService.SendPages(channel, pageBuilder.Build()); }
public async Task PrintItemHistory(IMessageChannel channel, Item item, bool asAdmin = false) { item = _dbContext.Items .Include(itm => itm.RaidItems).ThenInclude(ri => ri.AwardedAlias) .Include(itm => itm.RaidItems).ThenInclude(ri => ri.Transaction) .Include(itm => itm.RaidItems).ThenInclude(ri => ri.Raid) .FirstOrDefault(itm => itm.Id == item.Id); if (item == null) { await channel.SendMessageAsync("No item could be found."); return; } if (!item.RaidItems.Any()) { await channel.SendMessageAsync("No record of that item being awarded could be found"); return; } var pageBuilder = new PageFormatBuilder(); pageBuilder.AlternateRowColors() .AddColumn("Awarded User") .AddColumn("Raid") .AddColumn("Time (UTC)"); if (asAdmin) { pageBuilder.AddHiddenColumn("Transaction ID"); } foreach (var raidItem in item.RaidItems) { var row = new List <string>(); row.AddRange(new [] { raidItem.AwardedAlias.Name, raidItem.Raid.Name, raidItem.Transaction.TransactionDateTime.ToString("g") }); if (asAdmin) { row.Add(raidItem.Transaction.Id.ToString("N")); } pageBuilder.AddRow(row.ToArray()); } await _pageService.SendPages(channel, pageBuilder.Build()); }
public async Task TestPagination() { var pageBuilder = new PageFormatBuilder() .AddColumn("Col1") .AddColumn("Col2") .AddColumn("Col3") .AddHiddenColumn("HiddenCol1") .AlternateRowColors(); for (var i = 0; i < 50; i++) { pageBuilder.AddRow(new[] { $"Col1:Row{i}", $"Col2:Row{i}", $"Col3:Row{i}", $"HiddenCol1:Row{i}", }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task GetTransactions(int reportCount) { var transactions = _dbContext.EpgpTransactions.Include(t => t.Alias) .OrderByDescending(t => t.TransactionDateTime).Take(reportCount).ToList(); var pageBuilder1 = new PageFormatBuilder() .AlternateRowColors() .AddColumn("Time (UTC)") .AddColumn("Alias") .AddColumn("Currency") .AddColumn("Value") .AddColumn("Memo"); var pageBuilder2 = new PageFormatBuilder() .AlternateRowColors() .AddColumn("Time (UTC)") .AddColumn("Alias") .AddColumn("Currency") .AddColumn("Value") .AddColumn("ID"); foreach (var epgpTransaction in transactions) { pageBuilder1.AddRow(new[] { epgpTransaction.TransactionDateTime.ToString("g"), epgpTransaction.Alias.Name, epgpTransaction.TransactionType.GetAttributeOfType <CurrencyAttribute>().Currency.ToString(), epgpTransaction.Value.ToString(), epgpTransaction.Memo }); pageBuilder2.AddRow(new[] { epgpTransaction.TransactionDateTime.ToString("g"), epgpTransaction.Alias.Name, epgpTransaction.TransactionType.GetAttributeOfType <CurrencyAttribute>().Currency.ToString(), epgpTransaction.Value.ToString(), epgpTransaction.Id.ToString("N") }); } var format1 = pageBuilder1.Build(); var format2 = pageBuilder2.Build(); format1.HasHiddenColumns = true; format1.RevealedPageFormat = format2; await _pageService.SendPages(await GetUserChannel(), format1); }
public async Task All() { var characters = _bankService.GetBankCharacters(); var pageBuilder = new PageFormatBuilder(); pageBuilder.AddColumn("Item Name") .AddColumn("Quantity") .AddColumn("Bank Character") .AlternateRowColors(); var itemData = new List <ItemData>(); foreach (var character in characters) { foreach (var bag in character.Bags) { foreach (var bagSlot in bag.BagSlots) { var item = itemData.FirstOrDefault(itm => itm.Name == bagSlot.Item?.Name && itm.Character == character.Name); if (item == null) { item = new ItemData { Character = character.Name, Quantity = 0, Name = bagSlot.Item?.Name }; itemData.Add(item); } item.Quantity += bagSlot.Quantity; } } } foreach (var data in itemData.OrderBy(itm => itm.Name)) { pageBuilder.AddRow(new[] { data.Name, data.Quantity.ToString(), data.Character }); } var format = pageBuilder.Build(); await _pageService.SendPages(await GetUserChannel(), $"{format.HeaderLine}\n{format.HorizontalRule}", format.ContentLines.ToArray()); }
public async Task PrintTemplates() { var templates = await _recurringRaidTemplateRepository.GetAsync((qry, _) => qry.Include(tmp => tmp.SoftResTemplate).Where(tmp => tmp.ServerId == Context.Guild.Id)); var pageBuilder = new PageFormatBuilder() .AddColumn("Template Name") .AddColumn("Instance") .AddColumn("Allowed Reserves") .AlternateRowColors(); foreach (var template in templates) { pageBuilder.AddRow(new[] { template.SoftResTemplate.Id, template.SoftResTemplate.Instance, template.SoftResTemplate.ReserveAmounts.ToString() }); } await _pageService.SendPages(Context.Channel, pageBuilder.Build()); }
public async Task Audit(string aliasId, IMessageChannel messageChannel, bool isAdmin = false) { var transactions = _dbContext.Aliases.Include(a => a.Transactions).FirstOrDefault(a => a.Name == aliasId)? .Transactions.OrderByDescending(t => t.TransactionDateTime).ToList(); //var transactions = _epgpRepository.GetTransactions(aliasId).OrderByDescending(t => t.TransactionDateTime).ToList(); var builder1 = new PageFormatBuilder() .AddColumn("Time (UTC)") .AddColumn("Type") .AddColumn("Currency") .AddColumn("Amount") .AddColumn("Memo") .AlternateRowColors(); var builder2 = new PageFormatBuilder() .AddColumn("Time (UTC)") .AddColumn("Type") .AddColumn("Currency") .AddColumn("Amount") .AddColumn("ID") .AlternateRowColors(); if (transactions == null) { transactions = new List <EpgpTransaction>(); } var rows = new List <string>(); if (!transactions.Any()) { rows.AddRange(new[] { "", "", "", "", "" }); builder1.AddRow(rows.ToArray()); builder2.AddRow(rows.ToArray()); } foreach (var transaction in transactions) { var rows1 = new List <string>(); var rows2 = new List <string>(); var memoToPrint = transaction.Memo; var currency = transaction.TransactionType.ToString().Contains("EP", StringComparison.CurrentCultureIgnoreCase) ? "EP" : "GP"; if (transaction.Memo.Length > 28) { memoToPrint = $"{transaction.Memo.Substring(0, 25)}..."; } rows1.AddRange(new[] { $"{transaction.TransactionDateTime.ToShortDateString()}:{transaction.TransactionDateTime.ToShortTimeString()}", $"{transaction.TransactionType}", $"{currency}", transaction.Value.ToString() }); rows2.AddRange(new[] { $"{transaction.TransactionDateTime.ToShortDateString()}:{transaction.TransactionDateTime.ToShortTimeString()}", $"{transaction.TransactionType}", $"{currency}", transaction.Value.ToString() }); rows1.Add(memoToPrint); rows2.Add(transaction.Id.ToString("N")); builder1.AddRow(rows1.ToArray()); builder2.AddRow(rows2.ToArray()); } var format = builder1.Build(); if (isAdmin) { format.HasHiddenColumns = true; format.RevealedPageFormat = builder2.Build(); } await _pageService.SendPages(messageChannel, format); }