public List <int> GetProgramIDsByCampaign(int campaignID)
        {
            List <int> programIDs = new List <int>();
            TreeNode   campaign   = new KenticoCampaignsProvider().GetCampaign(campaignID);

            if (campaign != null)
            {
                var programNodes = new TreeProvider(MembershipContext.AuthenticatedUser).SelectNodes(PageTypeClassName)
                                   .Where("CampaignID", QueryOperator.Equals, campaignID)
                                   .OnCurrentSite();
                if (programNodes != null && programNodes.HasResults() && programNodes.TypedResult.Items.Count > 0)
                {
                    programIDs = programNodes.TypedResult.Items.ToList().Select(x => x.GetIntegerValue("ProgramID", default(int))).ToList();
                }
            }
            return(programIDs);
        }
        public List <CampaignsProduct> GetCampaignsProductSKUIDs(int campaignID)
        {
            List <int> programIDs   = new KenticoProgramsProvider().GetProgramIDsByCampaign(campaignID);
            var        productNodes = new TreeProvider(MembershipContext.AuthenticatedUser).SelectNodes("KDA.CampaignsProduct")
                                      .WhereIn("ProgramID", programIDs)
                                      .OnCurrentSite();

            if (productNodes != null && productNodes.HasResults() && productNodes.TypedResult.Items.Count > 0)
            {
                return(productNodes.TypedResult.Items.ToList().Select(x =>
                {
                    return new CampaignsProduct()
                    {
                        SKUID = x.NodeSKUID,
                        ProductName = x.DocumentName,
                        EstimatedPrice = x.GetValue <decimal>("EstimatedPrice", 0)
                    };
                }).ToList());
            }
            else
            {
                return(new List <CampaignsProduct>());
            }
        }