Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }