public void Refund(int actionUsrK) { // get latest hits stats Query q = new Query(); q.Columns = new ColumnSet(BannerStat.Columns.BannerK); string totalHitsExtraSelectElementName = "TotalHits"; q.ExtraSelectElements.Add(totalHitsExtraSelectElementName, "SUM([Hits])"); q.QueryCondition = new Q(BannerStat.Columns.BannerK, this.K); q.GroupBy = new GroupBy(BannerStat.Columns.BannerK); int totalImpressionsSoFar; BannerStatSet bss = new BannerStatSet(q); if (bss.Count == 0) { totalImpressionsSoFar = 0; } else { totalImpressionsSoFar = (int)bss[0].ExtraSelectElements[totalHitsExtraSelectElementName]; } Refund(this.TotalRequiredImpressions - totalImpressionsSoFar, actionUsrK, 0); }
public static List<BannerTotalStat> GetBannerStatTotalsBetweenDates(int[] bannerKs, DateTime dateTimeGreaterThanOrEqualTo, DateTime dateDimeLessThan) { Query q = new Query(); q.Columns = new ColumnSet(Columns.BannerK); q.ExtraSelectElements.Add("TotalHits", "sum(isnull(" + GetColumnName(Columns.Hits) + ", 0))"); q.ExtraSelectElements.Add("TotalClicks", "sum(isnull(" + GetColumnName(Columns.Clicks) + ", 0))"); q.ExtraSelectElements.Add("TotalUniqueVisitors", "sum(isnull(UniqueVisitors, 0))"); q.QueryCondition = new And( new Q(Columns.BannerK, bannerKs), new Q(BannerStat.Columns.Date, QueryOperator.GreaterThanOrEqualTo, dateTimeGreaterThanOrEqualTo), new Q(BannerStat.Columns.Date, QueryOperator.LessThan, dateDimeLessThan)); q.GroupBy = new GroupBy(Columns.BannerK); Dictionary<int, BannerStat> existingBannerStats = new Dictionary<int, BannerStat>(); BannerStatSet set = new BannerStatSet(q); foreach (BannerStat stat in set) { existingBannerStats[stat.BannerK] = stat; } List<BannerTotalStat> results = new List<BannerTotalStat>(); foreach (int bannerK in bannerKs) { if (existingBannerStats.ContainsKey(bannerK)) { BannerStat stat = existingBannerStats[bannerK]; results.Add(new BannerTotalStat() { BannerK = bannerK, Clicks = (int)stat.ExtraSelectElements["TotalClicks"], Hits = (int) stat.ExtraSelectElements["TotalHits"], UniqueVisitors = (int)stat.ExtraSelectElements["TotalUniqueVisitors"], }); } else { results.Add(new BannerTotalStat() { BannerK = bannerK, Clicks = 0, Hits = 0, UniqueVisitors= 0 }); } } return results; }
void EditBuildTable(bool InitialisePaymentControl) { #region IntroEventOptionsAnchor if (CurrentBanner.EventK > 0 && CurrentBanner.Event != null) { IntroEventOptionsSpan.Visible = true; IntroEventOptionsAnchor.HRef = CurrentBanner.Promoter.UrlEventOptions(CurrentBanner.Event); } else IntroEventOptionsSpan.Visible = false; #endregion #region Payment cell this.AdminPriceEditP.Visible = false; if (CurrentBanner.StatusBooked == true) { EditPaymentTick.Src = "~/gfx/icon-tick-up.png"; Payment.Visible = false; //EditPaymentButton.Visible=false; //Remove!! EditPaymentLabel.Text = "Received with thanks!"; } else { this.AdminPriceEditP.Visible = Usr.Current.IsAdmin; if (CurrentBanner.CheckDates()) { //Removed by DaveB 19/08 - to be updated when the payment control supportes IO items and buying with credits properly... //string price = CurrentBanner.Price.ToString("0.00"); if (InitialisePaymentControl) { Payment.Reset(); Payment.CampaignCredits.AddRange(CurrentBanner.ToCampaignCredits(Usr.Current, CurrentPromoter.K, true)); //Payment.ApplyBulkCreditDiscount = !CurrentBanner.IsPriceFixed; Payment.PromoterK = CurrentBanner.PromoterK; Payment.Initialize(); } ContainerPage.SslPage = true; } else { Payment.Visible = false; //EditPaymentLabel.ForeColor=Color.Red; EditPaymentLabel.Font.Bold = true; EditPaymentLabel.Text = "You can't book your banner with invalid dates selected. Click \"Change...\" next to the dates to resolve this."; AdminPriceEditP.Visible = false; } } #endregion #region EditPreviewPanel if (CurrentBanner.Misc != null || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.AutoEventBanner) || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.CustomAutoEventBanner)) { EditPreviewPanel.Visible = true; Spotted.Controls.Banners.GenericBanner b = (Spotted.Controls.Banners.GenericBanner)this.LoadControl("/Controls/Banners/GenericBanner.ascx"); b.CurrentBanner = CurrentBanner; b.PlaceTargetted = true; b.MusicTargetted = true; b.Bind(); EditPreviewDiv.Style["width"] = ((int)(CurrentBanner.Width + 2)).ToString() + "px"; EditPreviewDiv.Style["height"] = ((int)(CurrentBanner.Height + 2)).ToString() + "px"; EditPreviewDiv.Controls.Clear(); EditPreviewDiv.Controls.Add(b); if (CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.AutoEventBanner) || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.CustomAutoEventBanner)) { // EditPreviewP.Style["background-color"]="#000000"; // EditPreviewP.Style["padding"]="1px;"; //EditPreviewDiv.Style["border-left"] = "1px solid #000000"; //EditPreviewDiv.Style["border-top"] = "1px solid #000000"; //EditPreviewDiv.Style["border-bottom"] = "1px solid #000000"; } if (CurrentBanner.Position.Equals(Banner.Positions.Leaderboard)) EditPreviewOuterDiv.Style["padding-bottom"] = "35px"; else EditPreviewOuterDiv.Style.Remove("padding-bottom"); } else EditPreviewPanel.Visible = false; #endregion #region EditNewPreviewPanel if (CurrentBanner.NewMisc != null) { EditNewPreviewPanel.Visible = true; Spotted.Controls.Banners.GenericBanner b = (Spotted.Controls.Banners.GenericBanner)this.LoadControl("/Controls/Banners/GenericBanner.ascx"); b.CurrentBanner = CurrentBanner; b.PlaceTargetted = true; b.MusicTargetted = true; b.UseNewMisc = true; b.Bind(); EditNewPreviewDiv.Style["width"] = ((int)(CurrentBanner.Width + 2)).ToString() + "px"; EditNewPreviewDiv.Style["height"] = ((int)(CurrentBanner.Height + 2)).ToString() + "px"; EditNewPreviewDiv.Controls.Clear(); EditNewPreviewDiv.Controls.Add(b); if (CurrentBanner.Position.Equals(Banner.Positions.Leaderboard)) EditNewPreviewOuterDiv.Style["padding-bottom"] = "35px"; else EditNewPreviewOuterDiv.Style.Remove("padding-bottom"); } else EditNewPreviewPanel.Visible = false; #endregion #region BannerStatPanel if (CurrentBanner.TotalHits > 0 || CurrentBanner.TotalClicks>0) { BannerStatPanel.Visible = true; EditTotalHitsLabel.Text = CurrentBanner.TotalHits.ToString("#,##0"); EditTotalClicksLabel.Text = CurrentBanner.TotalClicks.ToString("#,##0"); EditTotalClicksPercentageLabel.Text = ((double)CurrentBanner.TotalClicks / (double)CurrentBanner.TotalHits).ToString("0.00%"); Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Or( new Q(BannerStat.Columns.Clicks, QueryOperator.GreaterThan, 0), new And( new Q(BannerStat.Columns.Date, QueryOperator.GreaterThanOrEqualTo, CurrentBanner.FirstDay), new Q(BannerStat.Columns.Date, QueryOperator.LessThanOrEqualTo, CurrentBanner.LastDay) ) ), new Q(BannerStat.Columns.BannerK, CurrentBanner.K)); q.OrderBy = new OrderBy(BannerStat.Columns.Date, OrderBy.OrderDirection.Descending); BannerStatSet bss = new BannerStatSet(q); BannerStatDataGrid.DataSource = bss; BannerStatDataGrid.DataBind(); } else BannerStatPanel.Visible = false; #endregion #region Info cells EditNameCell.InnerText = CurrentBanner.Name; EditKCell.InnerText = "banner-" + CurrentBanner.K; EditPositionCell.InnerText = CurrentBanner.PositionString(true); EditArtworkCell.InnerText = CurrentBanner.ArtworkString(true); EditLinkTargetCell.InnerHtml = CurrentBanner.LinkTargetHtml; EditDatesCell.InnerHtml = CurrentBanner.FirstDay.ToString("ddd dd MMM") + (CurrentBanner.FirstDay.Year != DateTime.Today.Year ? " " + CurrentBanner.FirstDay.Year : "") + " - " + CurrentBanner.LastDay.ToString("ddd dd MMM") + (CurrentBanner.LastDay.Year != DateTime.Today.Year ? " " + CurrentBanner.LastDay.Year : ""); //EditExposureCell.InnerText = CurrentBanner.Weight.ToString("0.#") + " slot" + (CurrentBanner.Weight == 1.0 ? "" : "s"); EditExposureCell.InnerText = CurrentBanner.ExposureDescription; #endregion #region IsPriceLocked? EditPositionChange.Visible = !CurrentBanner.IsPriceLocked; EditDatesChange.Visible = !CurrentBanner.IsPriceLocked; EditExposureChange.Visible = !CurrentBanner.IsPriceLocked; EditPositionLock.Visible = CurrentBanner.IsPriceLocked; EditDatesLock.Visible = CurrentBanner.IsPriceLocked; EditExposureLock.Visible = CurrentBanner.IsPriceLocked; EditArtworkLock.Visible = false; EditArtworkChange.Visible = true; EditArtworkCustomise.Visible = true; if (CurrentBanner.IsPriceLocked) { if (CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.AutoEventBanner) || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.CustomAutoEventBanner)) { EditArtworkLock.Visible = false; EditArtworkChange.Visible = false; EditArtworkCustomise.Visible = true; } else { EditArtworkLock.Visible = true; EditArtworkChange.Visible = false; EditArtworkCustomise.Visible = false; } } else { if (CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.AutoEventBanner) || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.CustomAutoEventBanner)) EditArtworkCustomise.Visible = true; else EditArtworkCustomise.Visible = false; } #endregion #region CheckDates if (CurrentBanner.CheckDates()) EditDatesTick.Src = "~/gfx/icon-tick-up.png"; else EditDatesTick.Src = "~/gfx/icon-cross-up.png"; #endregion #region CheckExposure //if (CurrentBanner.CheckSlots()) EditExposureTick.Src = "~/gfx/icon-tick-up.png"; //else // EditExposureTick.Src = "~/gfx/icon-cross-up.png"; #endregion #region MusicTypes if (CurrentBanner.MusicTypesChosen.Count == 0) EditMusicCell.InnerText = "All music types"; else { EditMusicCell.InnerHtml = ""; foreach (MusicType mt in CurrentBanner.MusicTypesChosen) EditMusicCell.InnerHtml += (EditMusicCell.InnerHtml.Length > 0 ? "<br>" : "") + mt.Name; } #endregion #region Places if (CurrentBanner.Places.Count == 0) EditPlacesCell.InnerText = "All towns"; else { EditPlacesCell.InnerHtml = ""; foreach (Place p in CurrentBanner.Places) EditPlacesCell.InnerHtml += (EditPlacesCell.InnerHtml.Length > 0 ? "<br>" : "") + p.FriendlyName; } #endregion #region Price EditPaymentCell.InnerText = CurrentBanner.PriceString; if (!this.IsPostBack) { if (CurrentBanner.IsPriceFixed) FixPriceTextBox.Text = CurrentBanner.FixedDiscount.ToString("P2"); else FixPriceTextBox.Text = ""; } #endregion #region File upload EditFileBody.Visible = !(CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.AutoEventBanner) || CurrentBanner.DisplayType.Equals(Banner.DisplayTypes.CustomAutoEventBanner)); if (CurrentBanner.Misc != null) { EditFileTick.Src = "~/gfx/icon-tick-up.png"; EditAssignedCell.InnerHtml = HttpUtility.HtmlEncode(CurrentBanner.Misc.Name) + "<br> - <a href=\"" + CurrentBanner.Misc.ViewUrl() + "\">View details</a><br> - <a href=\"" + CurrentBanner.Misc.Url() + "\" target=\"_blank\">Preview</a>"; } else EditAssignedCell.InnerHtml = " "; #endregion #region File waiting for check EditWaitingRow.Visible = CurrentBanner.NewMisc != null; if (CurrentBanner.NewMisc != null) EditWaitingCell.InnerHtml = HttpUtility.HtmlEncode(CurrentBanner.NewMisc.Name) + "<br> - <a href=\"" + CurrentBanner.NewMisc.ViewUrl() + "\">View details</a><br> - <a href=\"" + CurrentBanner.NewMisc.Url() + "\" target=\"_blank\">Preview</a>"; else EditWaitingCell.InnerHtml = " "; #endregion #region File waiting for check EditFailedRow.Visible = CurrentBanner.FailedMisc != null; if (CurrentBanner.FailedMisc != null) { EditFailedCell.InnerHtml = HttpUtility.HtmlEncode(CurrentBanner.FailedMisc.Name) + "<br> - <a href=\"" + CurrentBanner.FailedMisc.ViewUrl() + "\">View details</a><br> - <a href=\"" + CurrentBanner.FailedMisc.Url() + "\" target=\"_blank\">Preview</a>"; if (CurrentBanner.NewMisc == null) EditFailedRow.Attributes["class"] = "dataGridAltItem"; else EditFailedRow.Attributes.Remove("class"); } else EditFailedCell.InnerHtml = " "; #endregion }