private async Task <List <Watch> > LoadProjectPageDataAsync(IEnumerable <DomainUserSignal> pageData, string userId)
        {
            List <DomainUserSignal> items   = pageData.ToList();
            List <Watch>            watches = await _watchProjectService.GetByIdsAsync(items.Select(i => i.ItemId).ToArray(), userId);

            return(items.Select(item => watches.FirstOrDefault(w => w.Id == item.ItemId)).Where(watch => watch != null).ToList());
        }
Esempio n. 2
0
        private async Task <List <TrendingWatch> > LoadAndFilterDataAsync(IEnumerable <DomainMostSignaledItem> pageData, DataQueryOptions filter)
        {
            // Preparing
            int?                  productId  = null;
            WatchState?           videoState = null;
            List <DataFilterRule> filters    = filter.Filters.Where(f => f.Value != null).ToList();

            foreach (DataFilterRule dataFilterRule in filters)
            {
                DataFilterRule f = dataFilterRule;

                if (string.Compare(f.Name, NameOfHelper.PropertyName <TrendingWatch>(x => x.Generator),
                                   StringComparison.OrdinalIgnoreCase) == 0 && f.Type == DataFilterTypes.Equal)
                {
                    // by product id
                    productId = Int32.Parse(f.Value.ToString());
                }
                else if (string.Compare(f.Name, NameOfHelper.PropertyName <TrendingWatch>(x => x.State),
                                        StringComparison.OrdinalIgnoreCase) == 0 && f.Type == DataFilterTypes.Equal)
                {
                    // by video state
                    videoState = (WatchState)Enum.Parse(typeof(WatchState), f.Value.ToString());
                }
            }


            // Loading
            List <DomainMostSignaledItem> items = pageData.ToList();
            List <Watch> watches = await _watchProjectService.GetByIdsAsync(items.Select(i => i.ItemId).ToArray(), string.Empty);


            // Processing projects
            var filtered = new List <TrendingWatch>();

            foreach (DomainMostSignaledItem i in items)
            {
                DomainMostSignaledItem item = i;
                Watch watch = watches.FirstOrDefault(w => w.Id == item.ItemId);

                // Display only existing & public videos
                if (watch == null || watch.Access != ProjectAccess.Public)
                {
                    continue;
                }

                // filtering by product id
                if (productId.HasValue)
                {
                    if (watch.Generator != productId.Value)
                    {
                        continue;
                    }
                }

                // filterring by state
                if (videoState.HasValue)
                {
                    if (watch.State != videoState.Value)
                    {
                        continue;
                    }
                }

                TrendingWatch trendingWatch = _mapper.Map <Watch, TrendingWatch>(watch);
                trendingWatch.Version = item.Version;

                filtered.Add(trendingWatch);
            }

            return(filtered);
        }