Esempio n. 1
0
        public async Task RevertTransaction(CustomerOrder order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var settings = _settingsManager.Get(order.StoreId);

            if (!settings.IsActive || !settings.ReverseECommerceTransaction)
            {
                return;
            }

            using (var tracker = new SimpleTracker(settings.TrackingId, settings.TrackingDomain ?? string.Empty, CreateEnvironment()))
            {
                var list = new List <Task <TrackingResult> >();

                var task = tracker.TrackAsync(ECommerceConverter.OrderToTransaction(order, true));
                list.Add(task);

                foreach (var lineItem in order.Items)
                {
                    var lineItemTask = tracker.TrackAsync(ECommerceConverter.LineItemToTransactionItem(order, lineItem, true));
                    list.Add(lineItemTask);
                }

                await Task.WhenAll(list.ToArray());
            }
        }
Esempio n. 2
0
        public TrackerSingleton()
        {
            var simpleTrackerEnvironment = new SimpleTrackerEnvironment(Environment.OSVersion.Platform.ToString(),
                                                                        Environment.OSVersion.Version.ToString(),
                                                                        Environment.OSVersion.VersionString);

            this._tracker = new SimpleTracker(GoogleAnalyticsUserAgent, simpleTrackerEnvironment);
        }
Esempio n. 3
0
        static Analytics()
        {
#if __PC__
            if (Settings.Default.GUID == "00000000-0000-0000-0000-000000000000")
            {
                Settings.Default.GUID = Guid.NewGuid().ToString();
                Settings.Default.Save();
            }
            GUID = Settings.Default.GUID;
            OperatingSystem os = Environment.OSVersion;
            trackerEnvironment = new SimpleTrackerEnvironment(os.Platform.ToString(), os.Version.ToString(), os.VersionString);
            analyticsSession   = new AnalyticsSession();
            tracker            = new SimpleTracker("UA-125850339-2", analyticsSession, trackerEnvironment);
            AppVersion         = MainForm.VERSION;
            OSVersion          = SetWindowsVersion(os.Version.ToString());
            bool windowsStoreApp = Application.ExecutablePath.Contains("WindowsApps");
            bool debugging       = Application.ExecutablePath.Contains("GitRepo");
            DeploymentType = windowsStoreApp ? "Windows Store" : debugging ? "Development" : "Zip File";
            string resolution = Screen.PrimaryScreen.Bounds.ToString();
#elif __MACOS__
            var userDefaults = new NSUserDefaults();
            GUID = userDefaults.StringForKey("AnalyticsKey");
            if (string.IsNullOrEmpty(GUID))
            {
                GUID = Guid.NewGuid().ToString();
                userDefaults.SetString(GUID, "AnalyticsKey");
                userDefaults.Synchronize();
            }
            NSProcessInfo info = new NSProcessInfo();
            OSVersion          = $"MacOSX {info.OperatingSystemVersionString}";
            trackerEnvironment = new SimpleTrackerEnvironment("Mac OSX", info.OperatingSystemVersion.ToString(), OSVersion);
            analyticsSession   = new AnalyticsSession();
            tracker            = new SimpleTracker("UA-125850339-2", analyticsSession, trackerEnvironment);
            var app = (AppDelegate)NSApplication.SharedApplication.Delegate;
            AppVersion     = FamilyTree.Instance.Version;
            DeploymentType = "Mac Website";
            string resolution = NSScreen.MainScreen.Frame.ToString();
#elif __IOS__
            var userDefaults = new NSUserDefaults();
            GUID = userDefaults.StringForKey("AnalyticsKey");
            if (string.IsNullOrEmpty(GUID))
            {
                GUID = Guid.NewGuid().ToString();
                userDefaults.SetString(GUID, "AnalyticsKey");
                userDefaults.Synchronize();
            }
            NSProcessInfo info = new NSProcessInfo();
            OSVersion          = $"MacOSX {info.OperatingSystemVersionString}";
            trackerEnvironment = new SimpleTrackerEnvironment("Mac OSX", info.OperatingSystemVersion.ToString(), OSVersion);
            analyticsSession   = new AnalyticsSession();
            tracker            = new SimpleTracker("UA-125850339-2", analyticsSession, trackerEnvironment);
            var app = (AppDelegate)UIApplication.SharedApplication.Delegate;
            AppVersion     = FamilyTree.Instance.Version;
            DeploymentType = "Mac Website";
            string resolution = UIScreen.MainScreen.Bounds.ToString();
#endif
            Resolution = resolution.Length > 11 ? resolution.Substring(9, resolution.Length - 10) : resolution;
        }
        public static async Task Tracker(string pageTitle, string pageUrl)
        {
            SimpleTrackerEnvironment ste = new SimpleTrackerEnvironment(Environment.OSVersion.ToString(), Environment.OSVersion.VersionString, "");

            using (SimpleTracker tracker = new SimpleTracker("UA-97814311-2", ste))
            {
                await tracker.TrackPageViewAsync(pageTitle, pageUrl, new Dictionary <int, string>());
            }
        }
        private async Task SendHitAsync(HitBuilder hit)
        {
#if RUN_SYNCHRONOUS
            lock (syncObject)
            {
#endif
            HitSentEventArgs args = null;

            var serviceManager = new AnalyticsManager(MockConfig.Current.PlatformInfoProvider)
            {
                IsDebug = true
            };
            serviceManager.HitSent      += (s, e) => { args = e;    Assert.IsFalse(args == null); };
            serviceManager.HitMalformed += (s, e) => { Assert.Fail("Malformed: " + e.Hit.Parse()); };
            serviceManager.HitFailed    += (s, e) => { Assert.Fail("Failed:" + e.Error); };

#if !NATIVESDK_TEST
            var tracker =
                new SimpleTracker(MockConfig.Current.PropertyId, serviceManager)
            {
                AppName    = MockConfig.Current.AppName,
                ClientId   = MockConfig.Current.ClientId,
                ScreenName = MockConfig.Current.ScreenName
            };
#else
            var tracker = new Tracker(MockConfig.Current.PropertyId,
                                      MockConfig.Current.PlatformInfoProvider, serviceManager);
            serviceManager.IsDebug = true;
#endif
            tracker.Send(hit.Build());


#if RUN_SYNCHRONOUS
            serviceManager.DispatchAsync().AsTask().Wait();
#else
            await serviceManager.DispatchAsync();

            await Task.Delay(200);         //HitSent processing is async.. since we need args, let it replicate
#endif


            Assert.IsTrue(args != null, "args != null (" + hit.BuildToString() + ")");
            using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(args.Response)))
            {
                if (serviceManager.IsDebug)
                {
                    var serializer    = new DataContractJsonSerializer(typeof(DebugResponse));
                    var debugResponse = (DebugResponse)serializer.ReadObject(stream);
                    Assert.IsTrue(debugResponse.HitParsingResult.All(r => r.Valid), "Invalid Request: (" + args.Response + ")");
                }
            }
#if RUN_SYNCHRONOUS
        }       // lock
#endif
        }
Esempio n. 6
0
        public static SimpleTracker Get()
        {
            if (Tracker == null)
            {
                OperatingSystem          os          = System.Environment.OSVersion;
                SimpleTrackerEnvironment environment = new SimpleTrackerEnvironment(os.Platform.ToString(), os.Version.ToString(), os.VersionString);
                Tracker = new SimpleTracker("UA-104211362-5", environment);
            }

            return(Tracker);
        }
Esempio n. 7
0
 public TrackUsage(IVersionControl versionControl, ISettingsCollection settingsCollection, InstanceType instanceType)
 {
     this.versionControl     = versionControl;
     this.settingsCollection = settingsCollection;
     this.instanceType       = instanceType;
     tracker = new SimpleTracker("UA-51628201-7", new SimpleTrackerEnvironment(Environment.OSVersion.Platform.ToString(), Environment.OSVersion.Version.ToString(), Environment.OSVersion.VersionString));
     TrackAppUsage(TrackingType.AppLoad);
     heartbeat          = new Timer(TimeSpan.FromMinutes(1).TotalMilliseconds);
     heartbeat.Elapsed += (sender, args) => TrackAppUsage(TrackingType.Heartbeat);
     heartbeat.Enabled  = true;
 }
Esempio n. 8
0
        public async Task Event(string category, string action, string label)
        {
            //NOTE: Custom Dimension numbers are meaningful, but defined within Google Analytics.
            string odsApiVersion = null;

            try
            {
                odsApiVersion = await InMemoryCache.Instance.GetOrSet("OdsApiVersion", async() => await _inferOdsApiVersion.Version(
                                                                          CloudOdsAdminAppSettings.Instance.ProductionApiUrl));
            }
            catch (Exception e)
            {
                _logger.Error("Google Analytics Telemetry failed for ODS API version", e);
            }

            var databaseVersion = InMemoryCache.Instance
                                  .GetOrSet("DatabaseVersion", DatabaseVersion);

            var    userName   = _userContext?.User?.UserName;
            string domainName = null;

            if (userName != null && userName.Contains('@'))
            {
                domainName = userName.Split('@', 2)[1];
            }

            var hostName = _httpContextAccessor.HttpContext.Request.Host.Value;

            var customDimensions = new Dictionary <int, string>
            {
                [1] = ExplicitWhenNotSet(_informationalVersion),
                [2] = ExplicitWhenNotSet(odsApiVersion),
                [3] = ExplicitWhenNotSet(databaseVersion),
                [4] = ExplicitWhenNotSet(domainName),
                [5] = ExplicitWhenNotSet(hostName)
            };

            using (var tracker = new SimpleTracker(_measurementId, _environment))
                await tracker.TrackEventAsync(
                    ExplicitWhenNotSet(category),
                    ExplicitWhenNotSet(action),
                    ExplicitWhenNotSet(label),
                    customDimensions);

            string DatabaseVersion()
            {
                return("SqlServer".Equals(CloudOdsAdminAppSettings.Instance.DatabaseEngine, StringComparison.InvariantCultureIgnoreCase)
                    ? _database.DatabaseVersionView.FromSqlRaw("SELECT @@VERSION as VersionString").First().VersionString
                    : _database.DatabaseVersionView.FromSqlRaw("SELECT version() as VersionString").First().VersionString);
            }
        }
Esempio n. 9
0
 private async void ReportAnalytics(string title, string uri)
 {
     if (Settings.Default.Tracking != 1)
     {
         return;
     }
     try
     {
         using (SimpleTracker tracker = new SimpleTracker("UA-50763481-1", "mcutools.com"))
         {
             await tracker.TrackPageViewAsync(title, _trackbaseuri + @"/" + uri);
         }
     }
     catch (Exception) { }
 }
Esempio n. 10
0
    public static async Task <TrackingResult> TrackPageViewAsync(this SimpleTracker tracker, string pageTitle, string pageUrl, IDictionary <int, string?>?customDimensions = null, IDictionary <int, long?>?customMetrics = null)
    {
        var pageViewParameters = new PageView
        {
            DocumentTitle       = pageTitle,
            DocumentLocationUrl = pageUrl
        };

        pageViewParameters.SetCustomDimensions(customDimensions);
        if (customMetrics != null)
        {
            pageViewParameters.SetCustomMetrics(customMetrics);
        }

        return(await tracker.TrackAsync(pageViewParameters));
    }
Esempio n. 11
0
        static Analytics()
        {
            if (Settings.Default.GUID.ToString() == "00000000-0000-0000-0000-000000000000")
            {
                Settings.Default.GUID = Guid.NewGuid();
                Settings.Default.Save();
            }
            OperatingSystem os = Environment.OSVersion;

            trackerEnvironment = new SimpleTrackerEnvironment(os.Platform.ToString(), os.Version.ToString(), os.VersionString);
            tracker            = new SimpleTracker("UA-125850339-2", trackerEnvironment);
            CustomDimensions   = new Dictionary <int, string>
            {
            };
            AppVersion = MainForm.VERSION;
        }
Esempio n. 12
0
    public static async Task <TrackingResult> TrackEventAsync(this SimpleTracker tracker, string category, string action, string label, IDictionary <int, string?>?customDimensions = null, IDictionary <int, long?>?customMetrics = null, long value = 1)
    {
        var eventTrackingParameters = new EventTracking
        {
            Category = category,
            Action   = action,
            Label    = label,
            Value    = value
        };

        eventTrackingParameters.SetCustomDimensions(customDimensions);
        if (customMetrics != null)
        {
            eventTrackingParameters.SetCustomMetrics(customMetrics);
        }

        return(await tracker.TrackAsync(eventTrackingParameters));
    }
    public static async void TrackFeature(string FeatureCustom)
    {
        if (!string.IsNullOrEmpty(_GoogleAnayticsPropertyID))
        {
            SimpleTrackerEnvironment trackerEnvironment = new SimpleTrackerEnvironment(Environment.OSVersion.Platform.ToString(),
                                                                                       Environment.OSVersion.Version.ToString(),
                                                                                       Environment.OSVersion.VersionString);

            // Overwrite platform details
            KeyValuePair <string, string> kvpOSSpecs = GetOperatingSystemProductName();
            trackerEnvironment.OsPlatform = kvpOSSpecs.Key;
            trackerEnvironment.OsVersion  = kvpOSSpecs.Value;

            SimpleTracker tracker = new SimpleTracker(_GoogleAnayticsPropertyID, _Session, trackerEnvironment);

            await tracker.TrackPageViewAsync(System.AppDomain.CurrentDomain.FriendlyName, FeatureCustom, _CustomDimensions);
        }
    }
Esempio n. 14
0
        public static async Task <TrackingResult> TrackScreenviewAsync(this SimpleTracker tracker, string screen)
        {
            var screenViewTrackingParameters = new ScreenviewTracking
            {
                ClientId           = Analytics.GUID,
                UserId             = Analytics.GUID,
                ApplicationName    = "FTAnalyzer",
                ApplicationVersion = Analytics.AppVersion,
                ScreenName         = screen,
                CacheBuster        = tracker.AnalyticsSession.GenerateCacheBuster(),
                ScreenResolution   = Analytics.Resolution,
                CustomDimension1   = Analytics.DeploymentType,
                CustomDimension2   = Analytics.OSVersion,
                CustomDimension3   = Analytics.GUID,
                GoogleAdWordsId    = "201-455-7333",
                UserLanguage       = CultureInfo.CurrentUICulture.EnglishName
            };

            return(await tracker.TrackAsync(screenViewTrackingParameters).ConfigureAwait(false));
        }
    public static async Task <TrackingResult> TrackScreenviewAsync(this SimpleTracker tracker, string appName,
                                                                   string appId, string appVersion, string appInstallerId, string screenName, IDictionary <int, string?>?customDimensions = null, IDictionary <int, long?>?customMetrics = null)
    {
        var screenviewParameters = new ScreenviewTracking
        {
            ApplicationName        = appName,
            ApplicationId          = appId,
            ApplicationVersion     = appVersion,
            ApplicationInstallerId = appInstallerId,
            ScreenName             = screenName
        };

        screenviewParameters.SetCustomDimensions(customDimensions);
        if (customMetrics != null)
        {
            screenviewParameters.SetCustomMetrics(customMetrics);
        }

        return(await tracker.TrackAsync(screenviewParameters));
    }
Esempio n. 16
0
        static Analytics()
        {
            var userDefaults = new NSUserDefaults();

            GUID = userDefaults.StringForKey("AnalyticsKey");
            if (string.IsNullOrEmpty(GUID))
            {
                GUID = Guid.NewGuid().ToString();
                userDefaults.SetString(GUID, "AnalyticsKey");
                userDefaults.Synchronize();
            }
            NSProcessInfo info = new NSProcessInfo();

            OSVersion          = $"MacOSX {info.OperatingSystemVersionString}";
            trackerEnvironment = new SimpleTrackerEnvironment("Mac OSX", info.OperatingSystemVersion.ToString(), OSVersion);
            tracker            = new SimpleTracker("UA-125850339-2", trackerEnvironment);
            var app = (AppDelegate)NSApplication.SharedApplication.Delegate;

            AppVersion = app.Version;
        }
Esempio n. 17
0
        public static async Task <TrackingResult> TrackScreenviewAsync(this SimpleTracker tracker, string screen)
        {
            string resolution = NSScreen.MainScreen.Frame.ToString();
            var    screenViewTrackingParameters = new ScreenviewTracking
            {
                ClientId = Analytics.GUID,
                UserId   = Analytics.GUID,

                ApplicationName    = "FTAnalyzer",
                ApplicationVersion = Analytics.AppVersion,
                ScreenName         = screen,
                ScreenResolution   = resolution.Length > 11 ? resolution.Substring(9, resolution.Length - 10) : resolution,
                CacheBuster        = tracker.AnalyticsSession.GenerateCacheBuster(),
                CustomDimension1   = Analytics.DeploymentType,
                CustomDimension2   = Analytics.OSVersion,
                GoogleAdWordsId    = "201-455-7333",
                UserLanguage       = CultureInfo.CurrentUICulture.EnglishName
            };

            return(await tracker.TrackAsync(screenViewTrackingParameters));
        }
Esempio n. 18
0
        public static async Task <TrackingResult> TrackEventAsync(this SimpleTracker tracker, string category, string action, string label, long value = 1)
        {
            var eventTrackingParameters = new EventTracking
            {
                ClientId           = Analytics.GUID,
                UserId             = Analytics.GUID,
                ApplicationName    = "FTAnalyzer",
                ApplicationVersion = Analytics.AppVersion,
                Category           = category,
                Action             = action,
                Label            = label,
                Value            = value,
                ScreenName       = category,
                CacheBuster      = tracker.AnalyticsSession.GenerateCacheBuster(),
                ScreenResolution = Analytics.Resolution,
                CustomDimension1 = Analytics.DeploymentType,
                CustomDimension2 = Analytics.OSVersion,
                CustomDimension3 = Analytics.GUID,
                GoogleAdWordsId  = "201-455-7333",
                UserLanguage     = CultureInfo.CurrentUICulture.EnglishName
            };

            return(await tracker.TrackAsync(eventTrackingParameters).ConfigureAwait(false));
        }
Esempio n. 19
0
        public static Task TrackEvent(string category, string action, string label)
        {
            SimpleTracker tracker = Get();

            return(tracker.TrackEventAsync(category, action, label, new Dictionary <int, string>()));
        }
Esempio n. 20
0
        public static Task TrackPage(string name, string path)
        {
            SimpleTracker tracker = Get();

            return(tracker.TrackPageViewAsync(name, path, new Dictionary <int, string>()));
        }