private void BuildCampaignGKList() { ArrayList gks = new ArrayList(); for (int i = 0; i < _results.Count; i++) { CampaignAllMeasures cam = (CampaignAllMeasures)_results[i]; gks.Add(cam.CampaignGK); } if (ParentWorkflow.InternalParameters.Contains("CampaignGKList")) { ArrayList gkList = (ArrayList)ParentWorkflow.InternalParameters["CampaignGKList"]; for (int i = 0; i < gkList.Count; i++) { if (!gks.Contains(gkList[i])) { gks.Add(gkList[i]); } } ParentWorkflow.InternalParameters["CampaignGKList"] = gks; } else { ParentWorkflow.InternalParameters.Add("CampaignGKList", gks); } }
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { DataManager.ConnectionString = ParentWorkflow.Parameters["ConnectionString"].ToString(); DataManager.CommandTimeout = 0; //Run the stored procedure, based on the params we have. try { int accountID = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]); int channelID = Convert.ToInt32(ParentWorkflow.Parameters["ChannelID"]); //Create the command. using (DataManager.Current.OpenConnection()) { SqlCommand accountCampaigns = BuildCommand(); accountCampaigns.ExecuteNonQuery(); AccountAlertFilters filters = Filters; Easynet.Edge.Alerts.Core.AlertMeasures measures = AlertMeasures; //Now we need to loop on the table and build the list of campaigns and deltas. SqlDataReader sdr = GetMeasuredData(ParentWorkflow.Parameters); string accountName = String.Empty; while (sdr.Read()) { CampaignAllMeasures cam = new CampaignAllMeasures(sdr, filters, measures, _alertType); accountName = cam.AccountName; cam.TimeMeasurement = this.TimeMeasurement; cam.MeasurementType = this.MeasurementType; //Only add if we're going to include it in the list (i.e. passed the min) if (cam.Include) { _results.Add(cam); } } ParentWorkflow.InternalParameters.Add("AccountName", accountName); //Add a list of all campaign GK's we have, so in case someone wants to use //ad groups after us without giving a specific campaign GK. They'll have them. BuildCampaignGKList(); sdr.Close(); sdr.Dispose(); } } catch (Exception ex) { Console.WriteLine("Exception at Account Campaigns: " + ex.ToString()); throw ex; } return(ActivityExecutionStatus.Closed); }
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { DataManager.ConnectionString = ParentWorkflow.Parameters["ConnectionString"].ToString(); //Run the stored procedure, based on the params we have. try { int accountID = Convert.ToInt32(ParentWorkflow.Parameters["AccountID"]); DateTime cur = DayCode.GenerateDateTime(ParentWorkflow.Parameters["CurrentDayCode"]); DateTime comp = DayCode.GenerateDateTime(ParentWorkflow.Parameters["CompareDayCode"]); int channelID = Convert.ToInt32(ParentWorkflow.Parameters["ChannelID"]); int campaignGK = Convert.ToInt32(ParentWorkflow.Parameters["CampaignGK"]); //Create the command. using (DataManager.Current.OpenConnection()) { SqlCommand clicks = DataManager.CreateCommand("SP_Alerts_SumOfClicksPerAccount", System.Data.CommandType.StoredProcedure); clicks.Parameters.Add("@Account_id", System.Data.SqlDbType.NVarChar); clicks.Parameters.Add("@CurrentDayCode", System.Data.SqlDbType.NVarChar); clicks.Parameters.Add("@CompareDayCode", System.Data.SqlDbType.NVarChar); clicks.Parameters.Add("@channel_id", System.Data.SqlDbType.NVarChar); clicks.Parameters.Add("@Campaign_GK", System.Data.SqlDbType.NVarChar); clicks.Parameters.Add("@RC", System.Data.SqlDbType.Int); clicks.Parameters["@RC"].Direction = System.Data.ParameterDirection.ReturnValue; clicks.Parameters["@Account_id"].Value = accountID.ToString(); clicks.Parameters["@channel_id"].Value = channelID.ToString(); clicks.Parameters["@Campaign_GK"].Value = campaignGK.ToString(); //format the current and compare dates. string curDate = cur.ToString("yyyyMMdd"); string compDate = comp.ToString("yyyyMMdd"); clicks.Parameters["@CurrentDayCode"].Value = curDate; clicks.Parameters["@CompareDayCode"].Value = compDate; clicks.ExecuteNonQuery(); int d = Convert.ToInt32(clicks.Parameters["@RC"].Value); ClicksDelta = (float)d; CampaignAllMeasures cam = new CampaignAllMeasures(); cam.CampaignGK = campaignGK; cam.ClicksChangeRatio = ClicksDelta; cam.ChannelID = channelID; cam.AccountID = accountID; if (ParentWorkflow.InternalParameters.ContainsKey("MeasuredParams")) { MeasuredParameters mps = (MeasuredParameters)ParentWorkflow.InternalParameters["MeasuredParams"]; if (!mps.ContainsKey(cam.CampaignGK)) { mps.Add(cam.CampaignGK, cam); } ParentWorkflow.InternalParameters["MeasuredParams"] = mps; } else { MeasuredParameters mps = new MeasuredParameters(); mps.Add(cam.CampaignGK, cam); ParentWorkflow.InternalParameters.Add("MeasuredParams", mps); } } } catch (Exception ex) { throw ex; } //Put the result in the clicks property. return(ActivityExecutionStatus.Closed); }