public static void SaveFlow(AppFlowEvent f, AppFlow flow) { flow.Name = flow.GetType().ToString(); flow.EndTime = DateTime.Now; flow.Span = flow.StartTime - flow.EndTime; if (String.IsNullOrEmpty(flow.Color)) { flow.Color = "#000000"; } //dynamic f = new System.Dynamic.ExpandoObject(); // var f = new AppFlowEvent(); //f.FlowName = this.Name; //f.Started = this.StartTime; //f.FlowProps = new Newtonsoft.Json.Linq.JObject(); foreach (var prop in flow.GetType().GetProperties()) { //((IDictionary<string, object>)f)[prop.Name] = prop.GetValue(this, null); var propVal = prop.GetValue(flow, null); string value = propVal != null?propVal.ToString() : ""; f.FlowProps.Add(prop.Name, value); } foreach (var prop in flow.GetType().GetFields()) { //((IDictionary<string, object>)f)[prop.Name] = prop.GetValue(this, null); f.FlowProps.Add(prop.Name, prop.GetValue(flow).ToString()); } FlowsData.FlowTable.Insert(f); }
public virtual void End() { var f = new AppFlowEvent(); f.FlowProps = this.FlowProps; //Pass on any added before call to End FlowUtility.SaveFlow(f, this); }
public static void ExceptionOnly(this AppFlow flow, System.Exception ex) { var f = new AppFlowEvent(); f.FlowProps.Add("Message", ex.Message); f.FlowProps.Add("StackTrace", ex.ToString()); FlowUtility.SaveFlow(f, flow); }
protected override async Task <bool> SendEventToExternalSystem(AppFlowEvent appFlowEvent) { Log.d("SendEventToExternalSystem called with appFlowEvent=" + JsonWriter.AsPrettyString(appFlowEvent)); await TaskV2.Delay(10); // Simulate that sending the event to an analytics server takes time eventsThatWereSent.Add(appFlowEvent); return(true); }
public static void ExceptionAndResult(this AppFlow flow, System.Exception ex, ref AppsClient.AppsResult result) { var f = new AppFlowEvent(); f.FlowProps.Add("Message", ex.Message); f.FlowProps.Add("StackTrace", ex.ToString()); f.FlowProps.Add("Result", Newtonsoft.Json.JsonConvert.SerializeObject(result)); FlowUtility.SaveFlow(f, flow); }
public void TrackEvent(string category, string action, params object[] args) { var e = new AppFlowEvent() { category = category, action = action }; Log.d("new AppFlowEvent: " + e); recordedEvents.Add(e); }
public virtual void End() { var f = new AppFlowEvent(); FlowUtility.SaveFlow(f, this); }