Beispiel #1
0
        private async void FindChannelToRaidButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            await this.Window.RunAsyncOperation(async() =>
            {
                if (this.ChannelToRaidSearchCriteriaComboBox.SelectedIndex < 0)
                {
                    await MessageBoxHelper.ShowMessageDialog("Must select a search criteria for finding a channel to raid");
                    return;
                }

                await ChannelSession.RefreshChannel();

                IEnumerable <ChannelModel> channels   = null;
                RaidSearchCriteriaEnum searchCriteria = EnumHelper.GetEnumValueFromString <RaidSearchCriteriaEnum>((string)this.ChannelToRaidSearchCriteriaComboBox.SelectedItem);
                if (searchCriteria == RaidSearchCriteriaEnum.SameGame)
                {
                    channels = await ChannelSession.Connection.GetChannelsByGameTypes(ChannelSession.Channel.type, 1);
                }
                else
                {
                    channels = await ChannelSession.Connection.GetChannels(500);
                    switch (searchCriteria)
                    {
                    case RaidSearchCriteriaEnum.AgeRating:
                        channels = channels.Where(c => c.audience.Equals(ChannelSession.Channel.audience));
                        break;

                    case RaidSearchCriteriaEnum.LargeStreamer:
                        channels = channels.Where(c => c.viewersCurrent >= 25);
                        break;

                    case RaidSearchCriteriaEnum.MediumStreamer:
                        channels = channels.Where(c => c.viewersCurrent >= 10 && c.viewersCurrent < 25);
                        break;

                    case RaidSearchCriteriaEnum.SmallStreamer:
                        channels = channels.Where(c => c.viewersCurrent < 10);
                        break;

                    case RaidSearchCriteriaEnum.PartneredStreamer:
                        channels = channels.Where(c => c.partnered);
                        break;
                    }
                }

                this.ChannelRaidNameTextBox.Clear();
                if (channels != null && channels.Count() > 0)
                {
                    Random random = new Random();
                    ChannelModel channelToRaid = channels.ElementAt(random.Next(0, channels.Count()));

                    UserModel user = await ChannelSession.Connection.GetUser(channelToRaid.userId);
                    this.ChannelRaidNameTextBox.Text = user.username;
                }
                else
                {
                    await MessageBoxHelper.ShowMessageDialog("Unable to find a channel that met your search critera, please try selecting a different option");
                }
            });
        }
        private async void FindChannelToRaidButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            await this.Window.RunAsyncOperation(async() =>
            {
                if (this.ChannelToRaidSearchCriteriaComboBox.SelectedIndex < 0)
                {
                    await MessageBoxHelper.ShowMessageDialog("Must select a search criteria for finding a channel to raid");
                    return;
                }

                await ChannelSession.RefreshChannel();

                IEnumerable <ChannelModel> channels   = null;
                RaidSearchCriteriaEnum searchCriteria = EnumHelper.GetEnumValueFromString <RaidSearchCriteriaEnum>((string)this.ChannelToRaidSearchCriteriaComboBox.SelectedItem);
                if (searchCriteria == RaidSearchCriteriaEnum.SameGame)
                {
                    channels = await ChannelSession.Connection.GetChannelsByGameTypes(ChannelSession.Channel.type, 1);
                }
                else if (searchCriteria == RaidSearchCriteriaEnum.SameTeam)
                {
                    Dictionary <uint, UserWithChannelModel> teamChannels = new Dictionary <uint, UserWithChannelModel>();
                    foreach (TeamMembershipExpandedModel extendedTeam in await ChannelSession.Connection.GetUserTeams(ChannelSession.User))
                    {
                        TeamModel team = await ChannelSession.Connection.GetTeam(extendedTeam.id);
                        IEnumerable <UserWithChannelModel> teamUsers = await ChannelSession.Connection.GetTeamUsers(team);
                        foreach (UserWithChannelModel userChannel in teamUsers.Where(u => u.channel.online))
                        {
                            teamChannels[userChannel.id] = userChannel;
                        }
                    }
                    channels = teamChannels.Values.Select(c => c.channel);
                }
                else
                {
                    string query = "channels";
                    if (searchCriteria == RaidSearchCriteriaEnum.AgeRating)
                    {
                        query += "?where=audience:eq:" + ChannelSession.Channel.audience;
                    }
                    else if (searchCriteria == RaidSearchCriteriaEnum.LargeStreamer)
                    {
                        query += "?where=viewersCurrent:gte:25";
                    }
                    else if (searchCriteria == RaidSearchCriteriaEnum.MediumStreamer)
                    {
                        query += "?where=viewersCurrent:gte:10,viewersCurrent:lt:25";
                    }
                    else if (searchCriteria == RaidSearchCriteriaEnum.SmallStreamer)
                    {
                        query += "?where=viewersCurrent:gt:0,viewersCurrent:lt:10";
                    }
                    else if (searchCriteria == RaidSearchCriteriaEnum.PartneredStreamer)
                    {
                        query += "?where=partnered:eq:true";
                    }
                    channels = await ChannelSession.Connection.Connection.Channels.GetPagedNumberAsync <ChannelModel>(query, 50, linkPagesAvailable: false);
                }

                this.ChannelRaidNameTextBox.Clear();
                if (channels != null && channels.Count() > 0)
                {
                    this.channelToRaid = channels.ElementAt(RandomHelper.GenerateRandomNumber(channels.Count()));

                    UserModel user     = await ChannelSession.Connection.GetUser(this.channelToRaid.userId);
                    GameTypeModel game = await ChannelSession.Connection.GetGameType(this.channelToRaid.typeId.GetValueOrDefault());

                    this.ChannelRaidNameTextBox.Text     = user.username;
                    this.ChannelRaidViewersTextBox.Text  = this.channelToRaid.viewersCurrent.ToString();
                    this.ChannelRaidAudienceTextBox.Text = EnumHelper.GetEnumName(EnumHelper.GetEnumValueFromString <AgeRatingEnum>(this.channelToRaid.audience));
                    this.ChannelRaidGameTextBox.Text     = (game != null) ? game.name : "Unknown";
                }
                else
                {
                    await MessageBoxHelper.ShowMessageDialog("Unable to find a channel that met your search critera, please try selecting a different option");
                }
            });
        }