/// <summary> /// Return current banner that should be displayed, NULL otherwise /// </summary> /// <param name="type"></param> /// <param name="position">if you want to get different position than 1st banner (e.g. you have multiple banner controls)</param> /// <returns></returns> public static BannerAdvert GetCurrentBanner(BannerAdvertDimensions dimensions, int position = 1) { using (var bridge = ParserPool.Acquire(Database.Client)) { var currentSql = bridge.Instance.ExecuteRawCommandToDataTable(BannerAuctionSQLManager.GetCurrentSQL(dimensions)); var currentList = TableHelper.GetListFromDataTable <BannerAuction>(currentSql, 1); if (currentList.Count > 0) { BannerAuction auction = currentList[0]; BannerBid bid = auction.GetHighestBid(position); if (bid != null) { if (!bid.RefAndPoolsCredited) { BannerCrediter crediter = new BannerCrediter(new Member(bid.Username)); Money moneyLeftForPools = crediter.CreditReferer(bid.BidValue); PoolDistributionManager.AddProfit(ProfitSource.Banners, moneyLeftForPools); bid.RefAndPoolsCredited = true; bid.Save(); } return(new BannerAdvert(bid.BannerAdvertId)); } } return(null); } }
protected void CreateAdButton_Click(object sender, EventArgs e) { ErrorMessagePanel.Visible = false; SuccMessagePanel.Visible = false; if (Page.IsValid) { try { AppSettings.DemoCheck(); Member User = null; if (Member.IsLogged) { User = Member.Logged(Context); } if (ddlOptions.SelectedItem == null) { throw new MsgException(U6002.BANNERPACKERROR); } BannerAdvertPack Pack = new BannerAdvertPack(Int32.Parse(ddlOptions.SelectedValue)); Money AdCost = Pack.Price; if (chbGeolocation.Checked) { AdCost += AppSettings.BannerAdverts.GeolocationCost; //Now get it from client-state var CTable = Request.Form[GeoCountriesValues.Name].Substring(1).Split('#'); var geoUList = GeolocationUtils.GeoCountData.Keys; foreach (string s in CTable) { if (geoUList.Contains <string>(s)) { NewBannerAdvert.BannedCountries.Add(s); } } } if (Member.IsLogged) { var targetBalance = TargetBalanceRadioButtonList.TargetBalance; PurchaseOption.ChargeBalance(User, AdCost, TargetBalanceRadioButtonList.Feature, targetBalance, "Banner campaign"); NewBannerAdvert.Advertiser = Advertiser.AsMember(User.Name); NewBannerAdvert.Status = AdvertStatusExtensions.GetStartingStatus(); NewBannerAdvert.TargetBalance = targetBalance; } else { NewBannerAdvert.Advertiser = Advertiser.AsStranger(OutEmail.Text); NewBannerAdvert.Status = AdvertStatus.Null; } //Set basics - add to db NewBannerAdvert.TargetUrl = URL.Text; NewBannerAdvert.Pack = Pack; NewBannerAdvert.Price = AdCost; NewBannerAdvert.Save(); if (Member.IsLogged) { if (AppSettings.BannerAdverts.AdvertisingPolicy != BannerPolicy.BannerBidding && (NewBannerAdvert.Status == AdvertStatus.Active || NewBannerAdvert.Status == AdvertStatus.Paused)) { BannerCrediter crediter = new BannerCrediter(User); Money moneyLeftForPools = crediter.CreditReferer(NewBannerAdvert.Price); PoolDistributionManager.AddProfit(ProfitSource.Banners, moneyLeftForPools); } //Achievements trial int UserCurrentCampaigns = TableHelper.CountOf <BannerAdvert>(TableHelper.MakeDictionary("CreatorUsername", User.Name)); bool ShouldBeSaved = User.TryToAddAchievements( Prem.PTC.Achievements.Achievement.GetProperAchievements( Prem.PTC.Achievements.AchievementType.AfterAdvertisingBannerCampaigns, UserCurrentCampaigns)); if (ShouldBeSaved) { User.Save(); } //Add history entry 1 History.AddPurchase(User.Name, AdCost, "Banner campaign"); SuccMessagePanel.Visible = true; SuccMessage.Text = U3501.ADCREATED; //Earning stats EarningsStatsManager.Add(EarningsStatsType.Banner, AdCost); MatrixBase.TryAddMemberAndCredit(User, AdCost, AdvertType.Banner); Response.Redirect("banners.aspx"); } else { //Show buttons PaymentButtons.Visible = true; CreateAdButton.Visible = false; PaymentButtons.Text = GenerateHTMLButtons.GetPaymentButtons( new BuyAdvertButtonGenerator <IBannerAdvertPack>(NewBannerAdvert)); } Session["YourCampaigns_NewBannerAdvert"] = null; } catch (MsgException ex) { ErrorMessagePanel.Visible = true; ErrorMessage.Text = ex.Message; } catch (Exception ex) { ErrorLogger.Log(ex); throw ex; } } }