Пример #1
0
        private ListDescriptionTO getListDetails(string userName, int listId)
        {
            var list = _listRepository.GetSingle(listId);

            if (list != null)
            {
                list.Films = _listRepository.GetListFilms(listId);

                Mapper.CreateMap <Film, FilmListDetailsTO>();
                Mapper.CreateMap <ApplicationUser, UserNameTO>();
                Mapper.CreateMap <List, ListDescriptionTO>();

                var listModel = Mapper.Map <List, ListDescriptionTO>(list);

                foreach (var film in listModel.Films)
                {
                    string[] shortDesc = film.Description.Split(' ');
                    Array.Resize(ref shortDesc, 15);
                    film.Description = string.Join(" ", shortDesc);
                }

                List <int> filmIds = new List <int>();
                foreach (var film in listModel.Films)
                {
                    filmIds.Add(film.Id);
                }
                // calculate votes count
                Dictionary <int, int> votes = _listRepository.CalculateVotes(list.Id, filmIds);

                foreach (var film in listModel.Films)
                {
                    if (votes.ContainsKey(film.Id))
                    {
                        film.Votes = votes[film.Id];
                    }
                    else
                    {
                        film.Votes = 0;
                    }
                }

                listModel.Films.OrderByDescending(d => d.Votes);

                var user = new UserNameTO
                {
                    UserName = _listRepository.GetListCreator(listId)
                };
                listModel.User = user;

                ApplicationCache <ListDescriptionTO> .AddCacheItem(listModel);

                return(listModel);
            }

            return(null);
        }
Пример #2
0
        private void addNewestListToCache(int listId, bool?isUpdate)
        {
            var list = _listRepository.GetSingle(listId);

            if (list != null)
            {
                list.Films = _listRepository.GetListFilms(listId);

                Mapper.CreateMap <Film, FilmListDetailsTO>();
                Mapper.CreateMap <ApplicationUser, UserNameTO>();
                Mapper.CreateMap <List, ListDescriptionTO>();

                var listModel = Mapper.Map <List, ListDescriptionTO>(list);

                foreach (var film in listModel.Films)
                {
                    string[] shortDesc = film.Description.Split(' ');
                    Array.Resize(ref shortDesc, 15);
                    film.Description = string.Join(" ", shortDesc);
                }

                List <int> filmIds = new List <int>();
                foreach (var film in listModel.Films)
                {
                    filmIds.Add(film.Id);
                }

                foreach (var film in listModel.Films)
                {
                    film.Votes   = 0;
                    film.isVoted = false;
                }

                listModel.Films.OrderByDescending(d => d.Votes);

                var user = new UserNameTO
                {
                    UserName = _listRepository.GetListCreator(listId)
                };
                listModel.User     = user;
                listModel.Likes    = 0;
                listModel.DisLikes = 0;
                listModel.Voted    = 0;

                var cache = ApplicationCache <ListDescriptionTO> .GetCache();

                if (isUpdate == false)
                {
                    if (cache.Count() > 0)
                    {
                        ApplicationCache <ListDescriptionTO> .AddCacheItem(listModel);
                    }
                }
                else
                {
                    if (cache.Count() > 0)
                    {
                        var cacheItem = cache.FirstOrDefault(d => d.Id == listId);
                        if (cacheItem != null)
                        {
                            int cacheItemIndex = cache.IndexOf(cacheItem);
                            cache[cacheItemIndex] = listModel;
                        }
                    }
                }
            }
        }
Пример #3
0
        public IEnumerable <ListDescriptionTO> GetAllLists(string userName)
        {
            List <ListDescriptionTO> result = new List <ListDescriptionTO>();

            var cache = ApplicationCache <ListDescriptionTO> .GetCache();

            if (cache.Count() > 0)
            {
                result = cache;
                foreach (var list in result)
                {
                    var filmsToSort = list.Films.ToList();
                    filmsToSort.Sort((x, y) => y.Votes - x.Votes);
                    list.Films = filmsToSort;
                }
            }
            else
            {
                var lists = _listRepository.GetAll();

                List <ListDescriptionTO> listsModel = new List <ListDescriptionTO>();

                if (lists.Any())
                {
                    foreach (var list in lists)
                    {
                        list.Films = _listRepository.GetListFilms(list.Id);
                    }

                    Mapper.CreateMap <Film, FilmListDetailsTO>();
                    Mapper.CreateMap <ApplicationUser, UserNameTO>();
                    Mapper.CreateMap <List, ListDescriptionTO>();

                    listsModel = Mapper.Map <List <List>, List <ListDescriptionTO> >(lists);

                    foreach (var list in listsModel)
                    {
                        foreach (var film in list.Films)
                        {
                            string[] shortDesc = film.Description.Split(' ');
                            Array.Resize(ref shortDesc, 15);
                            film.Description = string.Join(" ", shortDesc);
                        }

                        List <int> filmIds = new List <int>();
                        foreach (var film in list.Films)
                        {
                            filmIds.Add(film.Id);
                        }
                        // calculate votes count
                        Dictionary <int, int> votes = _listRepository.CalculateVotes(list.Id, filmIds);

                        foreach (var film in list.Films)
                        {
                            if (votes.ContainsKey(film.Id))
                            {
                                film.Votes = votes[film.Id];
                            }
                            else
                            {
                                film.Votes = 0;
                            }
                        }

                        var user = new UserNameTO
                        {
                            UserName = _listRepository.GetListCreator(list.Id)
                        };
                        list.User = user;
                        list.Films.OrderByDescending(d => d.Votes);
                    }
                }
                ApplicationCache <ListDescriptionTO> .FillCache(listsModel);

                result = listsModel;
            }

            if (userName != "")
            {
                string userId = "";
                //get user id
                userId = _authRepository.GetUserId(userName);

                foreach (var list in result)
                {
                    List <int> votedFilmsIds = new List <int>();
                    if (userId != "")
                    {
                        //check if user already voted for films
                        votedFilmsIds = _listRepository.CheckIfFilmsAreVoted(list.Id, userId);
                        // check if user already liked/dislikes list
                        list.Voted = _listRepository.CheckIfListIsVoted(list.Id, userId);
                        // check if user already added list to favourites
                        list.IsFavourite = _authRepository.CheckIfFavouriteExists(list.Id, userId);

                        foreach (var film in list.Films)
                        {
                            if (votedFilmsIds.Contains(film.Id))
                            {
                                film.isVoted = true;
                            }
                            else
                            {
                                film.isVoted = false;
                            }
                        }
                    }
                }
            }
            else
            {
                foreach (var list in result)
                {
                    foreach (var film in list.Films)
                    {
                        film.isVoted = false;
                    }
                    list.Voted = 0;
                }
            }

            result.OrderByDescending(d => d.Likes);

            return(result);
        }