예제 #1
0
    public static HyperLink GetBanner(BannerAdvert.Type type, int indexOnPage)
    {
        AdPackBannerDisplayerHelper Helper     = new AdPackBannerDisplayerHelper(type);
        List <AdPacksAdvert>        allBanners = Helper.Banners;

        //Randomize the banner
        int bannerIndex = random.Next(0, allBanners.Count);

        HyperLink Banner = Helper.GetBannerHyperLink();

        //Do we have enough banners to display?
        if (allBanners.Count > 0 && allBanners.Count > indexOnPage)
        {
            AdPacksAdvert chosenBanner = allBanners[bannerIndex];

            //Adding the impression
            AddBannerImpression(chosenBanner.Id, type);

            //Finishing
            Banner.NavigateUrl = AppSettings.Site.Url + "link.aspx?rid=" + (new Encryption()).EncryptBannerId(chosenBanner.Id);
            Banner.Controls.Clear();
            Banner.Controls.Add(Helper.GetBannerImage(chosenBanner));
        }

        return(Banner);
    }
예제 #2
0
    public static void AddAdPackBannerImpression(int adPackBannerId, BannerAdvert.Type type)
    {
        string name = AdPackBannerName + adPackBannerId;

        var pair = new KeyValuePair <DateTime, int>(DateTime.Now.AddSeconds(AdPackBannerRefreshEverySeconds), 1);

        if (HttpContext.Current.Cache[name] != null)
        {
            var cachedPair = (KeyValuePair <DateTime, int>)HttpContext.Current.Cache[name];
            pair = new KeyValuePair <DateTime, int>(cachedPair.Key, cachedPair.Value + 1);
        }

        CacheItemRemovedCallback callback;

        if (type == BannerAdvert.Type.Constant)
        {
            callback = new CacheItemRemovedCallback(ConstantAdPackBannerImpressionCacheRemoved);
        }
        else
        {
            callback = new CacheItemRemovedCallback(NormalAdPackBannerImpressionCacheRemoved);
        }

        HttpContext.Current.Cache.Insert(name, pair, null, pair.Key, Cache.NoSlidingExpiration,
                                         CacheItemPriority.Normal, callback);
    }
예제 #3
0
 private static void AddBannerImpression(int adPacksAdvertId, BannerAdvert.Type type)
 {
     BannerImpressionsCache.AddAdPackBannerImpression(adPacksAdvertId, type);
 }
예제 #4
0
 public AdPackBannerDisplayerHelper(BannerAdvert.Type type) 
 {
     BannerType = type;
 }