public void Log(ExternalAnalyticsAction actioName, DateTime?timestamp, string username, Dictionary <string, object> traits, bool identify = false, Dictionary <string, object> page = null, Dictionary <string, object> campaign = null, string userAgent = null) { try { if (!traits.ContainsKey(ExternalAnalyticsTraitsKey.ipAddress.ToString())) { traits.Add(ExternalAnalyticsTraitsKey.ipAddress.ToString(), Logger.UserIPAddress); } if (async) { System.Threading.Tasks.Task.Run(() => _Log(actioName, timestamp, username, traits, identify, page, campaign, userAgent)); } else { _Log(actioName, timestamp, username, traits, identify, page, campaign, userAgent); } } catch (Exception exception) { logger.Log("externalLog-Segment", string.Empty, "Log", exception, 1, string.Empty); } }
public void _Log(ExternalAnalyticsAction actioName, DateTime?timestamp, string userId, Dictionary <string, object> traits, bool identify = false, Dictionary <string, object> page = null, Dictionary <string, object> campaign = null, string userAgent = null) { try { if (Analytics.Client == null) { Analytics.Initialize(writeKey, new Config().SetAsync(false)); } timestamp = timestamp ?? DateTime.Now; if (Analytics.Client == null) { throw new ExternalAnalyticsException("Analytics.Client faild to initail"); } if (string.IsNullOrEmpty(userId) && !traits.ContainsKey(ExternalAnalyticsTraitsKey.email.ToString())) { throw new ExternalAnalyticsException("Analytics missing username or email"); } userId = !string.IsNullOrEmpty(userId) ? userId : traits[ExternalAnalyticsTraitsKey.email.ToString()].ToString(); string name = !traits.ContainsKey(ExternalAnalyticsTraitsKey.name.ToString()) ? userId : traits[ExternalAnalyticsTraitsKey.name.ToString()].ToString(); if ((identify || actioName == ExternalAnalyticsAction.SignedUp || actioName == ExternalAnalyticsAction.SocialSignedUp)) { string origIp = Convert.ToString(traits[ExternalAnalyticsTraitsKey.ipAddress.ToString()] ?? null); Analytics.Client.Identify(userId, new Traits() { { ExternalAnalyticsTraitsKey.email.ToString(), userId }, { ExternalAnalyticsTraitsKey.name.ToString(), name }, { ExternalAnalyticsTraitsKey.signed_up_at.ToString(), DateTime.Now } }, new Options().SetContext(new Context() { { "page", GetPage(page) }, { "campaign", GetCampaign(campaign) }, { "ip", origIp }, { "userAgent", userAgent } }).SetTimestamp(timestamp)); if (actioName == ExternalAnalyticsAction.SignedUp || actioName == ExternalAnalyticsAction.SocialSignedUp) { Analytics.Client.Track(userId, ExternalAnalyticsAction.SignedUp.ToString(), new Properties() { { ExternalAnalyticsTraitsKey.name.ToString(), name } }, new Options().SetContext(new Context() { { "page", GetPage(page) }, { "campaign", GetCampaign(campaign) }, { "ip", origIp }, { "userAgent", userAgent } }).SetTimestamp(timestamp)); string provider = !traits.ContainsKey(ExternalAnalyticsTraitsKey.provider.ToString()) ? "self" : traits[ExternalAnalyticsTraitsKey.provider.ToString()].ToString(); Analytics.Client.Track(userId, ExternalAnalyticsAction.SocialSignedUp.ToString(), new Properties() { { ExternalAnalyticsTraitsKey.provider.ToString(), provider } }, new Options().SetContext(new Context() { { "page", GetPage(page) }, { "campaign", GetCampaign(campaign) }, { "ip", origIp }, { "userAgent", userAgent } }).SetTimestamp(timestamp)); } } Analytics.Client.Flush(); } catch (Exception exception) { logger.Log("externalLog-Segment", string.Empty, "_Log", exception, 1, string.Empty);// System.Diagnostics.EventLogEntryType.FailureAudit, 1); } }