1: /// <summary>
2: /// Google Analytics auditor.
3: /// </summary>
4: public class GoogleAnalytics : AuditorBase
5: {
6: private readonly ApplicationTracker _appTracker;
7:
8: public GoogleAnalytics(string apiKey, string applicationName)
9: {
10: Argument.IsNotNull("apiKey", apiKey);
11: Argument.IsNotNull("applicationName", applicationName);
12:
13: _appTracker = new ApplicationTracker(apiKey, applicationName);
14: _appTracker.StartSession();
15: }
16:
17: public override void OnCommandExecuted(IViewModel viewModel, string commandName, ICatelCommand command, object commandParameter)
18: {
19: _appTracker.TrackEvent(ApplicationTrackerCategories.Command, string.Format("{0}.{1}", viewModel.GetType().Name, commandName));
20: }
21:
22: public override void OnViewModelCreated(Type viewModelType)
23: {
24: _appTracker.TrackPageView(viewModelType.Name);
25:
26: _appTracker.TrackCustomEvent("ViewModel.Created", viewModelType.Name);
27: }
28:
29: public override void OnViewModelCanceled(IViewModel viewModel)
30: {
31: _appTracker.TrackCustomEvent("ViewModel.Canceled", viewModel.GetType().Name);
32: }
33:
34: public override void OnViewModelSaved(IViewModel viewModel)
35: {
36: _appTracker.TrackCustomEvent("ViewModel.Saved", viewModel.GetType().Name);
37: }
38:
39: public override void OnViewModelClosed(IViewModel viewModel)
40: {
41: _appTracker.TrackCustomEvent("ViewModel.Closed", viewModel.GetType().Name);
42: }
43: }