コード例 #1
0
        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);
        }