public IServiceProvider BuildServiceProvider() { var logger = new LogService(_discordClient); var dbService = new AnspiritDatabaseService(logger); return(new ServiceCollection() .AddSingleton(_discordClient) .AddSingleton(_commands) .AddSingleton(logger) .AddSingleton <AnspiritSheetsService>() .AddSingleton <AnzacSpiritService>() .AddSingleton(dbService) .BuildServiceProvider()); }
public static async Task <IEnumerable <Embed> > GetOfficerNotesEmbedsAsync(IUser user, AnspiritDatabaseService dbService, string category = null) { var notes = dbService.GetOfficerNotes(user.Id); if (category != null) { var categoryID = await dbService.GetOfficerNotesCategoryIDFromNameAsync(category); notes = notes.Where(x => x.CategoryID == categoryID); } var membersRole = GetUserGuildRole(user); var embedColor = membersRole == null ? Color.Green : membersRole.Color; var stringBuilder = new StringBuilder(); foreach (var note in notes) { var formattedDate = note.DateTimeEntry.ToString("dd/MM/yyyy"); string categoryName; try { categoryName = await dbService.GetOfficerNotesCategoryNameFromIDAsync(note.CategoryID); } catch { categoryName = "<Not Found>"; } stringBuilder.Append($"**{categoryName} | {formattedDate}**{Environment.NewLine}{note.Comments}"); stringBuilder.Append(Environment.NewLine); if (note.Comments.Length > 56 || note.Comments.Contains(Environment.NewLine)) { stringBuilder.Append(Environment.NewLine); } } var embedDescriptions = DiscordMessageUtilities.GetSendableMessages(stringBuilder.ToString()); var output = new List <Embed>(); for (int i = 0; i < embedDescriptions.Length; i++) { var embedBuilder = new EmbedBuilder { Title = i == 0 ? $"Officer Notes for {user.Username}" : null, Timestamp = DateTime.Now, Color = embedColor, Description = embedDescriptions[i] }; output.Add(embedBuilder.Build()); } return(output); }