| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using MediaBrowser.Controller;using MediaBrowser.Model.Entities;using MediaBrowser.Model.Users;namespace MediaBrowser.Api{    /// <summary>    /// Contains some helpers for the api    /// </summary>    public static class ApiService    {        public static BaseItem GetItemById(string id)        {            Guid guid = string.IsNullOrEmpty(id) ? Guid.Empty : new Guid(id);            return Kernel.Instance.GetItemById(guid);        }        /// <summary>        /// Takes a BaseItem and returns the actual object that will be serialized by the api        /// </summary>        public static ApiBaseItemWrapper<BaseItem> GetSerializationObject(BaseItem item, bool includeChildren, Guid userId)        {            ApiBaseItemWrapper<BaseItem> wrapper = new ApiBaseItemWrapper<BaseItem>()            {                Item = item,                UserItemData = Kernel.Instance.GetUserItemData(userId, item.Id),                Type = item.GetType().Name,                IsFolder = (item is Folder)            };            if (string.IsNullOrEmpty(item.LogoImagePath))            {                wrapper.ParentLogoItemId = GetParentLogoItemId(item);            }            if (item.BackdropImagePaths == null || !item.BackdropImagePaths.Any())            {                int backdropCount;                wrapper.ParentBackdropItemId = GetParentBackdropItemId(item, out backdropCount);                wrapper.ParentBackdropCount = backdropCount;            }            if (item.Parent != null)            {                wrapper.ParentId = item.Parent.Id;            }            if (includeChildren)            {                var folder = item as Folder;                if (folder != null)                {                    wrapper.Children = Kernel.Instance.GetParentalAllowedChildren(folder, userId).Select(c => GetSerializationObject(c, false, userId));                }            }            return wrapper;        }        private static Guid? GetParentBackdropItemId(BaseItem item, out int backdropCount)        {            backdropCount = 0;            var parent = item.Parent;            while (parent != null)            {                if (parent.BackdropImagePaths != null && parent.BackdropImagePaths.Any())                {                    backdropCount = parent.BackdropImagePaths.Count();                    return parent.Id;                }                parent = parent.Parent;            }            return null;        }        private static Guid? GetParentLogoItemId(BaseItem item)        {            var parent = item.Parent;            while (parent != null)            {                if (!string.IsNullOrEmpty(parent.LogoImagePath))                {                    return parent.Id;                }                parent = parent.Parent;            }            return null;        }    }}
 |