Skip to content

Instantly share code, notes, and snippets.

@jstemerdink
Last active July 21, 2016 15:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jstemerdink/6eba6c6f1c173a9375faaab69af1e946 to your computer and use it in GitHub Desktop.
Save jstemerdink/6eba6c6f1c173a9375faaab69af1e946 to your computer and use it in GitHub Desktop.

Get all promotional banners for a market

An example of how you get a list of all promotions and their banners for a market

Blogpost can be found here

I have added another Gist, where the method as discussed in the comments of the blogpost is used.

Powered by ReSharper image

public List<PromotionalBanner> GetAllPromotionalBannersForMarket()
{
List<PromotionalBanner> promotionBanners = new List<PromotionalBanner>();
try
{
ICurrentMarket currentMarket = ServiceLocator.Current.GetInstance<ICurrentMarket>();
PromotionEngineContentLoader promotionEngineContentLoader = ServiceLocator.Current.GetInstance<PromotionEngineContentLoader>();
IContentLoader contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
PromotionFilters promotionFilters = ServiceLocator.Current.GetInstance<PromotionFilters>();
IList<PromotionData> promotions = promotionEngineContentLoader.GetEvaluablePromotionsInPriorityOrder(currentMarket.GetCurrentMarket());
PromotionFilterContext promotionFilterContext = promotionFilters.Filter(promotions, new List<string>(), RequestFulfillmentStatus.None);
foreach (PromotionData promotionData in promotionFilterContext.IncludedPromotions.Where(pd => !ContentReference.IsNullOrEmpty(pd.Banner)))
{
string imageUrl = UrlResolver.Current.GetUrl(
promotionData.Banner,
null,
new VirtualPathArguments { ContextMode = ContextMode.Default });
if (string.IsNullOrWhiteSpace(imageUrl))
{
continue;
}
string campaignName = null;
string campaignDescription = null;
SalesCampaign campaign = contentLoader.Get<SalesCampaign>(promotionData.ParentLink);
if (campaign != null)
{
campaignName = campaign.Name;
campaignDescription = campaign.Description;
}
PromotionalBanner promotionalBanner = new PromotionalBanner
{
BannerUrl = imageUrl,
PromotionDescription = promotionData.Description ?? string.Empty,
PromotionName = promotionData.Name ?? string.Empty,
CampaignDescription = campaignDescription ?? string.Empty,
CampaignName = campaignName ?? string.Empty
};
promotionBanners.Add(promotionalBanner);
}
}
catch (ActivationException)
{
}
catch (ArgumentNullException)
{
}
catch (TypeMismatchException)
{
}
catch (ContentNotFoundException)
{
}
return promotionBanners;
}
public class PromotionalBanner
{
public string BannerUrl { get; set; }
public string PromotionDescription { get; set; }
public string PromotionName { get; set; }
public string CampaignDescription { get; set; }
public string CampaignName { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment