예제 #1
0
        public async Task <ActionResult> ShowMovieInformation(string id)
        {
            var            oid   = new ObjectId(id);
            MongoDBManager mm    = new MongoDBManager();
            Movie          movie = await mm.GetMovie(oid);

            var userRating = mm.GetUserRating(User.Identity.GetUserId(), oid);
            ShowMovieInformationViewModel model = new ShowMovieInformationViewModel()
            {
                ID              = oid,
                Director        = movie.Director,
                Actors          = movie.Actors,
                Genres          = movie.Genres,
                ImdbRating      = movie.ImdbRating,
                TmdbRating      = movie.TMDbRating,
                YouTube         = movie.YouTube,
                Title           = movie.Title,
                Runtime         = movie.Runtime,
                Poster          = movie.Poster,
                Plot            = movie.Plot,
                Language        = movie.Language,
                MetascoreRating = movie.MetascoreRating,
                Released        = movie.Released.Value,
                AvgUserRating   = movie.AvgUserRating
            };

            if (userRating != null)
            {
                model.Liked      = true;
                model.UserRating = userRating.UserRating;
            }

            return(View(model));
        }
예제 #2
0
        public async Task <ActionResult> ShowUserMovies(int?page)
        {
            MongoDBManager  mm   = new MongoDBManager();
            UserInformation user = await mm.GetUserInformation(User.Identity.GetUserId());

            List <MovieListModel> movies = new List <MovieListModel>();

            if (user.MovieLikes != null)
            {
                foreach (var userMovie in user.MovieLikes)
                {
                    MovieListModel newMovie = new MovieListModel()
                    {
                        AvgUserRating = userMovie.UserRating,
                        ID            = userMovie.Id,
                        Title         = userMovie.Name
                    };
                    var movie = await mm.GetMovie(userMovie.Id);

                    newMovie.Poster = movie.Poster;
                    movies.Add(newMovie);
                }
            }

            return(View(movies.ToPagedList(page ?? 1, 12)));
        }
예제 #3
0
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <ObjectId, int> similarMovies = new Dictionary <ObjectId, int>();
            UserInformation            user          = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }

            foreach (var movieLike in user.MovieLikes)
            {
                List <UserInformation> users = mm.GetAllUsersWithExceptCurrent(userID, movieLike);

                foreach (var userFromDb in users)
                {
                    foreach (var movie in userFromDb.MovieLikes)
                    {
                        if (!similarMovies.ContainsKey(movie.Id))
                        {
                            similarMovies.Add(movie.Id, 0);
                        }

                        similarMovies[movie.Id]++;
                    }
                }
            }

            var sortedSimilarMovies = from pair in similarMovies
                                      orderby pair.Value descending
                                      select pair;

            int counter = 0;

            foreach (var sortedSimilarMovie in sortedSimilarMovies)
            {
                if (user.MovieLikes.Exists(x => x.Id == sortedSimilarMovie.Key))
                {
                    continue;
                }

                counter++;
                movies.Add(await mm.GetMovie(sortedSimilarMovie.Key));
            }

            return(movies);
        }
예제 #4
0
        public async Task <ActionResult> Index(int?page)
        {
            MongoDBManager mm     = new MongoDBManager();
            var            movies = await mm.GetMovies();

            List <MovieListModel> listMovies = new List <MovieListModel>();

            foreach (var m in movies)
            {
                MovieListModel newMovie = new MovieListModel()
                {
                    AvgUserRating = m.AvgUserRating,
                    ID            = m.ID,
                    Title         = m.Title
                };
                var movie = await mm.GetMovie(m.ID);

                newMovie.Poster = movie.Poster;
                listMovies.Add(newMovie);
            }

            return(View(listMovies.ToPagedList(page ?? 1, 12)));
        }
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <string, int> genras = new Dictionary <string, int>();
            UserInformation          user   = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }


            /*foreach (var movieLike in user.MovieLikes) //get user favourite genra
             * {
             *  var movie = mm.GetMovie(movieLike.Id);
             *  List<string> movieGenras = movie.Genre.Split(',').Select(x => x.Trim()).ToList();
             *
             *  if (parameters.Valid(movieGenras))
             *  {
             *      movies.Add(movie);
             *  }
             *
             *
             * }
             * return movies;*/
            foreach (var movieLike in user.MovieLikes)//get user favourite genra
            {
                var movie = await mm.GetMovie(movieLike.Id);

                List <string> movieGenras = movie.Genres;

                foreach (var movieGenra in movieGenras)
                {
                    if (!genras.ContainsKey(movieGenra))
                    {
                        genras.Add(movieGenra, 0);
                    }
                    genras[movieGenra]++;
                }
            }

            var    max            = genras.Values.Max();
            string favouriteGenre = "";

            foreach (var genre in genras.Keys)
            {
                if (genras[genre] == max)
                {
                    favouriteGenre = genre;
                    break;
                }
            }

            movies = mm.GetMoviesWithGenre(favouriteGenre);
            List <Movie> moviesWithoutUserLiked = new List <Movie>();

            foreach (var movie in movies)
            {
                bool exist = false;
                foreach (var userLiked in user.MovieLikes)
                {
                    if (userLiked.Id == movie.ID)
                    {
                        exist = true;
                        break;
                    }
                }

                if (!exist)
                {
                    moviesWithoutUserLiked.Add(movie);
                }
            }

            MoviesSort ms = new MoviesSort();

            moviesWithoutUserLiked.Sort(ms);
            return(moviesWithoutUserLiked);
        }
        public async Task <List <Movie> > GetRecommendedMovies(string userID)
        {
            MongoDBManager mm     = new MongoDBManager();
            List <Movie>   movies = new List <Movie>();

            Dictionary <string, int> actors = new Dictionary <string, int>();
            UserInformation          user   = await mm.GetUserInformation(userID);

            if (user == null)
            {
                return(movies);
            }


            foreach (var movieLike in user.MovieLikes)//get user favourite genra
            {
                var movie = await mm.GetMovie(movieLike.Id);

                List <string> movieActors = movie.Actors;

                foreach (var movieActor in movieActors)
                {
                    if (!actors.ContainsKey(movieActor))
                    {
                        actors.Add(movieActor, 0);
                    }
                    actors[movieActor]++;
                }
            }

            var    max            = actors.Values.Max();
            string favouriteActor = "";

            foreach (var actor in actors.Keys)
            {
                if (actors[actor] == max)
                {
                    favouriteActor = actor;
                    break;
                }
            }

            movies = await mm.GetMoviesWithActor(favouriteActor);

            List <Movie> moviesWithoutUserLiked = new List <Movie>();

            foreach (var movie in movies)
            {
                bool exist = false;
                foreach (var userLiked in user.MovieLikes)
                {
                    if (userLiked.Id == movie.ID)
                    {
                        exist = true;
                        break;
                    }
                }

                if (!exist)
                {
                    moviesWithoutUserLiked.Add(movie);
                }
            }

            MoviesSort ms = new MoviesSort();

            moviesWithoutUserLiked.Sort(ms);
            return(moviesWithoutUserLiked);
        }