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