public StatisticsTracker() { this.StartTime = DateTimeOffset.Now; ChannelSession.Constellation.OnFollowOccurred += Constellation_OnFollowOccurred; ChannelSession.Constellation.OnUnfollowOccurred += Constellation_OnUnfollowOccurred; ChannelSession.Constellation.OnHostedOccurred += Constellation_OnHostedOccurred; ChannelSession.Constellation.OnSubscribedOccurred += Constellation_OnSubscribedOccurred; ChannelSession.Constellation.OnResubscribedOccurred += Constellation_OnResubscribedOccurred; ChannelSession.Interactive.OnInteractiveControlUsed += Interactive_OnInteractiveControlUsed; GlobalEvents.OnDonationOccurred += GlobalEvents_OnDonationOccurred; this.Statistics = new List <StatisticDataTrackerBase>(); this.Statistics.Add(new TrackedNumberStatisticDataTracker("Viewers", "Eye", (StatisticDataTrackerBase stats) => { TrackedNumberStatisticDataTracker numberStats = (TrackedNumberStatisticDataTracker)stats; int viewersCurrent = 0; if (ChannelSession.Channel != null) { viewersCurrent = (int)ChannelSession.Channel.viewersCurrent; } numberStats.AddValue(viewersCurrent); return(Task.FromResult(0)); })); this.Statistics.Add(new TrackedNumberStatisticDataTracker("Chatters", "MessageTextOutline", async(StatisticDataTrackerBase stats) => { TrackedNumberStatisticDataTracker numberStats = (TrackedNumberStatisticDataTracker)stats; numberStats.AddValue(await ChannelSession.ActiveUsers.Count()); })); this.Statistics.Add(this.followTracker); this.Statistics.Add(this.unfollowTracker); this.Statistics.Add(this.hostsTracker); this.Statistics.Add(this.subscriberTracker); this.Statistics.Add(this.resubscriberTracker); this.Statistics.Add(this.interactiveTracker); this.Statistics.Add(this.donationsTracker); }
public StatisticsTracker() { this.StartTime = DateTimeOffset.Now; GlobalEvents.OnFollowOccurred += Constellation_OnFollowOccurred; GlobalEvents.OnUnfollowOccurred += Constellation_OnUnfollowOccurred; GlobalEvents.OnHostOccurred += Constellation_OnHostedOccurred; GlobalEvents.OnSubscribeOccurred += Constellation_OnSubscribedOccurred; GlobalEvents.OnResubscribeOccurred += Constellation_OnResubscribedOccurred; GlobalEvents.OnSubscriptionGiftedOccurred += GlobalEvents_OnSubscriptionGiftedOccurred; ChannelSession.Interactive.OnInteractiveControlUsed += Interactive_OnInteractiveControlUsed; GlobalEvents.OnDonationOccurred += GlobalEvents_OnDonationOccurred; GlobalEvents.OnSparkUseOccurred += GlobalEvents_OnSparkUseOccurred; GlobalEvents.OnEmberUseOccurred += GlobalEvents_OnEmberUseOccurred; this.Statistics = new List <StatisticDataTrackerBase>(); this.Statistics.Add(new TrackedNumberStatisticDataTracker("Viewers", "Eye", true, (StatisticDataTrackerBase stats) => { TrackedNumberStatisticDataTracker numberStats = (TrackedNumberStatisticDataTracker)stats; int viewersCurrent = 0; if (ChannelSession.Channel != null) { viewersCurrent = (int)ChannelSession.Channel.viewersCurrent; } numberStats.AddValue(viewersCurrent); return(Task.FromResult(0)); })); this.Statistics.Add(new TrackedNumberStatisticDataTracker("Chatters", "MessageTextOutline", true, async(StatisticDataTrackerBase stats) => { TrackedNumberStatisticDataTracker numberStats = (TrackedNumberStatisticDataTracker)stats; numberStats.AddValue(await ChannelSession.ActiveUsers.Count()); })); this.Statistics.Add(this.followTracker); this.Statistics.Add(this.unfollowTracker); this.Statistics.Add(this.hostsTracker); this.Statistics.Add(this.subscriberTracker); this.Statistics.Add(this.resubscriberTracker); this.Statistics.Add(this.giftedSubscriptionsTracker); this.Statistics.Add(this.interactiveTracker); this.Statistics.Add(this.sparksTracker); this.Statistics.Add(new StaticTextStatisticDataTracker("Milestones", "Diamond", true, async(StatisticDataTrackerBase stats) => { StaticTextStatisticDataTracker staticStats = (StaticTextStatisticDataTracker)stats; staticStats.ClearValues(); if (ChannelSession.Connection != null && ChannelSession.Channel != null) { PatronageStatusModel patronageStatus = await ChannelSession.Connection.GetPatronageStatus(ChannelSession.Channel); if (patronageStatus != null) { PatronagePeriodModel patronagePeriod = await ChannelSession.Connection.GetPatronagePeriod(patronageStatus); if (patronagePeriod != null) { IEnumerable <PatronageMilestoneModel> patronageMilestones = patronagePeriod.milestoneGroups.SelectMany(mg => mg.milestones); IEnumerable <PatronageMilestoneModel> patronageMilestonesEarned = patronageMilestones.Where(m => m.target <= patronageStatus.patronageEarned); if (patronageMilestonesEarned.Count() > 0) { PatronageMilestoneModel patronageMilestoneHighestEarned = patronageMilestonesEarned.OrderByDescending(m => m.bonus).FirstOrDefault(); if (patronageMilestoneHighestEarned != null) { staticStats.AddValue("Milestone #", patronageStatus.currentMilestoneId.ToString()); staticStats.AddValue("Total Sparks", patronageStatus.patronageEarned.ToString()); staticStats.AddValue("Total Boost", patronageMilestoneHighestEarned.PercentageAmountText()); return; } } } } } staticStats.AddValue("Milestone #", "0"); staticStats.AddValue("Total Sparks", "0"); staticStats.AddValue("Total Boost", "0%"); })); this.Statistics.Add(this.embersTracker); this.Statistics.Add(this.donationsTracker); }