public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter) { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { throw new NotConnectedException("The MediaLibrary is not connected"); } IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>(); if (!userProfileDataManagement.IsValidUser) { return(new List <FilterValue>()); } IFilter unwatchedFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new EmptyUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT), new RelationalUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT, RelationalOperator.EQ, "0")); IFilter watchedFilter = new RelationalUserDataFilter(userProfileDataManagement.CurrentUser.ProfileId, UserDataKeysKnown.KEY_PLAY_COUNT, RelationalOperator.GT, "0"); int numUnwatchedItems = cd.CountMediaItems(necessaryMIATypeIds, BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, unwatchedFilter), true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); int numWatchedItems = cd.CountMediaItems(necessaryMIATypeIds, BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, watchedFilter), true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); return(new List <FilterValue>(new FilterValue[] { new FilterValue(Consts.RES_VALUE_UNWATCHED, unwatchedFilter, null, numUnwatchedItems, this), new FilterValue(Consts.RES_VALUE_WATCHED, watchedFilter, null, numWatchedItems, this), }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0))); }
public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter) { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { throw new NotConnectedException("The MediaLibrary is not connected"); } IFilter emptyFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new EmptyFilter(ImageAspect.ATTR_WIDTH), new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.EQ, 0), new EmptyFilter(ImageAspect.ATTR_HEIGHT), new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.EQ, 0)); IFilter simpleSmallFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.LT, Consts.SMALL_SIZE_THRESHOLD), new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.LT, Consts.SMALL_SIZE_THRESHOLD)); IFilter smallFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, simpleSmallFilter, new NotFilter(BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.EQ, 0), new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.EQ, 0)))); IFilter bigFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new RelationalFilter(ImageAspect.ATTR_WIDTH, RelationalOperator.GT, Consts.BIG_SIZE_THRESHOLD), new RelationalFilter(ImageAspect.ATTR_HEIGHT, RelationalOperator.GT, Consts.BIG_SIZE_THRESHOLD)); IFilter mediumFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, new NotFilter(simpleSmallFilter), new NotFilter(bigFilter)); int numEmptyItems = cd.CountMediaItems(necessaryMIATypeIds, emptyFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); int numSmallItems = cd.CountMediaItems(necessaryMIATypeIds, smallFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); int numMediumItems = cd.CountMediaItems(necessaryMIATypeIds, mediumFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); int numBigItems = cd.CountMediaItems(necessaryMIATypeIds, bigFilter, true, ShowVirtualSetting.ShowVirtualMedia(necessaryMIATypeIds)); return(new List <FilterValue>(new FilterValue[] { new FilterValue(Consts.RES_VALUE_EMPTY_TITLE, emptyFilter, null, numEmptyItems, this), new FilterValue(Consts.RES_IMAGE_FILTER_SMALL, smallFilter, null, numSmallItems, this), new FilterValue(Consts.RES_IMAGE_FILTER_MEDIUM, mediumFilter, null, numMediumItems, this), new FilterValue(Consts.RES_IMAGE_FILTER_BIG, bigFilter, null, numBigItems, this), }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0))); }
public override ICollection <FilterValue> GetAvailableValues(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter) { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { throw new NotConnectedException("The MediaLibrary is not connected"); } IFilter unwatchedFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new EmptyFilter(MediaAspect.ATTR_PLAYCOUNT), new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.EQ, 0)); IFilter watchedFilter = new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.GT, 0); int numUnwatchedItems = cd.CountMediaItems(necessaryMIATypeIds, unwatchedFilter, true); int numWatchedItems = cd.CountMediaItems(necessaryMIATypeIds, watchedFilter, true); return(new List <FilterValue>(new FilterValue[] { new FilterValue(Consts.RES_VALUE_UNWATCHED, unwatchedFilter, null, numUnwatchedItems, this), new FilterValue(Consts.RES_VALUE_WATCHED, watchedFilter, null, numWatchedItems, this), }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0))); }