Exemple #1
0
        public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user)
        {
            var recursiveItemCount = 0;
            var unplayed = 0;

            double totalPercentPlayed = 0;

            IEnumerable<BaseItem> children;
            var folder = this;

            var season = folder as Season;

            if (season != null)
            {
                children = season.GetEpisodes(user).Where(i => i.LocationType != LocationType.Virtual);
            }
            else
            {
                children = folder.GetRecursiveChildren(user)
                    .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual);
            }

            // Loop through each recursive child
            foreach (var child in children)
            {
                recursiveItemCount++;

                var isUnplayed = true;

                var itemUserData = UserDataManager.GetUserData(user.Id, child.GetUserDataKey());

                // Incrememt totalPercentPlayed
                if (itemUserData != null)
                {
                    if (itemUserData.Played)
                    {
                        totalPercentPlayed += 100;

                        isUnplayed = false;
                    }
                    else if (itemUserData.PlaybackPositionTicks > 0 && child.RunTimeTicks.HasValue && child.RunTimeTicks.Value > 0)
                    {
                        double itemPercent = itemUserData.PlaybackPositionTicks;
                        itemPercent /= child.RunTimeTicks.Value;
                        totalPercentPlayed += itemPercent;
                    }
                }

                if (isUnplayed)
                {
                    unplayed++;
                }
            }

            dto.UnplayedItemCount = unplayed;

            if (recursiveItemCount > 0)
            {
                dto.PlayedPercentage = totalPercentPlayed / recursiveItemCount;
                dto.Played = dto.PlayedPercentage.Value >= 100;
            }
        }
Exemple #2
0
        public override async Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user)
        {
            if (!SupportsUserDataFromChildren)
            {
                return;
            }

            var unplayedQueryResult = await GetItems(new InternalItemsQuery(user)
            {
                Recursive = true,
                IsFolder = false,
                IsVirtualItem = false,
                EnableTotalRecordCount = true,
                Limit = 0,
                IsPlayed = false

            }).ConfigureAwait(false);

            var allItemsQueryResult = await GetItems(new InternalItemsQuery(user)
            {
                Recursive = true,
                IsFolder = false,
                IsVirtualItem = false,
                EnableTotalRecordCount = true,
                Limit = 0

            }).ConfigureAwait(false);

            if (itemDto != null)
            {
                itemDto.RecursiveItemCount = allItemsQueryResult.TotalRecordCount;
            }

            var recursiveItemCount = allItemsQueryResult.TotalRecordCount;
            double unplayedCount = unplayedQueryResult.TotalRecordCount;

            if (recursiveItemCount > 0)
            {
                var unplayedPercentage = (unplayedCount / recursiveItemCount) * 100;
                dto.PlayedPercentage = 100 - unplayedPercentage;
                dto.Played = dto.PlayedPercentage.Value >= 100;
                dto.UnplayedItemCount = unplayedQueryResult.TotalRecordCount;
            }

            if (itemDto != null)
            {
                if (this is Season || this is MusicAlbum)
                {
                    itemDto.ChildCount = recursiveItemCount;
                }
            }
        }
Exemple #3
0
        public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user)
        {
            if (!SupportsUserDataFromChildren)
            {
                return;
            }

            var recursiveItemCount = 0;
            var unplayed = 0;

            double totalPercentPlayed = 0;

            var itemsResult = GetItems(new InternalItemsQuery(user)
            {
                Recursive = true,
                IsFolder = false,
                ExcludeLocationTypes = new[] { LocationType.Virtual }

            }).Result;

            var children = itemsResult.Items;

            // Loop through each recursive child
            foreach (var child in children)
            {
                recursiveItemCount++;

                var isUnplayed = true;

                var itemUserData = UserDataManager.GetUserData(user, child);

                // Incrememt totalPercentPlayed
                if (itemUserData != null)
                {
                    if (itemUserData.Played)
                    {
                        totalPercentPlayed += 100;

                        isUnplayed = false;
                    }
                    else if (itemUserData.PlaybackPositionTicks > 0 && child.RunTimeTicks.HasValue && child.RunTimeTicks.Value > 0)
                    {
                        double itemPercent = itemUserData.PlaybackPositionTicks;
                        itemPercent /= child.RunTimeTicks.Value;
                        totalPercentPlayed += itemPercent;
                    }
                }

                if (isUnplayed)
                {
                    unplayed++;
                }
            }

            dto.UnplayedItemCount = unplayed;

            if (recursiveItemCount > 0)
            {
                dto.PlayedPercentage = totalPercentPlayed / recursiveItemCount;
                dto.Played = dto.PlayedPercentage.Value >= 100;
            }
        }
 public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user)
 {
     // Nothing meaninful here and will only waste resources
 }