From 9c456c63c8d29301a36eb3bb5cbb5fa53688e0ee Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sat, 18 Aug 2012 12:27:34 -0400 Subject: Added more IBN api methods --- MediaBrowser.Api/HttpHandlers/PersonHandler.cs | 47 +++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Api/HttpHandlers/PersonHandler.cs') diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index 513840b81e..75cccfac60 100644 --- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -1,14 +1,53 @@ -using MediaBrowser.Common.Net.Handlers; +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; +using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; namespace MediaBrowser.Api.HttpHandlers { - public class PersonHandler : BaseJsonHandler + /// + /// Gets a single Person + /// + public class PersonHandler : BaseJsonHandler> { - protected override Person GetObjectToSerialize() + protected override IBNItem GetObjectToSerialize() { - return Kernel.Instance.ItemController.GetPerson(QueryString["name"]); + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + Guid userId = Guid.Parse(QueryString["userid"]); + User user = Kernel.Instance.Users.First(u => u.Id == userId); + + string name = QueryString["name"]; + + return GetPerson(parent, user, name); + } + + /// + /// Gets a Person + /// + private IBNItem GetPerson(Folder parent, User user, string name) + { + int count = 0; + + // Get all the allowed recursive children + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); + + foreach (var item in allItems) + { + if (item.People != null && item.People.Any(s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase))) + { + count++; + } + } + + // Get the original entity so that we can also supply the PrimaryImagePath + return new IBNItem() + { + Item = Kernel.Instance.ItemController.GetPerson(name), + BaseItemCount = count + }; } } } -- cgit v1.2.3