Exemple #1
0
 public ActionResult Index(string sort, string content)
 {
     if (content != "news" && content != "tips" && content != "recipes")
     {
         content = "news";
     }
     var vm = new SortResultViewModel
                  {
                      NewsNotFound = true,
                      TipNotFound = true,
                      RecipeNotFound = true
                  }
         ;
     // Criteria object to pass to repository
     var criteria = new SortCriteria();
     criteria.OrderBy = Sort.GetSortKey(sort);
     criteria.Content = content;
     var feedback1 = _newsRepository.SortNews(criteria, 5);
     var feedback2 = _tipRepository.SortTips(criteria, 5);
     var feedback3 = _recipeRepository.SortRecipes(criteria, 5);
     if (feedback1.Success && feedback2.Success)
     {
         vm.News = feedback1.News;
         vm.Tips = feedback2.Tips;
         vm.Recipes = feedback3.Recipes;
         vm.OrderBy = criteria.OrderBy;
         vm.Content = criteria.Content;
         vm.NewsNotFound = vm.News.Count == 0;
         vm.TipNotFound = vm.Tips.Count == 0;
         vm.RecipeNotFound = vm.Recipes.Count == 0;
     }
     return View(vm);
 }
        public ActionResult Index(SortCriteria? sortCriteria, LogState? logState)
        {
            var result = new SortedLogModel();
                
            if (sortCriteria != null)
            {
                result.SortCriteria = (SortCriteria) sortCriteria;
            }

            if (logState != null)
            {
                result.CurrentState = logState;
            }
            result.Sort(facade.GetLogGateway((LoggedInModel)Session["LoginModel"]).GetAll());
            return View(result);
        }
        public static PreguntaFormularioModelCollection GetPreguntas(FormularioModel formulario)
        {
            //Query subSupQuery = new Query();
            //subSupQuery.Distinct = true;
            //subSupQuery.Select("pf.idPregunta");
            //subSupQuery.From("PreguntaFormulario", "pf");
            //subSupQuery.Where(new AttributeTest("pf.idFormulario", idFormulario, AttributeTest.EQUAL));

            //AttributeTest filterTest = new AttributeTest();
            //filterTest.Attribute = "idPregunta";
            //filterTest.Value = subSupQuery;
            //filterTest.Operator = AttributeTest.IN;

            //SortCriteria sort = new SortCriteria();
            //sort.Add("idPregunta", (int)SortOrderType.Ascending);

            //Query filterQuery = new Query();
            //filterQuery.Where(filterTest);
            //filterQuery.SortCriteria = sort;

            // Pregunta.FindWithQuery(filterQuery)

            AttributeTest filterTest = new AttributeTest();
            filterTest.Attribute = "idFormulario";
            filterTest.Value = formulario.IdFormulario;
            filterTest.Operator = AttributeTest.EQUAL;

            SortCriteria sort = new SortCriteria();
            sort.Add("idPregunta", (int)SortOrderType.Ascending);

            Query filterQuery = new Query();
            filterQuery.Where(filterTest);
            filterQuery.SortCriteria = sort;

            return new PreguntaFormularioModelCollection(PreguntaFormulario.FindWithQuery(filterQuery));
        }
        /// <summary>
        /// Gets the contacts.
        /// </summary>
        /// <param name="contactId">The contact identifier.</param>
        /// <param name="media">The media.</param>
        /// <param name="tenantId">The tenant identifier.</param>
        /// <returns></returns>
        public static OutputValues GetContacts(SearchCriteriaCollection searchCriteriaCollection, string contactID, int tenantId, int pagemaxSize, List <string> attributesNames)
        {
            Pointel.Logger.Core.ILog logger = Pointel.Logger.Core.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "AID");
            OutputValues             output = OutputValues.GetInstance();

            try
            {
                RequestGetInteractionsForContact requestGetContacts = RequestGetInteractionsForContact.Create();
                requestGetContacts.DataSource   = new NullableDataSourceType(DataSourceType.Main);
                requestGetContacts.SortCriteria = new SortCriteriaCollection();
                SortCriteriaCollection sortCC = new SortCriteriaCollection();
                SortCriteria           sortc  = new SortCriteria()
                {
                    AttrName = InteractionSearchCriteriaConstants.StartDate, SortOperator = new NullableSortMode(SortMode.Descending), SortIndex = 0
                };
                sortCC.Add(sortc);
                requestGetContacts.SortCriteria   = sortCC;
                requestGetContacts.SearchCriteria = searchCriteriaCollection;
                StringList stringList = new StringList();
                if (attributesNames != null && attributesNames.Count > 0)
                {
                    for (int index = 0; index < attributesNames.Count; index++)
                    {
                        stringList.Add(attributesNames[index]);
                    }
                }
                requestGetContacts.AttributeList = stringList;
                requestGetContacts.TenantId      = tenantId;
                requestGetContacts.ContactId     = contactID;
                if (Settings.UCSProtocol != null && Settings.UCSProtocol.State == ChannelState.Opened)
                {
                    logger.Info("---------------------------------------------------------");
                    IMessage message = Settings.UCSProtocol.Request(requestGetContacts);
                    if (message != null)
                    {
                        logger.Trace(message.ToString());
                        output.IContactMessage = message;
                        output.MessageCode     = "200";
                        output.Message         = "Get Interactions For Contact Successful";
                    }
                    else
                    {
                        output.IContactMessage = null;
                        output.MessageCode     = "2001";
                        output.Message         = "Don't Get Interactions For Contact Successful";
                    }
                }
                else
                {
                    output.IContactMessage = null;
                    output.MessageCode     = "2001";
                    output.Message         = "Universal Contact Server protocol is Null or Closed";
                    logger.Warn("GetContacts() : Universal Contact Server protocol is Null..");
                }
            }
            catch (Exception generalException)
            {
                logger.Error("Error Occurred while Get Interactions For Contact request" + generalException.ToString());
                output.IContactMessage = null;
                output.MessageCode     = "2001";
                output.Message         = generalException.Message;
            }
            return(output);
        }
Exemple #5
0
        private IEnumerable <KeyValuePair <string, string> > HandleSearch(IDictionary <string, string> sparams, User user, string deviceId)
        {
            var searchCriteria = new SearchCriteria(GetValueOrDefault(sparams, "SearchCriteria", ""));
            var sortCriteria   = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));
            var filter         = new Filter(GetValueOrDefault(sparams, "Filter", "*"));

            // sort example: dc:title, dc:date

            // Default to null instead of 0
            // Upnp inspector sends 0 as requestedCount when it wants everything
            int?requestedCount = null;
            int?start          = 0;

            int requestedVal;

            if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out requestedVal) && requestedVal > 0)
            {
                requestedCount = requestedVal;
            }

            int startVal;

            if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out startVal) && startVal > 0)
            {
                start = startVal;
            }

            var settings = new XmlWriterSettings
            {
                Encoding           = Encoding.UTF8,
                CloseOutput        = false,
                OmitXmlDeclaration = true,
                ConformanceLevel   = ConformanceLevel.Fragment
            };

            StringWriter builder    = new StringWriterWithEncoding(Encoding.UTF8);
            int          totalCount = 0;
            int          provided   = 0;

            using (XmlWriter writer = XmlWriter.Create(builder, settings))
            {
                //writer.WriteStartDocument();

                writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);

                writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
                writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
                writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
                //didl.SetAttribute("xmlns:sec", NS_SEC);

                DidlBuilder.WriteXmlRootAttributes(_profile, writer);

                var serverItem = GetItemFromObjectId(sparams["ContainerID"], user);

                var item = serverItem.Item;

                var childrenResult = (GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount));

                totalCount = childrenResult.TotalRecordCount;

                provided = childrenResult.Items.Length;

                foreach (var i in childrenResult.Items)
                {
                    if (i.IsDisplayedAsFolder)
                    {
                        var childCount = (GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0))
                                         .TotalRecordCount;

                        _didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
                    }
                    else
                    {
                        _didlBuilder.WriteItemElement(_config.GetDlnaConfiguration(), writer, i, user, item, serverItem.StubType, deviceId, filter);
                    }
                }

                writer.WriteFullEndElement();
                //writer.WriteEndDocument();
            }

            var resXML = builder.ToString();

            return(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Result", resXML),
                new KeyValuePair <string, string>("NumberReturned", provided.ToString(_usCulture)),
                new KeyValuePair <string, string>("TotalMatches", totalCount.ToString(_usCulture)),
                new KeyValuePair <string, string>("UpdateID", _systemUpdateId.ToString(_usCulture))
            });
        }
        private async Task <QueryResult <ServerItem> > GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (stubType.HasValue)
            {
                if (stubType.Value == StubType.People)
                {
                    var items = item.People.Select(i =>
                    {
                        try
                        {
                            return(_libraryManager.GetPerson(i.Name));
                        }
                        catch
                        {
                            return(null);
                        }
                    }).Where(i => i != null).ToArray();

                    var result = new QueryResult <ServerItem>
                    {
                        Items = items.Select(i => new ServerItem {
                            Item = i, StubType = StubType.Folder
                        }).ToArray(),
                        TotalRecordCount = items.Length
                    };

                    return(ApplyPaging(result, startIndex, limit));
                }
                if (stubType.Value == StubType.Folder)
                {
                    var movie = item as Movie;
                    if (movie != null)
                    {
                        return(ApplyPaging(await GetMovieItems(movie).ConfigureAwait(false), startIndex, limit));
                    }
                }

                var person = item as Person;
                if (person != null)
                {
                    return(await GetItemsFromPerson(person, user, startIndex, limit).ConfigureAwait(false));
                }

                return(ApplyPaging(new QueryResult <ServerItem>(), startIndex, limit));
            }

            var folder = (Folder)item;

            var sortOrders = new List <string>();

            if (!folder.IsPreSorted)
            {
                sortOrders.Add(ItemSortBy.SortName);
            }

            var queryResult = await folder.GetItems(new InternalItemsQuery
            {
                Limit      = limit,
                StartIndex = startIndex,
                SortBy     = sortOrders.ToArray(),
                SortOrder  = sort.SortOrder,
                User       = user,
                Filter     = FilterUnsupportedContent
            }).ConfigureAwait(false);

            var options = _config.GetDlnaConfiguration();

            var serverItems = queryResult
                              .Items
                              .Select(i => new ServerItem
            {
                Item     = i,
                StubType = GetDisplayStubType(i, item, options)
            })
                              .ToArray();

            return(new QueryResult <ServerItem>
            {
                TotalRecordCount = queryResult.TotalRecordCount,
                Items = serverItems
            });
        }
Exemple #7
0
 public SearchBuilder SetSortBy(SortCriteria sortby)
 {
     _searchParameters.SortBy = sortby;
     return(this);
 }
        public ActionResult ManageTips(GridCommand gridCommand)
        {
            ListTipsViewModel vm = new ListTipsViewModel();

            // Create PageInfo
            PageInfo pageInfo;
            var page = Request.QueryString["Tips-page"];
            pageInfo = page == null ? new PageInfo(AppConfigs.DefaultAdminGridPageSize, 1) : new PageInfo(AppConfigs.DefaultAdminGridPageSize, int.Parse(page));

            SortCriteria criteria = new SortCriteria();
            criteria.PageInfo = pageInfo;

            var feedback = _tipRepository.GetAllTip(criteria);

            //Set default value for Total record
            ViewData["Total"] = 0;

            if (feedback.Success)
            {
                vm.Tips = feedback.Tips;
                ViewData["Total"] = feedback.Total;
            }
            else
            {
                SetMessage(feedback.Message, MessageType.Error);
            }

            return View(vm);
        }
        private async Task <IEnumerable <KeyValuePair <string, string> > > HandleSearch(Headers sparams, User user, string deviceId)
        {
            var searchCriteria = new SearchCriteria(sparams.GetValueOrDefault("SearchCriteria", ""));
            var sortCriteria   = new SortCriteria(sparams.GetValueOrDefault("SortCriteria", ""));
            var filter         = new Filter(sparams.GetValueOrDefault("Filter", "*"));

            // sort example: dc:title, dc:date

            // Default to null instead of 0
            // Upnp inspector sends 0 as requestedCount when it wants everything
            int?requestedCount = null;
            int?start          = 0;

            int requestedVal;

            if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out requestedVal) && requestedVal > 0)
            {
                requestedCount = requestedVal;
            }

            int startVal;

            if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out startVal) && startVal > 0)
            {
                start = startVal;
            }

            //var root = GetItem(id) as IMediaFolder;
            var result = new XmlDocument();

            var didl = result.CreateElement(string.Empty, "DIDL-Lite", NS_DIDL);

            didl.SetAttribute("xmlns:dc", NS_DC);
            didl.SetAttribute("xmlns:dlna", NS_DLNA);
            didl.SetAttribute("xmlns:upnp", NS_UPNP);

            foreach (var att in _profile.XmlRootAttributes)
            {
                didl.SetAttribute(att.Name, att.Value);
            }

            result.AppendChild(didl);

            var serverItem = GetItemFromObjectId(sparams["ContainerID"], user);

            var item = serverItem.Item;

            var childrenResult = (await GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount).ConfigureAwait(false));

            var totalCount = childrenResult.TotalRecordCount;

            var provided = childrenResult.Items.Length;

            foreach (var i in childrenResult.Items)
            {
                if (i.IsFolder)
                {
                    var childCount = (await GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0).ConfigureAwait(false))
                                     .TotalRecordCount;

                    result.DocumentElement.AppendChild(_didlBuilder.GetFolderElement(result, i, null, item, childCount, filter));
                }
                else
                {
                    result.DocumentElement.AppendChild(_didlBuilder.GetItemElement(result, i, item, serverItem.StubType, deviceId, filter));
                }
            }

            var resXML = result.OuterXml;

            return(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Result", resXML),
                new KeyValuePair <string, string>("NumberReturned", provided.ToString(_usCulture)),
                new KeyValuePair <string, string>("TotalMatches", totalCount.ToString(_usCulture)),
                new KeyValuePair <string, string>("UpdateID", _systemUpdateId.ToString(_usCulture))
            });
        }
Exemple #10
0
 protected override TabItem <SortCriteria> CreateTabItem(SortCriteria value) => new BeatmapSortTabItem(value)
 {
     SortDirection = { BindTarget = SortDirection }
 };
Exemple #11
0
 /// <summary>
 /// Constructor for the class
 /// </summary>
 public DataSourceInfo()
 {
     sortCriteria = new SortCriteria();
 }
        public async Task <PagedResponse <List <Employee> > > GetAll(PaginationFilter filter, SortCriteria criteria)
        {
            var result = await appDbContext.Employees
                         .OrderByDynamic(criteria.SortField, criteria.SortOrder.ToUpper())
                         .Skip((filter.PageNumber - 1) * filter.PageSize)
                         .Take(filter.PageSize)
                         .Include(d => d.Department)
                         .ToListAsync();

            var totalRecords = await appDbContext.Employees.CountAsync();

            var pagedResponse = new PagedResponse <List <Employee> >(result, totalRecords, filter.PageNumber, filter.PageSize);

            return(pagedResponse);
        }
Exemple #13
0
        private async Task <QueryResult <ServerItem> > GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (stubType.HasValue)
            {
                if (stubType.Value == StubType.People)
                {
                    var items = _libraryManager.GetPeopleItems(new InternalPeopleQuery
                    {
                        ItemId = item.Id
                    }).ToArray();

                    var result = new QueryResult <ServerItem>
                    {
                        Items = items.Select(i => new ServerItem {
                            Item = i, StubType = StubType.Folder
                        }).ToArray(),
                        TotalRecordCount = items.Length
                    };

                    return(ApplyPaging(result, startIndex, limit));
                }
                if (stubType.Value == StubType.Folder)
                {
                    var movie = item as Movie;
                    if (movie != null)
                    {
                        return(ApplyPaging(await GetMovieItems(movie).ConfigureAwait(false), startIndex, limit));
                    }
                }

                var person = item as Person;
                if (person != null)
                {
                    return(GetItemsFromPerson(person, user, startIndex, limit));
                }

                return(ApplyPaging(new QueryResult <ServerItem>(), startIndex, limit));
            }

            var folder = (Folder)item;

            var sortOrders = new List <string>();

            if (!folder.IsPreSorted)
            {
                sortOrders.Add(ItemSortBy.SortName);
            }

            var queryResult = await folder.GetItems(new InternalItemsQuery
            {
                Limit            = limit,
                StartIndex       = startIndex,
                SortBy           = sortOrders.ToArray(),
                SortOrder        = sort.SortOrder,
                User             = user,
                IsMissing        = false,
                PresetViews      = new[] { CollectionType.Movies, CollectionType.TvShows, CollectionType.Music },
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
                IsPlaceHolder    = false
            }).ConfigureAwait(false);

            var options = _config.GetDlnaConfiguration();

            var serverItems = queryResult
                              .Items
                              .Select(i => new ServerItem
            {
                Item     = i,
                StubType = GetDisplayStubType(i, item, options)
            })
                              .ToArray();

            return(new QueryResult <ServerItem>
            {
                TotalRecordCount = queryResult.TotalRecordCount,
                Items = serverItems
            });
        }
Exemple #14
0
 private SortCriteria criteria;                       //критерий сортировки
 public EmployeeSortByCriteria(SortCriteria criteria) //конструктор с критерием сортировки
 {
     this.criteria = criteria;
 }
Exemple #15
0
 public SortOrder(SortCriteria sortingtype)
 {
     this.SortingOrder = sortingtype;
 }
 public SortedLogModel()
 {
     SortCriteria = SortCriteria.Both;
 }
Exemple #17
0
        private QueryResult <ServerItem> GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (item is MusicGenre)
            {
                return(GetMusicGenreItems(item, null, user, sort, startIndex, limit));
            }

            if (item is MusicArtist)
            {
                return(GetMusicArtistItems(item, null, user, sort, startIndex, limit));
            }

            var collectionFolder = item as ICollectionFolder;

            if (collectionFolder != null && string.Equals(CollectionType.Music, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
            {
                return(GetMusicFolders(item, user, stubType, sort, startIndex, limit));
            }
            if (collectionFolder != null && string.Equals(CollectionType.Movies, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
            {
                return(GetMovieFolders(item, user, stubType, sort, startIndex, limit));
            }
            if (collectionFolder != null && string.Equals(CollectionType.TvShows, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
            {
                return(GetTvFolders(item, user, stubType, sort, startIndex, limit));
            }

            if (stubType.HasValue)
            {
                if (stubType.Value == StubType.People)
                {
                    var items = _libraryManager.GetPeopleItems(new InternalPeopleQuery
                    {
                        ItemId = item.Id
                    });

                    var result = new QueryResult <ServerItem>
                    {
                        Items            = items.Select(i => new ServerItem(i)).ToArray(items.Count),
                        TotalRecordCount = items.Count
                    };

                    return(ApplyPaging(result, startIndex, limit));
                }

                var person = item as Person;
                if (person != null)
                {
                    return(GetItemsFromPerson(person, user, startIndex, limit));
                }

                return(ApplyPaging(new QueryResult <ServerItem>(), startIndex, limit));
            }

            var folder = (Folder)item;

            var query = new InternalItemsQuery
            {
                Limit            = limit,
                StartIndex       = startIndex,
                User             = user,
                IsVirtualItem    = false,
                PresetViews      = new string[] { },
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
                IsPlaceHolder    = false,
                DtoOptions       = GetDtoOptions()
            };

            SetSorting(query, sort, folder.IsPreSorted);

            var queryResult = folder.GetItems(query);

            return(ToResult(queryResult));
        }
Exemple #18
0
 protected override TabButton CreateTabButton(SortCriteria value) => new BeatmapTabButton(value)
 {
     Active        = { BindTarget = Active },
     SortDirection = { BindTarget = SortDirection }
 };
Exemple #19
0
        private async Task <QueryResult <ServerItem> > GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (item is MusicGenre)
            {
                return(GetMusicGenreItems(item, null, user, sort, startIndex, limit));
            }

            if (item is MusicArtist)
            {
                return(GetMusicArtistItems(item, null, user, sort, startIndex, limit));
            }

            if (stubType.HasValue)
            {
                if (stubType.Value == StubType.People)
                {
                    var items = _libraryManager.GetPeopleItems(new InternalPeopleQuery
                    {
                        ItemId = item.Id
                    }).ToArray();

                    var result = new QueryResult <ServerItem>
                    {
                        Items            = items.Select(i => new ServerItem(i)).ToArray(),
                        TotalRecordCount = items.Length
                    };

                    return(ApplyPaging(result, startIndex, limit));
                }

                var person = item as Person;
                if (person != null)
                {
                    return(GetItemsFromPerson(person, user, startIndex, limit));
                }

                return(ApplyPaging(new QueryResult <ServerItem>(), startIndex, limit));
            }

            var folder = (Folder)item;

            var query = new InternalItemsQuery
            {
                Limit            = limit,
                StartIndex       = startIndex,
                User             = user,
                IsMissing        = false,
                PresetViews      = new[] { CollectionType.Movies, CollectionType.TvShows, CollectionType.Music },
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
                IsPlaceHolder    = false
            };

            SetSorting(query, sort, folder.IsPreSorted);

            var queryResult = await folder.GetItems(query).ConfigureAwait(false);

            return(ToResult(queryResult));
        }
Exemple #20
0
 public ActionResult TipCategoryIndexMore(int id, string sort, int page = 1)
 {
     ListTipViewModel vm = null;
     SortCriteria criteria = new SortCriteria();
     criteria.OrderBy = Sort.GetSortKey(sort);
     criteria.PageInfo = new PageInfo(AppConfigs.TipPageSize, page);
     var feedback = _tipRepository.GetTipByCatogory(id, criteria);
     if (feedback.Success)
     {
         vm = new ListTipViewModel
         {
             TipCategoryName = feedback.TipCategoryName,
             Tips = feedback.Tips,
             Page = criteria.PageInfo.PageNo,
             HasMore = feedback.Total > criteria.PageInfo.PageSize * criteria.PageInfo.PageNo,
             OrderBy = criteria.OrderBy,
             Sort = sort,
             TipCategoryId = id
         };
         return View(vm);
     }
     SetMessage(feedback.Message, MessageType.Error);
     return View(vm);
 }
Exemple #21
0
 public BeatmapSortTabItem(SortCriteria value)
     : base(value)
 {
 }
Exemple #22
0
 /// <summary>
 /// Constructor for the class
 /// </summary>
 public DataSourceInfo()
 {
     sortCriteria = new SortCriteria();
 }
Exemple #23
0
        private async Task <QueryResult <BaseItem> > GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (stubType.HasValue)
            {
                var movie = item as Movie;

                if (movie != null)
                {
                    return(await GetMovieItems(movie).ConfigureAwait(false));
                }
            }

            var folder = (Folder)item;

            var sortOrders = new List <string>();

            if (!folder.IsPreSorted)
            {
                sortOrders.Add(ItemSortBy.SortName);
            }

            return(await folder.GetItems(new InternalItemsQuery
            {
                Limit = limit,
                StartIndex = startIndex,
                SortBy = sortOrders.ToArray(),
                SortOrder = sort.SortOrder,
                User = user,
                Filter = FilterUnsupportedContent
            }).ConfigureAwait(false));
        }
Exemple #24
0
        private QueryResult <ServerItem> GetUserItems(BaseItem item, StubType?stubType, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            if (item is MusicGenre)
            {
                return(GetMusicGenreItems(item, Guid.Empty, user, sort, startIndex, limit));
            }

            if (item is MusicArtist)
            {
                return(GetMusicArtistItems(item, Guid.Empty, user, sort, startIndex, limit));
            }

            if (item is Genre)
            {
                return(GetGenreItems(item, Guid.Empty, user, sort, startIndex, limit));
            }

            if (!stubType.HasValue || stubType.Value != StubType.Folder)
            {
                var collectionFolder = item as IHasCollectionType;
                if (collectionFolder != null && string.Equals(CollectionType.Music, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetMusicFolders(item, user, stubType, sort, startIndex, limit));
                }
                if (collectionFolder != null && string.Equals(CollectionType.Movies, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetMovieFolders(item, user, stubType, sort, startIndex, limit));
                }
                if (collectionFolder != null && string.Equals(CollectionType.TvShows, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetTvFolders(item, user, stubType, sort, startIndex, limit));
                }

                if (collectionFolder != null && string.Equals(CollectionType.Folders, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetFolders(item, user, stubType, sort, startIndex, limit));
                }
                if (collectionFolder != null && string.Equals(CollectionType.LiveTv, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetLiveTvChannels(item, user, stubType, sort, startIndex, limit));
                }
            }

            if (stubType.HasValue)
            {
                if (stubType.Value != StubType.Folder)
                {
                    return(ApplyPaging(new QueryResult <ServerItem>(), startIndex, limit));
                }
            }

            var folder = (Folder)item;

            var query = new InternalItemsQuery(user)
            {
                Limit            = limit,
                StartIndex       = startIndex,
                IsVirtualItem    = false,
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
                IsPlaceHolder    = false,
                DtoOptions       = GetDtoOptions()
            };

            SetSorting(query, sort, folder.IsPreSorted);

            var queryResult = folder.GetItems(query);

            return(ToResult(queryResult));
        }
        private async Task <IEnumerable <KeyValuePair <string, string> > > HandleBrowse(Headers sparams, User user, string deviceId)
        {
            var id           = sparams["ObjectID"];
            var flag         = sparams["BrowseFlag"];
            var filter       = new Filter(sparams.GetValueOrDefault("Filter", "*"));
            var sortCriteria = new SortCriteria(sparams.GetValueOrDefault("SortCriteria", ""));

            var provided = 0;

            // Default to null instead of 0
            // Upnp inspector sends 0 as requestedCount when it wants everything
            int?requestedCount = null;
            int?start          = 0;

            int requestedVal;

            if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out requestedVal) && requestedVal > 0)
            {
                requestedCount = requestedVal;
            }

            int startVal;

            if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out startVal) && startVal > 0)
            {
                start = startVal;
            }

            //var root = GetItem(id) as IMediaFolder;
            var result = new XmlDocument();

            var didl = result.CreateElement(string.Empty, "DIDL-Lite", NS_DIDL);

            didl.SetAttribute("xmlns:dc", NS_DC);
            didl.SetAttribute("xmlns:dlna", NS_DLNA);
            didl.SetAttribute("xmlns:upnp", NS_UPNP);
            //didl.SetAttribute("xmlns:sec", NS_SEC);
            result.AppendChild(didl);

            var serverItem = GetItemFromObjectId(id, user);
            var item       = serverItem.Item;

            int totalCount;

            if (string.Equals(flag, "BrowseMetadata"))
            {
                totalCount = 1;

                if (item.IsFolder || serverItem.StubType.HasValue)
                {
                    var childrenResult = (await GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount).ConfigureAwait(false));

                    result.DocumentElement.AppendChild(_didlBuilder.GetFolderElement(result, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id));
                }
                else
                {
                    result.DocumentElement.AppendChild(_didlBuilder.GetItemElement(result, item, null, null, deviceId, filter));
                }

                provided++;
            }
            else
            {
                var childrenResult = (await GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount).ConfigureAwait(false));
                totalCount = childrenResult.TotalRecordCount;

                provided = childrenResult.Items.Length;

                foreach (var i in childrenResult.Items)
                {
                    var childItem       = i.Item;
                    var displayStubType = i.StubType;

                    if (childItem.IsFolder || displayStubType.HasValue)
                    {
                        var childCount = (await GetUserItems(childItem, displayStubType, user, sortCriteria, null, 0).ConfigureAwait(false))
                                         .TotalRecordCount;

                        result.DocumentElement.AppendChild(_didlBuilder.GetFolderElement(result, childItem, displayStubType, item, childCount, filter));
                    }
                    else
                    {
                        result.DocumentElement.AppendChild(_didlBuilder.GetItemElement(result, childItem, item, serverItem.StubType, deviceId, filter));
                    }
                }
            }

            var resXML = result.OuterXml;

            return(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("Result", resXML),
                new KeyValuePair <string, string>("NumberReturned", provided.ToString(_usCulture)),
                new KeyValuePair <string, string>("TotalMatches", totalCount.ToString(_usCulture)),
                new KeyValuePair <string, string>("UpdateID", _systemUpdateId.ToString(_usCulture))
            });
        }
Exemple #26
0
        private QueryResult <ServerItem> GetLiveTvChannels(BaseItem item, User user, StubType?stubType, SortCriteria sort, int?startIndex, int?limit)
        {
            var query = new InternalItemsQuery(user)
            {
                StartIndex = startIndex,
                Limit      = limit,
            };

            query.IncludeItemTypes = new[] { typeof(LiveTvChannel).Name };

            SetSorting(query, sort, false);

            var result = _libraryManager.GetItemsResult(query);

            return(ToResult(result));
        }
        private Task <QueryResult <BaseItem> > GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int?startIndex, int?limit)
        {
            var folder = (Folder)item;

            var sortOrders = new List <string>();

            if (!folder.IsPreSorted)
            {
                sortOrders.Add(ItemSortBy.SortName);
            }

            var  mediaTypes = new List <string>();
            bool?isFolder   = null;

            if (search.SearchType == SearchType.Audio)
            {
                mediaTypes.Add(MediaType.Audio);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Video)
            {
                mediaTypes.Add(MediaType.Video);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Image)
            {
                mediaTypes.Add(MediaType.Photo);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Playlist)
            {
                //items = items.OfType<Playlist>();
                isFolder = true;
            }
            else if (search.SearchType == SearchType.MusicAlbum)
            {
                //items = items.OfType<MusicAlbum>();
                isFolder = true;
            }

            return(folder.GetItems(new InternalItemsQuery
            {
                Limit = limit,
                StartIndex = startIndex,
                SortBy = sortOrders.ToArray(),
                SortOrder = sort.SortOrder,
                User = user,
                Recursive = true,
                Filter = FilterUnsupportedContent,
                IsFolder = isFolder,
                MediaTypes = mediaTypes.ToArray()
            }));
        }
Exemple #28
0
        private QueryResult <ServerItem> GetFolders(BaseItem item, User user, StubType?stubType, SortCriteria sort, int?startIndex, int?limit)
        {
            var folders = _libraryManager.GetUserRootFolder().GetChildren(user, true)
                          .OrderBy(i => i.SortName)
                          .Select(i => new ServerItem(i)
            {
                StubType = StubType.Folder
            })
                          .ToArray();

            return(new QueryResult <ServerItem>
            {
                Items = folders,
                TotalRecordCount = folders.Length
            });
        }
Exemple #29
0
 public DuckComparer(SortCriteria sortCriterion)
 {
     SortCriterion = sortCriterion;
 }
Exemple #30
0
        private QueryResult <ServerItem> GetTvFolders(BaseItem item, User user, StubType?stubType, SortCriteria sort, int?startIndex, int?limit)
        {
            var query = new InternalItemsQuery(user)
            {
                StartIndex = startIndex,
                Limit      = limit
            };

            SetSorting(query, sort, false);

            if (stubType.HasValue && stubType.Value == StubType.ContinueWatching)
            {
                return(GetMovieContinueWatching(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.NextUp)
            {
                return(GetNextUp(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Latest)
            {
                return(GetTvLatest(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Series)
            {
                return(GetSeries(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.FavoriteSeries)
            {
                return(GetFavoriteSeries(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.FavoriteEpisodes)
            {
                return(GetFavoriteEpisodes(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Genres)
            {
                return(GetGenres(item, user, query));
            }

            var list = new List <ServerItem>();

            list.Add(new ServerItem(item)
            {
                StubType = StubType.ContinueWatching
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.NextUp
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Latest
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Series
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.FavoriteSeries
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.FavoriteEpisodes
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Genres
            });

            return(new QueryResult <ServerItem>
            {
                Items = list.ToArray(),
                TotalRecordCount = list.Count
            });
        }
Exemple #31
0
 public Matrix SortMatrix(Matrix matrix, SortCriteria SortBy)
 {
     if (SortBy == SortCriteria.RowSum)
     {
     }
 }
Exemple #32
0
        private void CardsSort()
        {
            SortCriteria criterium = (SortCriteria)sortCardsComboBox.SelectedIndex;

            GameController.Sort(criterium);
        }
Exemple #33
0
        private QueryResult <ServerItem> GetMusicGenreItems(BaseItem item, Guid?parentId, User user, SortCriteria sort, int?startIndex, int?limit)
        {
            var query = new InternalItemsQuery(user)
            {
                Recursive        = true,
                ParentId         = parentId,
                GenreIds         = new[] { item.Id.ToString("N") },
                IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
                Limit            = limit,
                StartIndex       = startIndex,
                DtoOptions       = GetDtoOptions()
            };

            SetSorting(query, sort, false);

            var result = _libraryManager.GetItemsResult(query);

            return(ToResult(result));
        }
        private void HandleBrowse(XmlWriter xmlWriter, IDictionary <string, string> sparams, string deviceId)
        {
            var id           = sparams["ObjectID"];
            var flag         = sparams["BrowseFlag"];
            var filter       = new Filter(GetValueOrDefault(sparams, "Filter", "*"));
            var sortCriteria = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));

            var provided = 0;

            // Default to null instead of 0
            // Upnp inspector sends 0 as requestedCount when it wants everything
            int?requestedCount = null;
            int?start          = 0;

            if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out var requestedVal) && requestedVal > 0)
            {
                requestedCount = requestedVal;
            }

            if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out var startVal) && startVal > 0)
            {
                start = startVal;
            }

            int totalCount;

            using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
            {
                var settings = new XmlWriterSettings()
                {
                    Encoding           = Encoding.UTF8,
                    CloseOutput        = false,
                    OmitXmlDeclaration = true,
                    ConformanceLevel   = ConformanceLevel.Fragment
                };

                using (var writer = XmlWriter.Create(builder, settings))
                {
                    writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);

                    writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
                    writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
                    writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);

                    DidlBuilder.WriteXmlRootAttributes(_profile, writer);

                    var serverItem = GetItemFromObjectId(id);
                    var item       = serverItem.Item;


                    if (string.Equals(flag, "BrowseMetadata", StringComparison.Ordinal))
                    {
                        totalCount = 1;

                        if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
                        {
                            var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);

                            _didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
                        }
                        else
                        {
                            var dlnaOptions = _config.GetDlnaConfiguration();
                            _didlBuilder.WriteItemElement(writer, item, _user, null, null, deviceId, filter);
                        }

                        provided++;
                    }
                    else
                    {
                        var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
                        totalCount = childrenResult.TotalRecordCount;

                        provided = childrenResult.Items.Count;

                        var dlnaOptions = _config.GetDlnaConfiguration();
                        foreach (var i in childrenResult.Items)
                        {
                            var childItem       = i.Item;
                            var displayStubType = i.StubType;

                            if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
                            {
                                var childCount = GetUserItems(childItem, displayStubType, _user, sortCriteria, null, 0)
                                                 .TotalRecordCount;

                                _didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
                            }
                            else
                            {
                                _didlBuilder.WriteItemElement(writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
                            }
                        }
                    }

                    writer.WriteFullEndElement();
                }

                xmlWriter.WriteElementString("Result", builder.ToString());
            }

            xmlWriter.WriteElementString("NumberReturned", provided.ToString(CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("TotalMatches", totalCount.ToString(CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
        }
Exemple #35
0
        private QueryResult <BaseItem> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int?startIndex, int?limit)
        {
            var folder = (Folder)item;

            var sortOrders = new List <string>();

            if (!folder.IsPreSorted)
            {
                sortOrders.Add(ItemSortBy.SortName);
            }

            var  mediaTypes = new List <string>();
            bool?isFolder   = null;

            if (search.SearchType == SearchType.Audio)
            {
                mediaTypes.Add(MediaType.Audio);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Video)
            {
                mediaTypes.Add(MediaType.Video);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Image)
            {
                mediaTypes.Add(MediaType.Photo);
                isFolder = false;
            }
            else if (search.SearchType == SearchType.Playlist)
            {
                //items = items.OfType<Playlist>();
                isFolder = true;
            }
            else if (search.SearchType == SearchType.MusicAlbum)
            {
                //items = items.OfType<MusicAlbum>();
                isFolder = true;
            }

            return(folder.GetItems(new InternalItemsQuery
            {
                Limit = limit,
                StartIndex = startIndex,
                SortBy = sortOrders.ToArray(sortOrders.Count),
                SortOrder = sort.SortOrder,
                User = user,
                Recursive = true,
                IsMissing = false,
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
                IsFolder = isFolder,
                MediaTypes = mediaTypes.ToArray(mediaTypes.Count),
                DtoOptions = GetDtoOptions()
            }));
        }
        private void HandleSearch(XmlWriter xmlWriter, IDictionary <string, string> sparams, string deviceId)
        {
            var searchCriteria = new SearchCriteria(GetValueOrDefault(sparams, "SearchCriteria", ""));
            var sortCriteria   = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));
            var filter         = new Filter(GetValueOrDefault(sparams, "Filter", "*"));

            // sort example: dc:title, dc:date

            // Default to null instead of 0
            // Upnp inspector sends 0 as requestedCount when it wants everything
            int?requestedCount = null;
            int?start          = 0;

            if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out var requestedVal) && requestedVal > 0)
            {
                requestedCount = requestedVal;
            }

            if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out var startVal) && startVal > 0)
            {
                start = startVal;
            }

            QueryResult <BaseItem> childrenResult;

            using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
            {
                var settings = new XmlWriterSettings()
                {
                    Encoding           = Encoding.UTF8,
                    CloseOutput        = false,
                    OmitXmlDeclaration = true,
                    ConformanceLevel   = ConformanceLevel.Fragment
                };

                using (var writer = XmlWriter.Create(builder, settings))
                {
                    writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);

                    writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
                    writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
                    writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);

                    DidlBuilder.WriteXmlRootAttributes(_profile, writer);

                    var serverItem = GetItemFromObjectId(sparams["ContainerID"]);

                    var item = serverItem.Item;

                    childrenResult = GetChildrenSorted(item, _user, searchCriteria, sortCriteria, start, requestedCount);

                    var dlnaOptions = _config.GetDlnaConfiguration();

                    foreach (var i in childrenResult.Items)
                    {
                        if (i.IsDisplayedAsFolder)
                        {
                            var childCount = GetChildrenSorted(i, _user, searchCriteria, sortCriteria, null, 0)
                                             .TotalRecordCount;

                            _didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
                        }
                        else
                        {
                            _didlBuilder.WriteItemElement(writer, i, _user, item, serverItem.StubType, deviceId, filter);
                        }
                    }

                    writer.WriteFullEndElement();
                }

                xmlWriter.WriteElementString("Result", builder.ToString());
            }

            xmlWriter.WriteElementString("NumberReturned", childrenResult.Items.Count.ToString(CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("TotalMatches", childrenResult.TotalRecordCount.ToString(CultureInfo.InvariantCulture));
            xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
        }
Exemple #37
0
        private QueryResult <ServerItem> GetMusicFolders(BaseItem item, User user, StubType?stubType, SortCriteria sort, int?startIndex, int?limit)
        {
            var query = new InternalItemsQuery(user)
            {
                StartIndex = startIndex,
                Limit      = limit
            };

            SetSorting(query, sort, false);

            if (stubType.HasValue && stubType.Value == StubType.Latest)
            {
                return(GetMusicLatest(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Playlists)
            {
                return(GetMusicPlaylists(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Albums)
            {
                return(GetMusicAlbums(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Artists)
            {
                return(GetMusicArtists(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.AlbumArtists)
            {
                return(GetMusicAlbumArtists(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.FavoriteAlbums)
            {
                return(GetFavoriteAlbums(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.FavoriteArtists)
            {
                return(GetFavoriteArtists(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.FavoriteSongs)
            {
                return(GetFavoriteSongs(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Songs)
            {
                return(GetMusicSongs(item, user, query));
            }

            if (stubType.HasValue && stubType.Value == StubType.Genres)
            {
                return(GetMusicGenres(item, user, query));
            }

            var list = new List <ServerItem>();

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Latest
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Playlists
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Albums
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.AlbumArtists
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Artists
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Songs
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.Genres
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.FavoriteArtists
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.FavoriteAlbums
            });

            list.Add(new ServerItem(item)
            {
                StubType = StubType.FavoriteSongs
            });

            return(new QueryResult <ServerItem>
            {
                Items = list.ToArray(list.Count),
                TotalRecordCount = list.Count
            });
        }
        private QueryResult <BaseItem> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int?startIndex, int?limit)
        {
            var folder = (Folder)item;

            var sortOrders = folder.IsPreSorted
                ? Array.Empty <(string, SortOrder)>()
                : new[] { (ItemSortBy.SortName, sort.SortOrder) };