/* Rules */ protected virtual MeasuredParameters CheckMeasure(AlertMeasure measure, float value, MeasureDiff diff) { AlertMeasures measures = null; if (!ParentWorkflow.InternalParameters.Contains("AlertMeasures")) { measures = new AlertMeasures(); ParentWorkflow.InternalParameters.Add("AlertMeasures", measures); } else { measures = (AlertMeasures)ParentWorkflow.InternalParameters["AlertMeasures"]; } MeasuredParameters ret = new MeasuredParameters(); for (int i = 0; i < _results.Count; i++) { try { MeasuredParameter mp = (MeasuredParameter)_results[i]; if (measure.CompositeMeasure) { if (measure.Evaluate(mp, value, diff, measures)) { ret.Add(mp.GK, mp); } } else { if (Evaluate(mp.ValueFromMeasure(measure.AlertMeasureName), value, diff)) { ret.Add(mp.GK, mp); } } } catch (Exception ex) { Log.Write("Exception occured while adding measured parameters", ex); continue;; } } return(ret); }
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); }