public async Task <bool> EndCurrentStoryAsync(IGuild guild) { var dbStory = await _botContext.ServerStories .Where(ss => ss.Server.DiscordGuildId == (long)guild.Id) .Include(ss => ss.ServerStoryParts) .FirstOrDefaultAsync(ss => ss.EndTime < ss.StartTime).ConfigureAwait(false); if (dbStory == null) { return(false); } var parts = await _botContext.ServerStoryParts .Where(ssp => ssp.ServerStory.ServerStoryId == dbStory.ServerStoryId) .ToArrayAsync().ConfigureAwait(false); var story = new Story(MinLength) { Parts = parts.Select(p => p.Part) }; if (!story.AtLeastMinLength()) { return(false); } dbStory.EndTime = DateTime.UtcNow; await _botContext.SaveChangesAsync().ConfigureAwait(false); return(true); }