public HomeControllerService(ILogger logger) { _logger = logger; RandomUserIdGenerator = new RandomUserIdGenerator(); PersonalizedRecommendationsService = new PersonalizedRecommendationsService(_logger); }
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; } }