/// <summary>
        ///     Gets the weighted total number of badges.
        /// </summary>
        /// <param name="data">The BadgeData.</param>
        /// <returns>Returns the weighted total number of badges.</returns>
        public static int GetWeightedTotalCount(this BadgeData data)
        {
            // fast
            int fastCount = data.TimeBadges[0] * TierOneWeight + data.TimeBadges[1] * TierTwoWeight + data.TimeBadges[2] * TierThreeWeight;
            // streak
            int streakCount = data.StreakBadges[0] * TierOneWeight + data.StreakBadges[1] * TierTwoWeight + data.StreakBadges[2] * TierThreeWeight;
            // amount
            int amountCount = data.AmountBadges[0] * TierOneWeight + data.AmountBadges[1] * TierTwoWeight + data.AmountBadges[2] * TierThreeWeight;

            return(fastCount + streakCount + amountCount);
        }
        /// <summary>
        ///     Gets the total number of badges for a specific tier level.
        /// </summary>
        /// <param name="data">The BadgeData.</param>
        /// <param name="tierLevel">A value between 1 - 3.</param>
        /// <returns>Returns the total count number badges for a specific tier level.</returns>
        public static int GetTotalCount(this BadgeData data, int tierLevel)
        {
            if (tierLevel < 1 || tierLevel > 3)
            {
                throw new ArgumentException($"{nameof(tierLevel)} must be a value between 1 - 3", nameof(data));
            }

            int index = tierLevel - 1;

            return(data.AmountBadges[index] + data.StreakBadges[index] + data.TimeBadges[index]);
        }
 /// <summary>
 ///     Gets the weighted total number of 'time' badges.
 /// </summary>
 /// <param name="data"></param>
 /// <returns>Returns the total number of 'time' badges.</returns>
 public static int GetWeightedTimeTotalCount(this BadgeData data)
 {
     return(data.TimeBadges[0] * TierOneWeight + data.TimeBadges[1] * TierTwoWeight + data.TimeBadges[2] * TierThreeWeight);
 }