コード例 #1
0
ファイル: BadgeCommands.cs プロジェクト: Dnantz/tpp-core
        public async Task <CommandResult> Badges(CommandContext context)
        {
            (Optional <PkmnSpecies> optionalSpecies, Optional <User> optionalUser) =
                await context.ParseArgs <AnyOrder <Optional <PkmnSpecies>, Optional <User> > >();

            bool isSelf = !optionalUser.IsPresent;
            User user   = isSelf ? context.Message.User : optionalUser.Value;

            if (optionalSpecies.IsPresent)
            {
                PkmnSpecies species   = optionalSpecies.Value;
                long        numBadges = await _badgeRepo.CountByUserAndSpecies(user.Id, species);

                return(new CommandResult
                {
                    Response = numBadges == 0
                        ? isSelf
                            ? $"You have no {species} badges."
                            : $"{user.Name} has no {species} badges."
                        : isSelf
                            ? $"You have {numBadges}x {species} badges."
                            : $"{user.Name} has {numBadges}x {species} badges."
                });
            }
            else
            {
                ImmutableSortedDictionary <PkmnSpecies, int> numBadgesPerSpecies =
                    await _badgeRepo.CountByUserPerSpecies(user.Id);

                if (!numBadgesPerSpecies.Any())
                {
                    return(new CommandResult
                    {
                        Response = isSelf ? "You have no badges." : $"{user.Name} has no badges."
                    });
                }
                IEnumerable <string> badgesFormatted = numBadgesPerSpecies.Select(kvp => $"{kvp.Value}x {kvp.Key}");
                return(new CommandResult
                {
                    Response = isSelf
                        ? $"Your badges: {string.Join(", ", badgesFormatted)}"
                        : $"{user.Name}'s badges: {string.Join(", ", badgesFormatted)}",
                    ResponseTarget = ResponseTarget.WhisperIfLong
                });
            }
        }
コード例 #2
0
ファイル: BadgeRepoTest.cs プロジェクト: Dnantz/tpp-core
        public async Task can_count_per_species_for_one_user()
        {
            IBadgeRepo badgeRepo = CreateBadgeRepo();
            // given
            await badgeRepo.AddBadge("user", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("user", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("1"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("2"), Badge.BadgeSource.Pinball);

            await badgeRepo.AddBadge("userOther", PkmnSpecies.OfId("3"), Badge.BadgeSource.Pinball);

            // when
            ImmutableSortedDictionary <PkmnSpecies, int> result = await badgeRepo.CountByUserPerSpecies("user");

            // then
            ImmutableSortedDictionary <PkmnSpecies, int> expected = new[]