Пример #1
0
        public VideoManagementViewModel GetVideoManagementViewModel()
        {
            IList <VideoManagementViewModelGet> videos = new List <VideoManagementViewModelGet>();
            IEnumerable <ISearchVideo>          vids   = videoRepo.GetAll();
            IEnumerable <IDuncan> ratings = ratingRepo.GetAll();

            foreach (ISearchVideo video in vids)
            {
                VideoManagementViewModelGet model = new VideoManagementViewModelGet
                {
                    Video = video
                };
                IObjectPair <string, string> titleImage = jsonReader.GetVideoTitleAndImage(video.UrlIdentity);
                model.Title     = titleImage.Object1;
                model.Thumbnail = titleImage.Object2;
                IEnumerable <IDuncan> videoRatings = ratings.Where(x => x.VideoIdentity == video.UrlIdentity);
                model.WatchCount = videoRatings.Count();
                if (model.WatchCount > 0)
                {
                    model.PleaureAverageAndDeviation = new ObjectPair <double, double>()
                    {
                        Object1 = Math.Round(videoRatings.Average(x => x.PleasureIndex), 2, MidpointRounding.AwayFromZero), Object2 = calculator.Deviation(videoRatings.Select(x => x.PleasureIndex))
                    };
                    model.ArrouselAverageAndDeviation = new ObjectPair <double, double>()
                    {
                        Object1 = Math.Round(videoRatings.Average(x => x.ArrousalIndex), 2, MidpointRounding.AwayFromZero), Object2 = calculator.Deviation(videoRatings.Select(x => x.ArrousalIndex))
                    };
                    model.DominanceAverageAndDeviation = new ObjectPair <double, double>()
                    {
                        Object1 = Math.Round(videoRatings.Average(x => x.DominanceIndex), 2, MidpointRounding.AwayFromZero), Object2 = calculator.Deviation(videoRatings.Select(x => x.DominanceIndex))
                    };
                    IList <IObjectPair <string, int> > iabCategoriesNamesAndAverage = new List <IObjectPair <string, int> >();
                    IList <IObjectPair <int, int> >    catCount = new List <IObjectPair <int, int> >();
                    foreach (int category in videoRatings.Select(x => x.CategoryID))
                    {
                        ICategory cat       = categoryManager.GetCategory(category);
                        bool      hasParent = true;
                        while (hasParent)
                        {
                            if (catCount.Select(x => x.Object1).Contains(cat.UniqueID))
                            {
                                catCount.Where(x => x.Object1 == cat.UniqueID).First().Object2++;
                            }
                            else
                            {
                                catCount.Add(new ObjectPair <int, int>()
                                {
                                    Object1 = cat.UniqueID, Object2 = 1
                                });
                            }
                            if (cat.ParentID == null)
                            {
                                hasParent = false;
                            }
                            else
                            {
                                cat = categoryManager.GetCategory((int)cat.ParentID);
                            }
                        }
                    }
                    for (int i = 0; i < 4; i++)
                    {
                        IEnumerable <IObjectPair <int, int> > currTierCounts = catCount.Where(x => categoryManager.IsTier(i + 1, x.Object1));
                        if (currTierCounts.Count() > 0)
                        {
                            IObjectPair <int, int> biggestCat = currTierCounts.Where(x => x.Object2 == currTierCounts.Max(y => y.Object2)).First();
                            iabCategoriesNamesAndAverage.Add(new ObjectPair <string, int>()
                            {
                                Object1 = categoryManager.GetCategory(biggestCat.Object1).Name, Object2 = biggestCat.Object2
                            });
                        }
                        else
                        {
                            break;
                        }
                    }
                    model.IABCategoryNameAndPercentage = iabCategoriesNamesAndAverage;
                }
                videos.Add(model);
            }
            return(new VideoManagementViewModel()
            {
                Get = videos
            });
        }
Пример #2
0
 public VideoManagementViewTest()
 {
     video = new VideoManagementViewModelGet();
 }