Ejemplo n.º 1
0
        /// <summary>
        /// Suppression delete utility for a given recommendation resource Id.
        /// </summary>
        /// <param name="resourceUri">ResourceID of the recommendation</param>
        /// <param name="recommendationId">RecommendationId of the recommendation</param>
        /// <returns>List of PsAzureAdvisorResourceRecommendationBase objects</returns>
        public List <PsAzureAdvisorResourceRecommendationBase> SuppressionDelete(string resourceUri, string recommendationId)
        {
            AzureOperationResponse <IPage <SuppressionContract> >        suppressionList    = null;
            AzureOperationResponse <IPage <ResourceRecommendationBase> > recommendationList = null;
            IEnumerable <PsAzureAdvisorSuppressionContract> psSuppressionContractList       = null;

            IList <PsAzureAdvisorResourceRecommendationBase> responseRecommendationList = new List <PsAzureAdvisorResourceRecommendationBase>();
            List <PsAzureAdvisorResourceRecommendationBase>  responseRecommendation     = new List <PsAzureAdvisorResourceRecommendationBase>();
            List <AzureOperationResponse> response = new List <AzureOperationResponse>();

            // Get the list of all suppressions
            suppressionList           = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result;
            psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable());

            // Get all the suppression for this recommendationId
            foreach (PsAzureAdvisorSuppressionContract contract in psSuppressionContractList)
            {
                // Delete only if the supression belongs to provided RecommendationName
                if (contract.Id.Contains(recommendationId))
                {
                    response.Add(this.ResourceAdvisorClient.Suppressions.DeleteWithHttpMessagesAsync(resourceUri, recommendationId, contract.Name).Result);
                }
            }

            // Get all the recommendation and convert to its corresponding psobject
            recommendationList         = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync().Result;
            responseRecommendationList = PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendationList.Body);

            // Add the particular recommendation to the response of cmdlet
            responseRecommendation.Add(RecommendationHelper.RecommendationFilterByRecommendation(responseRecommendationList, recommendationId));
            return(responseRecommendation);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the list of recommendations associated with the given resourceId. Default subscriptionId will be used to gather recommendation(s).
        /// </summary>
        /// <param name="advisorClient">Advisor Client</param>
        /// <param name="resourceId">ResourceId of recommendations</param>
        /// <returns>List of PsAzureAdvisorResourceRecommendationBase</returns>
        public List <PsAzureAdvisorResourceRecommendationBase> GetAllRecommendationsFromClient(IAdvisorManagementClient advisorClient, string resourceId)
        {
            AzureOperationResponse <IPage <ResourceRecommendationBase> > operationResponseRecommendation = null;
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();
            string nextPageLink = string.Empty;

            do
            {
                if (string.IsNullOrEmpty(nextPageLink))
                {
                    operationResponseRecommendation = advisorClient.Recommendations.ListWithHttpMessagesAsync().Result;
                }
                else
                {
                    operationResponseRecommendation = advisorClient.Recommendations.ListNextWithHttpMessagesAsync(nextPageLink).Result;
                }
                nextPageLink = operationResponseRecommendation.Body.NextPageLink;

                // Add current page items to the List
                entirePageLinkRecommendationData.AddRange(operationResponseRecommendation.Body.ToList());
            }while (!string.IsNullOrEmpty(nextPageLink));

            // Convert to PsAzureAdvisorResourceRecommendationBase list and return
            return(RecommendationHelper.RecommendationFilterByResourceId(
                       PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(entirePageLinkRecommendationData),
                       resourceId));
        }
Ejemplo n.º 3
0
        // GET: Store
        public ActionResult Index(string categoryId)
        {
            User user = (User)Session["User"];

            List <Item> products = new List <Item>();

            //only take 10 products...
            if (user != null)
            {
                string name   = user.Email;
                int    userId = user.UserId;
                products = RecommendationHelper.GetViaFunction("assoc", userId, 12);
            }
            else
            {
                products = RecommendationHelper.GetViaFunction("top", 0, 12);
            }

            var randomVm = Mapper.Map <List <Models.ProductListModel> >(RecommendationHelper.GetViaFunction("random", 0, 12));

            var productsVm = Mapper.Map <List <Models.ProductListModel> >(products);

            // Retrieve category listing:
            var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories.ToList());

            var vm = new Models.StoreIndexModel
            {
                RandomProducts = randomVm,
                Products       = productsVm,
                Categories     = categoriesVm
            };

            return(View(vm));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            RecommendationResource recommendationResourceUtil                  = new RecommendationResource();
            List <PsAzureAdvisorResourceRecommendationBase> results            = new List <PsAzureAdvisorResourceRecommendationBase>();
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                results = recommendationResourceUtil.GetAllRecommendationsFromClient(this.ResourceAdvisorClient, this.ResourceId);
                break;

            case NameParameterSet:
                results = recommendationResourceUtil.GetAllRecommendationsFromClient(this.ResourceAdvisorClient);

                // Filter out the resourcegroupname recommendations
                if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, string.Empty, this.ResourceGroupName);
                }
                break;
            }

            if (!string.IsNullOrEmpty(this.Category))
            {
                results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, this.Category, string.Empty);
            }

            this.WriteObject(results, true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            RecommendationResource recommendationResourceUtil                  = new RecommendationResource();
            List <PsAzureAdvisorResourceRecommendationBase> results            = new List <PsAzureAdvisorResourceRecommendationBase>();
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation = null;

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                string recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, recommendationId).Result;
                results.Add(PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendation.Body));
                break;

            case NameParameterSet:
                results = recommendationResourceUtil.GetAllRecommendationsFromClient(this.ResourceAdvisorClient);

                // Filter out the resourcegroupname recommendations
                if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, string.Empty, this.ResourceGroupName);
                }
                break;
            }

            if (!string.IsNullOrEmpty(this.Category))
            {
                results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, this.Category, string.Empty);
            }

            this.WriteObject(results, true);
        }
Ejemplo n.º 6
0
        public ActionResult Index()
        {
            var vm = new HomeModel();

            vm.RecommendProductsTop = RecommendationHelper.GetViaFunction("top", 0, 50);

            return(View(vm));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            string resourceUri      = string.Empty;
            string recommendationId = string.Empty;

            WriteVerbose(Resources.SuppressionRemove);

            AzureOperationResponse <IPage <SuppressionContract> > suppressionList = null;

            // This i used for the recommendation call, to collect supression ID data associated.
            // AzureOperationResponse<IPage<ResourceRecommendationBase>> recommendationList = null;
            IList <PsAzureAdvisorResourceRecommendationBase> responseRecommendationList = new List <PsAzureAdvisorResourceRecommendationBase>();

            List <PsAzureAdvisorResourceRecommendationBase>     responseRecommendation = new List <PsAzureAdvisorResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation         = null;

            IEnumerable <PsAzureAdvisorSuppressionContract> psSuppressionContractList = null;
            var response = new List <AzureOperationResponse>();

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.EnableRecommendationWarningMessage, this.RecommendationName)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, recommendationId));
                }
                break;

            case NameParameterSet:
                recommendation            = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, this.RecommendationName).Result;
                resourceUri               = RecommendationHelper.GetFullResourceUriFromResourceID(recommendation.Body.Id);
                suppressionList           = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result;
                psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable());

                if (ShouldProcess(this.RecommendationName, string.Format(Resources.EnableRecommendationWarningMessage, this.RecommendationName)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, this.RecommendationName));
                }
                break;

            case InputObjectParameterSet:
                // Parse out the Subscription-ID, Recommendation-ID from the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.InputObject.Id);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.InputObject.Id);
                if (ShouldProcess(recommendationId, string.Format(Resources.EnableRecommendationWarningMessage, recommendationId)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, recommendationId));
                }
                break;
            }

            this.WriteObject(responseRecommendation, true);
        }
Ejemplo n.º 8
0
        public ActionResult Index()
        {
            var vm = new HomeModel();

            Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)Session["User"];

            vm.RecommendProductsTop = RecommendationHelper.GetViaFunction("top", 0, 10);

            if (user != null)
            {
                vm.RecommendProductsBought = RecommendationHelper.GetViaFunction("assoc", user.UserId, 10);
                vm.RecommendProductsLiked  = RecommendationHelper.GetViaFunction("collab", user.UserId, 10);
            }

            return(View(vm));
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext ctx)
        {
            var config = new ConfigurationBuilder()
                         .SetBasePath(ctx.FunctionAppDirectory)
                         .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                         .AddEnvironmentVariables()
                         .Build();

            List <Item> products = new List <Item>();

            log.LogInformation($"Webhook was triggered!");

            RecommendationHelper.databaseId       = config["databaseId"];
            RecommendationHelper.endpointUrl      = config["dbConnectionUrl"];
            RecommendationHelper.authorizationKey = config["dbConnectionKey"];
            RecommendationHelper.Init();

            try
            {
                string jsonContent = await req.ReadAsStringAsync();

                dynamic payload = JsonConvert.DeserializeObject(jsonContent);

                log.LogInformation($"Payload recv: {payload}");

                if (payload != null && payload.UserId != null)
                {
                    log.LogInformation($"Getting recommendations.");

                    products = RecommendationHelper.Get(payload.Algo.ToString(), (int)payload.UserId, (int)payload.ContentId, (int)payload.Take);

                    return(new OkObjectResult(products));
                }
                else
                {
                    var error = $"Error Processing Recommendation: No UserId";
                    return(new BadRequestObjectResult(error));
                }
            }
            catch (Exception ex)
            {
                var error = $"Error Processing Recommendation: {ex.Message}";
                return(new BadRequestObjectResult(error));
            }
        }
        public IHttpActionResult Recommend(string algo, int count)
        {
            List <Item> products = new List <Item>();

            if (HttpContext.Current.Session != null && HttpContext.Current.Session["User"] != null)
            {
                Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)HttpContext.Current.Session["User"];
                string name   = user.Email;
                int    userId = user.UserId;

                products = RecommendationHelper.GetViaFunction(algo, userId, count);
            }
            else
            {
                products = RecommendationHelper.GetViaFunction(algo, 0, count);
            }

            return(Json(products));
        }
Ejemplo n.º 11
0
        // GET: Store/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Item product = await SqlDbHelper.GetItem(id);

            if (product == null)
            {
                return(HttpNotFound());
            }

            var productVm = Mapper.Map <Models.ProductModel>(product);

            //Get the simliar product to this item...
            var similarProducts   = RecommendationHelper.GetViaFunction("content", 0, id.Value);
            var similarProductsVm = Mapper.Map <List <Models.ProductListModel> >(similarProducts);

            // Find related products, based on the category
            var relatedProducts   = items.Where(p => p.CategoryId == product.CategoryId && p.ItemId != product.ItemId).Take(10).ToList();
            var relatedProductsVm = Mapper.Map <List <Models.ProductListModel> >(relatedProducts);

            // Retrieve category listing
            var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories);

            // Retrieve "new products" as a list of three random products not equal to the displayed one
            var newProducts = items.Where(p => p.ItemId != product.ItemId).Take(50).ToList().Shuffle().Take(3);

            var newProductsVm = Mapper.Map <List <Models.ProductListModel> >(newProducts);

            var vm = new Models.StoreDetailsModel
            {
                Product         = productVm,
                RelatedProducts = relatedProductsVm,
                SimilarProducts = similarProductsVm,
                NewProducts     = newProductsVm,
                Categories      = categoriesVm
            };

            return(View(vm));
        }
        public IHttpActionResult SimilarUsers(string algo)
        {
            List <Data.Models.User> users = new List <Data.Models.User>();

            Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)HttpContext.Current.Session["User"];
            string name   = user.Email;
            int    userId = user.UserId;

            switch (algo)
            {
            case "jaccard":
                users = RecommendationHelper.GetViaFunction(userId);
                break;

            case "pearson":
                users = RecommendationHelper.GetViaFunction(userId);
                break;
            }

            return(Json(users));
        }
Ejemplo n.º 13
0
        // GET: Store
        public ActionResult Index(string categoryId)
        {
            User user = (User)Session["User"];

            List <Item> products = RecommendationHelper.GetViaFunction("top", 0, 100);

            var randomVm = Mapper.Map <List <Models.ProductListModel> >(RecommendationHelper.GetViaFunction("random", 0, 10));

            var productsVm = Mapper.Map <List <Models.ProductListModel> >(products);

            // Retrieve category listing:
            var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories.ToList());

            var vm = new Models.StoreIndexModel
            {
                RandomProducts = randomVm,
                Products       = productsVm,
                Categories     = categoriesVm
            };

            return(View(vm));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            string resourceUri      = string.Empty;
            string recommendationId = string.Empty;
            SuppressionContract suppressionContract = null;

            WriteVerbose(Resources.SuppressionCreate);

            // This list contains all the response for the azure-operation
            List <AzureOperationResponse <SuppressionContract> > azureOperationResponseSuppression = new List <AzureOperationResponse <SuppressionContract> >();
            var returnSuppressionContract = new List <PsAzureAdvisorSuppressionContract>();

            // Create the suppression contract
            suppressionContract = new SuppressionContract(null, DefaultSuppressionName, null, null, this.Days == 0 ? string.Empty : this.Days.ToString());

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                // parse out the Subscription-ID, Recommendation-ID form the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.DisableRecommendationWarningMessage, recommendationId)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, recommendationId, DefaultSuppressionName, suppressionContract).Result);
                }

                break;

            case NameParameterSet:
                AzureOperationResponse <ResourceRecommendationBase> recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, this.RecommendationName).Result;
                resourceUri = RecommendationHelper.GetFullResourceUriFromResourceID(recommendation.Body.Id);

                // Make a get recommendation for this Name and get the ID
                if (ShouldProcess(this.RecommendationName, string.Format(Resources.DisableRecommendationWarningMessage, this.RecommendationName)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, this.RecommendationName, DefaultSuppressionName, suppressionContract).Result);
                }
                break;

            case InputObjectParameterSet:

                // Parse out the Subscription-ID, Recommendation-ID from the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.InputObject.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.InputObject.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.DisableRecommendationWarningMessage, recommendationId)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, recommendationId, DefaultSuppressionName, suppressionContract).Result);
                }
                break;
            }

            // Get the supresssion details from the suppression Get API, the response does not have the data for the suppression-name, resourceid.
            if (azureOperationResponseSuppression.Count > 0)
            {
                AzureOperationResponse <IPage <SuppressionContract> > suppressionList           = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result;
                IEnumerable <PsAzureAdvisorSuppressionContract>       psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable());

                foreach (AzureOperationResponse <SuppressionContract> azureOperationResponse in azureOperationResponseSuppression)
                {
                    foreach (PsAzureAdvisorSuppressionContract contractItem in psSuppressionContractList)
                    {
                        // Match the supression-ID
                        if (azureOperationResponse.Body.SuppressionId == contractItem.SuppressionId)
                        {
                            returnSuppressionContract.Add(contractItem);
                        }
                    }
                }
            }

            this.WriteObject(returnSuppressionContract, true);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            List <PsAzureAdvisorConfigurationData> results = new List <PsAzureAdvisorConfigurationData>();

            ConfigData           configData           = new ConfigData();
            ConfigDataProperties configDataProperties = new ConfigDataProperties();

            WriteVerboseWithTimestamp(string.Format(Resources.ConfigurationUpdate, this.ResourceAdvisorClient.SubscriptionId));

            // Used to store type of configuration
            bool isSubscriptionTypeConfiguration  = false;
            bool isResourceGroupTypeConfiguration = false;

            switch (this.ParameterSetName)
            {
            case InputObjectLowCpuExcludeParameterSet:
                if (Exclude)
                {
                    configDataProperties.Exclude = true;
                }
                else
                {
                    configDataProperties.Exclude = false;
                }

                configDataProperties.LowCpuThreshold = this.LowCpuThreshold.ToString();
                configData.Properties = configDataProperties;

                // If InputObject is not null, this is a piping scenario.
                if (this.InputObject != null)
                {
                    isSubscriptionTypeConfiguration = SuppressionHelper.IsConfigurationSubscriptionLevel(this.InputObject);
                    if (isSubscriptionTypeConfiguration)
                    {
                        if (ShouldProcess(this.ResourceAdvisorClient.SubscriptionId, string.Format(Resources.ConfigurationUpdateSubscriptionLevel, this.ResourceAdvisorClient.SubscriptionId)))
                        {
                            results = this.CreateConfigurationBySubscription(configData);
                        }
                    }
                }
                else
                {
                    if (ShouldProcess(this.ResourceAdvisorClient.SubscriptionId, string.Format(Resources.ConfigurationUpdateSubscriptionLevel, this.ResourceAdvisorClient.SubscriptionId)))
                    {
                        results = this.CreateConfigurationBySubscription(configData);
                    }
                }
                break;

            case InputObjectRgExcludeParameterSet:
                if (Exclude)
                {
                    configDataProperties.Exclude = true;
                }
                else
                {
                    configDataProperties.Exclude = false;
                }

                configData.Properties = configDataProperties;

                // InputObject is not null, this is a piping scenario.
                if (this.InputObject != null)
                {
                    isResourceGroupTypeConfiguration = SuppressionHelper.IsConfigurationResourceGroupLevel(this.InputObject);
                    if (isResourceGroupTypeConfiguration)
                    {
                        string resourceGroup = RecommendationHelper.GetResourceGroupFromResourceID(this.InputObject.Id);
                        if (ShouldProcess(resourceGroup, string.Format(Resources.ConfigurationUpdateResourceGroupLevel, this.ResourceAdvisorClient.SubscriptionId, resourceGroup)))
                        {
                            results = this.CreateConfigurationByResourceGroup(configData, resourceGroup);
                        }
                    }
                }
                else
                {
                    if (ShouldProcess(this.ResourceGroupName, string.Format(Resources.ConfigurationUpdateResourceGroupLevel, this.ResourceAdvisorClient.SubscriptionId, this.ResourceGroupName)))
                    {
                        results = this.CreateConfigurationByResourceGroup(configData, this.ResourceGroupName);
                    }
                }
                break;
            }

            this.WriteObject(results, true);
        }
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            List <PsAzureAdvisorResourceRecommendationBase> results = new List <PsAzureAdvisorResourceRecommendationBase>();

            AzureOperationResponse <IPage <ResourceRecommendationBase> > operationResponseRecommendation = null;
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation = null;

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                string recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, recommendationId).Result;
                results.Add(PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendation.Body));
                break;

            case NameParameterSet:
                string nextPagelink = string.Empty;

                // Iterate the page-link if exists, if the first iteration retreives the data.
                do
                {
                    if (string.IsNullOrEmpty(nextPagelink))
                    {
                        operationResponseRecommendation = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync().Result;
                    }
                    else
                    {
                        operationResponseRecommendation = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync(nextPagelink).Result;
                    }
                    // Advisor .net SDK is broken for the paging capability. So we will not use the paging until SDK is fixed.
                    // nextPagelink = operationResponseRecommendation.Body.NextPageLink;

                    // Add current page items to the List
                    entirePageLinkRecommendationData.AddRange(operationResponseRecommendation.Body.ToList());
                }while (!string.IsNullOrEmpty(nextPagelink));

                // Convert to PsAzureAdvisorResourceRecommendationBase list
                results = PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(entirePageLinkRecommendationData);

                // Filter out the resourcegroupname recommendations
                if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, string.Empty, this.ResourceGroupName);
                }

                break;
            }

            if (!string.IsNullOrEmpty(this.Category))
            {
                results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, this.Category, string.Empty);
            }

            if (Refresh)
            {
                this.ResourceAdvisorClient.Recommendations.GenerateWithHttpMessagesAsync();
            }

            this.WriteObject(results, true);
        }