Exemplo n.º 1
0
        public void Register()
        {
            Mapper.CreateMap <Row, AffinityGroupMostSignaledEntity>()
            .ForMember(d => d.AffinityGroupSignalType, o => o.MapFrom(row => row.GetValue <string>(_rowKeyPropertyName)))
            .ForMember(d => d.ItemId, o => o.MapFrom(row => row.GetValue <string>(_itemIdPropertyName)))
            .ForMember(d => d.Count, o => o.MapFrom(row => row.GetValue <long>(_countPropertyName)))
            ;

            Mapper.CreateMap <AffinityGroupMostSignaledEntity, DomainMostSignaledItem>()
            .ForMember(d => d.Version, o => o.Ignore())
            ;

            Mapper.CreateMap <Tuple <AffinityGroupMostSignaledEntity, long>, DomainMostSignaledItem>()
            .ConvertUsing(t =>
            {
                DomainMostSignaledItem result = Mapper.Map <AffinityGroupMostSignaledEntity, DomainMostSignaledItem>(t.Item1);
                result.Version = t.Item2;
                return(result);
            })
            ;
        }
Exemplo 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);
        }