예제 #1
0
        public HomeControllerService(ILogger logger)
        {
            _logger = logger;

            RandomUserIdGenerator = new RandomUserIdGenerator();
            PersonalizedRecommendationsService = new PersonalizedRecommendationsService(_logger);
        }
예제 #2
0
        public async Task <PersonalizeViewModel> GetRecommendations(string userid)
        {
            try
            {
                var randomUserIdGenerator = new RandomUserIdGenerator();

                if (string.IsNullOrEmpty(userid))
                {
                    userid = randomUserIdGenerator.GetUser();
                }

                PersonalizeViewModel results = new PersonalizeViewModel();

                //user recommendations
                _logger.LogInformation("START: getting recommended items");
                var recommendations = await PersonalizedRecommendationsService.GetRecommendations(userid);

                results.User             = recommendations.User;
                results.RecommendedItems = recommendations.RecommendedItems;
                _logger.LogInformation("END: getting recommended items");

                //movies rated by user
                _logger.LogInformation("START: getting movies rated by user");
                results.MoviesRatedByUser = await PersonalizedRecommendationsService.GetAllMoviesRatedByUser(userid);

                _logger.LogInformation("END: getting movies rated by user");

                //most popular items
                _logger.LogInformation("START: getting most popular items");
                results.MostPopularItems = await PersonalizedRecommendationsService.GetMostPopularItems(userid);

                _logger.LogInformation("END: getting most popular items");

                //recommendations by ranking for most popular items
                _logger.LogInformation("START: getting personalized-ranking for most popular items");
                results.PersonalizedRankingResults = await PersonalizedRecommendationsService.GetPersonalizedResults(userid, results.MostPopularItems.Movies);

                _logger.LogInformation("END: getting personalized-ranking for recommended items");


                //recommendations by ranking for likely recommendations
                _logger.LogInformation("START: getting personalized-ranking for recommended items");
                results.PersonalizedRankingResultsForRecommendations = await PersonalizedRecommendationsService.GetPersonalizedResults(userid, results.RecommendedItems.Movies);

                _logger.LogInformation("END: getting personalized-ranking for recommended items");

                return(results);
            }
            catch (Exception e)
            {
                throw;
            }
        }