protected void Page_Load(object sender, EventArgs e) { lblAvialable.Text = GetString("conversion.avaiblecampaign"); conversionID = QueryHelper.GetInteger("campaignid", 0); ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(conversionID); if (ci != null) { int siteID = CMSContext.CurrentSiteID; if (ci.ConversionSiteID != siteID) { if (!CMSContext.CurrentUser.IsInSite(SiteInfoProvider.GetSiteName(ci.ConversionSiteID))) { RedirectToAccessDenied(GetString("conversion.currentsite")); return; } } } // Get the conversions currentValues = GetConversions(); if (!RequestHelper.IsPostBack()) { usCampaigns.Value = currentValues; } usCampaigns.WhereCondition = "CampaignSiteID = " + CMSContext.CurrentSiteID; usCampaigns.OnSelectionChanged += usConversions_OnSelectionChanged; }
void EditForm_OnAfterSave(object sender, EventArgs e) { ConversionInfo ci = EditForm.EditedObject as ConversionInfo; // If code name has changed (on existing object) => Rename all analytics statistics data. if ((ci != null) && (ci.ConversionName != oldConversionName) && (oldConversionName != String.Empty)) { ConversionInfoProvider.RenameConversionStatistics(oldConversionName, ci.ConversionName, CMSContext.CurrentSiteID); } }
private void Conversions(DateTime date, Dictionary <string, int> visitors, Random random) { var list = ConversionInfoProvider.GetConversions().OnSite(_mSite.SiteID).ToList(); var num = visitors.Sum(visitor => visitor.Value) / list.Count; foreach (var conversionInfo in list) { LogHit("conversion", (int)Math.Round(0.75 * (random.NextDouble() / 2.0) * num), 0, date, conversionInfo.ConversionName, null, 0); } }
protected void Page_Init(object sender, EventArgs e) { var ci = EditedObject as ConversionInfo; var conversionName = QueryHelper.GetString("conversionName", String.Empty); if (conversionName != String.Empty) { // Try to check dialog mode conversionName = conversionName.Trim(';'); ci = ConversionInfoProvider.GetConversionInfo(conversionName, SiteContext.CurrentSiteName); } // Test whether conversion is in current site, if not - test if user is authorized for conversion's site if (ci != null) { if (!ci.CheckPermissions(PermissionsEnum.Read, CurrentSiteName, CurrentUser)) { RedirectToAccessDenied(ci.TypeInfo.ModuleName, "Read"); } } if ((conversionName != String.Empty) && (ci == null)) { // Set warning text mInfoText = String.Format(GetString("conversion.editedobjectnotexits"), HTMLHelper.HTMLEncode(conversionName)); // Create new conversion info based on conversion name ci = new ConversionInfo(); ci.ConversionName = conversionName; ci.ConversionDisplayName = conversionName; } if (mModalDialog) { if (ci != null) { PageTitle.TitleText = GetString("analytics.conversion"); } else { PageTitle.TitleText = GetString("conversion.conversion.new"); } } if (ci != null) { EditedObject = ci; } }
/// <summary> /// Test if conversion is valid and create new conversion if not exists /// </summary> public override bool IsValid() { // Get validated string String value = ValidationHelper.GetString(usConversions.Value, String.Empty).Trim(); if (value != String.Empty) { String domain = RequestContext.CurrentDomain; if (DataHelper.GetNotEmpty(domain, "") != "") { string parsedDomain = LicenseKeyInfoProvider.ParseDomainName(domain); if (!LicenseKeyInfoProvider.IsFeatureAvailable(parsedDomain, FeatureEnum.CampaignAndConversions)) { ValidationError = GetString("conversionselector.nolicence"); return(false); } } // Validate for code name if (!ValidationHelper.IsCodeName(value)) { ValidationError = GetString("conversion.validcodename"); return(false); } // Test if selected name exists ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(value, SiteContext.CurrentSiteName); // If not exist create new one if (ci == null) { if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageConversions")) { ValidationError = GetString("conversion.notallowedcreate"); return(false); } // Create new object ci = new ConversionInfo(); ci.ConversionName = value; ci.ConversionDisplayName = value; ci.ConversionSiteID = SiteContext.CurrentSiteID; // Save to database ConversionInfoProvider.SetConversionInfo(ci); } } return(true); }
/// <summary> /// Displays the given report /// </summary> private void DisplayReport() { // If report was already displayed .. return if (reportDisplayed) { return; } ucGraphType.ProcessChartSelectors(false); // Prepare report parameters DataTable reportParameters = new DataTable(); // In case of hidden datetime -> for save purpose pass from (to) as now to query parameter DateTime from = ((ucGraphType.From == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.From; DateTime to = ((ucGraphType.To == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.To; reportParameters.Columns.Add("FromDate", typeof(DateTime)); reportParameters.Columns.Add("ToDate", typeof(DateTime)); reportParameters.Columns.Add("CodeName", typeof(string)); reportParameters.Columns.Add("CampaignName", typeof(string)); reportParameters.Columns.Add("ConversionName", typeof(string)); reportParameters.Columns.Add("Goal", typeof(string)); reportParameters.Columns.Add("SiteID", typeof(int)); object[] parameters = new object[7]; parameters[0] = (mAllowNoTimeSelection && from == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : from; parameters[1] = (mAllowNoTimeSelection && to == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : to; parameters[2] = dataCodeName; parameters[3] = String.Empty; parameters[4] = String.Empty; parameters[5] = ucReportHeader.SelectedGoal; parameters[6] = ucReportHeader.SelectedSiteID; // Get report name from query String reportName = ucGraphType.GetReportName(reportCodeNames); // Filter campaign if any campaign selected string campaignName = ValidationHelper.GetString(ucReportHeader.SelectedCampaign, String.Empty); if ((campaignName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(campaignName))) { parameters[3] = campaignName; } if (conversionID == 0) { // Filter conversion String conversionName = ValidationHelper.GetString(ucReportHeader.SelectedConversion, String.Empty); if ((conversionName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(conversionName))) { parameters[4] = conversionName; } } else { ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(conversionID); if (ci != null) { parameters[4] = ci.ConversionName; mDeleteParam = "singleconversion;" + ci.ConversionName; } } reportParameters.Rows.Add(parameters); reportParameters.AcceptChanges(); mUcDisplayReport.ReportName = reportName; // Set display report if (!mUcDisplayReport.IsReportLoaded()) { ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), HTMLHelper.HTMLEncode(reportName))); } else { mUcDisplayReport.LoadFormParameters = false; mUcDisplayReport.DisplayFilter = false; mUcDisplayReport.ReportParameters = reportParameters.Rows[0]; mUcDisplayReport.GraphImageWidth = 100; mUcDisplayReport.IgnoreWasInit = true; mUcDisplayReport.UseExternalReload = true; mUcDisplayReport.UseProgressIndicator = true; mUcDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval); mUcDisplayReport.ReloadData(true); } // Mark as report displayed reportDisplayed = true; }
protected override void OnPreInit(EventArgs e) { // Checks all permissions for web analytics CMSWebAnalyticsPage.CheckAllPermissions(); string conversionName = QueryHelper.GetString("conversionName", String.Empty); int conversionID = QueryHelper.GetInteger("conversionID", 0); ConversionInfo ci = null; if (conversionName != String.Empty) { // Try to check dialog mode conversionName = conversionName.Trim(';'); ci = ConversionInfoProvider.GetConversionInfo(conversionName, CMSContext.CurrentSiteName); } if (conversionID != 0) { ci = ConversionInfoProvider.GetConversionInfo(conversionID); } // Test whether conversion is in current site, if not - test if user is authorized for conversion's site if (ci != null) { int siteID = CMSContext.CurrentSiteID; if (ci.ConversionSiteID != siteID) { if (!CMSContext.CurrentUser.IsInSite(SiteInfoProvider.GetSiteName(ci.ConversionSiteID))) { RedirectToAccessDenied(GetString("conversion.currentsite")); return; } } } if ((conversionName != String.Empty) && (ci == null)) { // Set warning text infoText = String.Format(GetString("conversion.editedobjectnotexits"), conversionName); // Create new conversion info based on conversion name ci = new ConversionInfo(); ci.ConversionName = conversionName; ci.ConversionDisplayName = conversionName; } modalDialog = QueryHelper.GetBoolean("modalDialog", false); if (modalDialog) { MasterPageFile = "~/CMSMasterPages/UI/Dialogs/ModalDialogPage.master"; if (ci != null) { this.CurrentMaster.Title.TitleText = GetString("analytics.conversion"); this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Analytics_Conversion/object.png"); } else { this.CurrentMaster.Title.TitleText = GetString("conversion.conversion.new"); this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Analytics_Conversion/new.png"); } SetDialogButtons(); } if (ci != null) { EditedObject = ci; } base.OnPreInit(e); }
/// <summary> /// Creates the channel conversions table and conversion funnel. /// </summary> private void InitializeControls() { // Get raw data from database var conversionSources = ConversionCampaignSourceInfoProvider.GetConversionCampaignSources(mCampaignInfo.CampaignID).ToList(); if (!conversionSources.Any()) { pnlCampaignColumnChart.Visible = false; gridChannels.Visible = false; lblNoData.Visible = true; return; } // Process data into more suitable format var conversionSourcesById = conversionSources .GroupBy(key => key.ConversionID, (key, group) => { var groupList = group.ToList(); return(new { Name = ConversionInfoProvider.GetConversionInfo(key).ConversionDisplayName, Items = groupList, Sum = groupList.Sum(x => x.ConversionHits) }); }) .OrderByDescending(x => x.Sum); // Initialize chart double onePercentOfFirstItemSum = conversionSourcesById.First().Sum / 100.0; var chartData = conversionSourcesById.Select(x => new { title = x.Name, value = x.Sum, percent = onePercentOfFirstItemSum > 0 ? Decimal.Round(x.Sum / (decimal)onePercentOfFirstItemSum) : 0, formattedValue = x.Sum.ToString("N0"), }); ScriptHelper.RegisterModule(pnlCampaignColumnChart, "CMS.Charts/CampaignColumnChart", new { chartDiv = pnlCampaignColumnChart.ClientID, legendDiv = "legend", data = chartData, maxValue = conversionSourcesById.First().Sum, }); // Create data table var table = new DataTable(); table.Columns.Add("Channel", typeof(string)); table.Columns.Add("EmailReports", typeof(string)); // Define first header column AddColumnToGridView(gridChannels, "Channel", String.Empty); // Define column for email report links AddColumnToGridView(gridChannels, "EmailReports", GetString("campaign.report.emailreports")); // Get channels var channels = conversionSources.GroupBy(x => x.SourceName).OrderBy(x => x.Key); // Create table header foreach (var conversion in conversionSourcesById) { AddColumnToGridView(gridChannels, conversion.Name, conversion.Name); table.Columns.Add(conversion.Name, typeof(string)); } // Create table rows foreach (var channel in channels) { var dr = table.NewRow(); dr["Channel"] = channel.Key; if (ModuleEntryManager.IsModuleLoaded(ModuleName.NEWSLETTER)) { var issues = new ObjectQuery(PredefinedObjectType.NEWSLETTERISSUE).WhereEquals("IssueUTMCampaign", mCampaignInfo.CampaignUTMCode).WhereEquals("IssueUTMSource", channel.Key); dr["EmailReports"] = GetEmailReportLinks(issues.ToList()).Join("</br></br>"); } // Create other cells with conversion values foreach (var item in conversionSourcesById) { var conversion = item.Items.Where(x => x.SourceName == channel.Key).ToList(); dr[item.Name] = conversion.Any() ? conversion.First().ConversionHits.ToString("N0") : "0"; } table.Rows.Add(dr); } gridChannels.DataSource = table; gridChannels.DataBind(); }