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)); }
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))); }
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); }
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); }