Esempio n. 1
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;
            }
        }
Esempio n. 2
0
        public virtual JsonResult Save(string data)
        {
            var js = new JavaScriptSerializer();

            js.Deserialize <dynamic>(data);

            var viewModel = new PersonalizeViewModel();

            viewModel.UpdateTemplateChartViewModel(data);
            var response = _workspaceService.TemplateSave(viewModel);

            return(Json(response));
        }
Esempio n. 3
0
        public PersonalizeViewModel GetUserData(string userId)
        {
            PersonalizeViewModel results = null;

            results = new PersonalizeViewModel {
                User = new User()
                {
                    User_Id = userId
                }
            };

            return(results);
        }
Esempio n. 4
0
        public async Task <PersonalizeViewModel> GetRecommendations(string userId)
        {
            PersonalizeViewModel results = null;

            try
            {
                //USER_PERSONALIZATION -- userid required
                var request = new GetRecommendationsRequest
                {
                    CampaignArn = AwsParameterStoreClient.GetPersonalRecommendationsArn(), //personal-recommendations-metadata
                    UserId      = userId,
                    NumResults  = 10
                };

                var response = await AmazonPersonalizeRuntimeClient.GetRecommendationsAsync(request);

                var recommendedItems = response.ItemList;

                var json = JsonConvert.SerializeObject(recommendedItems);

                Logger.LogInformation("GetRecommendations:" + userId + ": " + json);

                results = new PersonalizeViewModel {
                    User = new User()
                    {
                        User_Id = userId
                    }
                };

                //get movie thumbnail from imdb
                IList <RecommendedItems> recItems = new List <RecommendedItems>();

                List <string> itemIds = recommendedItems.Select(s => s.ItemId).ToList();

                results.RecommendedItems.Movies = await _storageService.GetMovieData(itemIds.ToArray());

                return(results);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Esempio n. 5
0
        public static PersonalizeViewModel UpdateTemplateChartViewModel(this PersonalizeViewModel viewModel,
                                                                        string clientField)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            dynamic layoutData      = js.Deserialize <dynamic>(clientField);
            var     list            = new List <TemplateChartViewModel>();

            foreach (var item in layoutData)
            {
                list.Add(
                    new TemplateChartViewModel
                {
                    ChartId       = Convert.ToInt32(item["ChartId"]),
                    TemplateRow   = Convert.ToInt32(item["TemplateRow"]),
                    TemplateOrder = Convert.ToInt32(item["TemplateOrder"])
                });
            }

            viewModel.TemplateId        = layoutData[0]["TemplateId"].ToString();
            viewModel.Type              = Convert.ToInt32(layoutData[0]["Type"]);
            viewModel.TemplateChartList = list;
            return(viewModel);
        }