Ejemplo n.º 1
0
 public BrowseActivityRecordsForDayRecordPanelHandler(
     IActivityRecordsRepository activityRecordsRepository,
     ActivityRecordWithActivityToActivityRecordForDayRecordPanelMapper activityRecordForDayRecordPanelMapper)
 {
     _activityRecordsRepository             = activityRecordsRepository ?? throw new ArgumentNullException(nameof(activityRecordsRepository));
     _activityRecordForDayRecordPanelMapper = activityRecordForDayRecordPanelMapper ?? throw new ArgumentNullException(nameof(activityRecordForDayRecordPanelMapper));
 }
Ejemplo n.º 2
0
 public UserActivityLogViewModel(
     IActivityRecordsRepository activityRecordsRepository,
     IUserActivityTracker activityTracker)
 {
     _activityRecordsRepository = activityRecordsRepository;
     _activityTracker = activityTracker;
     DisplayName = "Activity Log";
 }
Ejemplo n.º 3
0
 public UserActivityLogViewModel(
     IActivityRecordsRepository activityRecordsRepository,
     IUserActivityTracker activityTracker)
 {
     _activityRecordsRepository = activityRecordsRepository;
     _activityTracker           = activityTracker;
     DisplayName = "Activity Log";
 }
Ejemplo n.º 4
0
 public DeleteActivityRecordHandler(
     IActivityRecordsRepository activityRecordsRepository,
     ActivityRecordsDeleter activityRecordsDeleter,
     LifeLogContext lifeLogContext)
 {
     _activityRecordsRepository = activityRecordsRepository ?? throw new ArgumentNullException(nameof(activityRecordsRepository));
     _activityRecordsDeleter    = activityRecordsDeleter ?? throw new ArgumentNullException(nameof(activityRecordsDeleter));
     _lifeLogContext            = lifeLogContext ?? throw new ArgumentNullException(nameof(lifeLogContext));
 }
 public CreateOccurrenceActivityRecordHandler(
     IActivityRecordsRepository activityRecordsRepository,
     IActivitiesRepository activitiesRepository,
     LifeLogContext lifeLogContext,
     ActivityRecordCreator activityRecordCreator)
 {
     _activityRecordsRepository = activityRecordsRepository ?? throw new ArgumentNullException(nameof(activityRecordsRepository));
     _activitiesRepository      = activitiesRepository ?? throw new ArgumentNullException(nameof(activitiesRepository));
     _lifeLogContext            = lifeLogContext ?? throw new ArgumentNullException(nameof(lifeLogContext));
     _activityRecordCreator     = activityRecordCreator ?? throw new ArgumentNullException(nameof(activityRecordCreator));
 }
        public UnknownActivityNotificationPopupViewModel(
            IActivitiesRepository activitiesRepository,
            IActivityRecordsRepository activityRecordsRepository)
        {
            _activitiesRepository = activitiesRepository;
            _activityRecordsRepository = activityRecordsRepository;

            _activityRecords = new ObservableCollection<ActivityRecord>();

            OkCommand = new RelayCommand(UpdateActivityRecord, CanUpdateActivityRecord);
        }
        public UnknownActivityNotificationPopupViewModel(
            IActivitiesRepository activitiesRepository,
            IActivityRecordsRepository activityRecordsRepository)
        {
            _activitiesRepository      = activitiesRepository;
            _activityRecordsRepository = activityRecordsRepository;

            _activityRecords = new ObservableCollection <ActivityRecord>();

            OkCommand = new RelayCommand(UpdateActivityRecord, CanUpdateActivityRecord);
        }
Ejemplo n.º 8
0
        public DashboardViewModel(
            IActivityRecordsRepository activityRecordsRepository,
            IUserActivityTracker activityTracker,
            IActivityTrackingSettings settings,
            INotificationManager notificationManager)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _activityTracker = activityTracker;
            _settings = settings;
            _notificationManager = notificationManager;

            DisplayName = "Dashboard";
        }
Ejemplo n.º 9
0
        public DashboardViewModel(
            IActivityRecordsRepository activityRecordsRepository,
            IUserActivityTracker activityTracker,
            IActivityTrackingSettings settings,
            INotificationManager notificationManager)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _activityTracker           = activityTracker;
            _settings            = settings;
            _notificationManager = notificationManager;

            DisplayName = "Dashboard";
        }
Ejemplo n.º 10
0
        public UserActivityTracker(
            IActivityRecordsRepository activityRecordsRepository,
            IActivitiesRepository activitiesRepository,
            IActivityTrackingSettings settings,
            IUserInputTracker inputTracker)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _settings = settings;
            _inputTracker = inputTracker;

            List<Activity> activities = activitiesRepository.GetActivities().ToList();
            _defaultActivity = activities[0];
            _breakActivity = activities[1];
            _homeActivity = activities[5];
        }
Ejemplo n.º 11
0
        public UserActivityTracker(
            IActivityRecordsRepository activityRecordsRepository,
            IActivitiesRepository activitiesRepository,
            IActivityTrackingSettings settings,
            IUserInputTracker inputTracker)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _settings     = settings;
            _inputTracker = inputTracker;

            List <Activity> activities = activitiesRepository.GetActivities().ToList();

            _defaultActivity = activities[0];
            _breakActivity   = activities[1];
            _homeActivity    = activities[5];
        }
Ejemplo n.º 12
0
        public NotificationManager(
            IActivityRecordsRepository activityRecordsRepository,
            IUserActivityTracker userActivityTracker,
            IUnknownActivityNotificationPopupViewModel unknownActivityNotificationPopupViewModel)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _userActivityTracker       = userActivityTracker;

            _unknownActivityNotificationViewModel = unknownActivityNotificationPopupViewModel;
            _unknownActivityNotificationViewModel.AllRecordsUpdated += OnUnknownActivityAllRecordsUpdated;
            _unknownActivityNotificationViewModel.RecordUpdated     += OnUnknownActivityRecordUpdated;

            Stream iconStream = IoC.Get <IResourceManager>()
                                .GetStream(
                "Resources/UnknownActivityNotification.ico",
                Assembly.GetExecutingAssembly().GetAssemblyName());

            _unknownActivityNotification = new TaskbarIcon
            {
                Icon            = new Icon(iconStream),
                Popup           = _unknownActivityNotificationViewModel,
                PopupActivation = PopupActivationMode.All,
                ToolTipText     = "You've been missing too long. What've you been up to?"
            };

            iconStream = IoC.Get <IResourceManager>()
                         .GetStream("Resources/GoHome.ico", Assembly.GetExecutingAssembly().GetAssemblyName());

            _workdayEndedNotification = new TaskbarIcon
            {
                Icon        = new Icon(iconStream),
                ToolTipText = "You can go home now!"
            };

            _userActivityTracker.UnknownActivityLogged += OnUnknownActivityLogged;

            Task.Run(() => CheckRemainingWorkTime());
        }
Ejemplo n.º 13
0
        public NotificationManager(
            IActivityRecordsRepository activityRecordsRepository,
            IUserActivityTracker userActivityTracker,
            IUnknownActivityNotificationPopupViewModel unknownActivityNotificationPopupViewModel)
        {
            _activityRecordsRepository = activityRecordsRepository;
            _userActivityTracker = userActivityTracker;

            _unknownActivityNotificationViewModel = unknownActivityNotificationPopupViewModel;
            _unknownActivityNotificationViewModel.AllRecordsUpdated += OnUnknownActivityAllRecordsUpdated;
            _unknownActivityNotificationViewModel.RecordUpdated += OnUnknownActivityRecordUpdated;

            Stream iconStream = IoC.Get<IResourceManager>()
                .GetStream(
                    "Resources/UnknownActivityNotification.ico",
                    Assembly.GetExecutingAssembly().GetAssemblyName());

            _unknownActivityNotification = new TaskbarIcon
            {
                Icon = new Icon(iconStream),
                Popup = _unknownActivityNotificationViewModel,
                PopupActivation = PopupActivationMode.All,
                ToolTipText = "You've been missing too long. What've you been up to?"
            };

            iconStream = IoC.Get<IResourceManager>()
                .GetStream("Resources/GoHome.ico", Assembly.GetExecutingAssembly().GetAssemblyName());

            _workdayEndedNotification = new TaskbarIcon
            {
                Icon = new Icon(iconStream),
                ToolTipText = "You can go home now!"
            };

            _userActivityTracker.UnknownActivityLogged += OnUnknownActivityLogged;

            Task.Run(() => CheckRemainingWorkTime());
        }
Ejemplo n.º 14
0
 public ActivityRecordsDeleter(
     IActivityRecordsRepository activityRecordsRepository)
 {
     _activityRecordsRepository = activityRecordsRepository ?? throw new ArgumentNullException(nameof(activityRecordsRepository));
 }
Ejemplo n.º 15
0
        private static void LogUserActivity(
            IActivityRecordsRepository activityRecordsRepository,
            Action<ActivityRecord> setIdleRecordActivity,
            Activity defaultActivity,
            DateTime userInputStartTime,
            DateTime lastUserInputTime,
            DateTime currentTime,
            IActivityTrackingSettings settings,
            Action onActivityLogUpdated,
            Action<ActivityRecord> onUnknownActivityLogged)
        {
            var activeTime = lastUserInputTime - userInputStartTime;
            var idleTime = currentTime - lastUserInputTime;

            bool logUpdated = false;

            Action<ActivityRecord, Action<ActivityRecord>> addOrUpdateRecord = (record, addOrUpdate) =>
            {
                if (record.Idle)
                {
                    setIdleRecordActivity(record);
                }

                addOrUpdate(record);

                if (record.Idle && record.Activity == null)
                {
                    onUnknownActivityLogged(record);
                }

                logUpdated = true;
            };

            Action<ActivityRecord> addRecord = record => addOrUpdateRecord(record, activityRecordsRepository.Add);
            Action<ActivityRecord> updateRecord = record => addOrUpdateRecord(record, activityRecordsRepository.Update);

            try
            {
                ActivityRecord lastRecord = activityRecordsRepository.GetLastRecord();

                if (lastRecord != null)
                {
                    TimeSpan idleTimeAfterLastRecord = userInputStartTime - lastRecord.EndTime;

                    if (lastRecord.Idle)
                    {
                        // Cannot log this yet. Not enough data.
                        if (activeTime < settings.MinimumActivityDuration && idleTime < settings.MinimumIdleDuration)
                        {
                            return;
                        }

                        if (activeTime < settings.MinimumActivityDuration)
                        {
                            lastRecord.EndTime = currentTime;
                            updateRecord(lastRecord);

                            return;
                        }

                        if (idleTimeAfterLastRecord.TotalMilliseconds > 0)
                        {
                            lastRecord.EndTime = userInputStartTime;
                            updateRecord(lastRecord);
                        }
                    }
                    else
                    {
                        if (idleTimeAfterLastRecord >= settings.MinimumIdleDuration)
                        {
                            var newIdleRecord = new ActivityRecord
                            {
                                StartTime = lastRecord.EndTime,
                                EndTime = userInputStartTime,
                                Idle = true,
                            };

                            addRecord(newIdleRecord);
                        }
                        else
                        {
                            lastRecord.EndTime = lastUserInputTime;
                            updateRecord(lastRecord);
                            activeTime = TimeSpan.Zero;
                        }
                    }
                }

                if (activeTime < settings.MinimumActivityDuration && idleTime < settings.MinimumIdleDuration)
                {
                    return;
                }

                if (activeTime >= settings.MinimumActivityDuration)
                {
                    addRecord(
                        new ActivityRecord
                        {
                            StartTime = userInputStartTime,
                            EndTime = lastUserInputTime,
                            Idle = false,
                            Activity = defaultActivity
                        });
                }
                else if (activeTime != TimeSpan.Zero)
                {
                    idleTime += activeTime;
                    lastUserInputTime = userInputStartTime;
                }

                if (idleTime < settings.MinimumIdleDuration)
                {
                    return;
                }

                var idleRecord = new ActivityRecord
                {
                    StartTime = lastUserInputTime,
                    EndTime = currentTime,
                    Idle = true,
                    Activity = defaultActivity
                };

                addRecord(idleRecord);
            }
            finally
            {
                if (logUpdated)
                {
                    onActivityLogUpdated();
                }
            }
        }
Ejemplo n.º 16
0
        private static void LogUserActivity(
            IActivityRecordsRepository activityRecordsRepository,
            Action <ActivityRecord> setIdleRecordActivity,
            Activity defaultActivity,
            DateTime userInputStartTime,
            DateTime lastUserInputTime,
            DateTime currentTime,
            IActivityTrackingSettings settings,
            Action onActivityLogUpdated,
            Action <ActivityRecord> onUnknownActivityLogged)
        {
            var activeTime = lastUserInputTime - userInputStartTime;
            var idleTime   = currentTime - lastUserInputTime;

            bool logUpdated = false;

            Action <ActivityRecord, Action <ActivityRecord> > addOrUpdateRecord = (record, addOrUpdate) =>
            {
                if (record.Idle)
                {
                    setIdleRecordActivity(record);
                }

                addOrUpdate(record);

                if (record.Idle && record.Activity == null)
                {
                    onUnknownActivityLogged(record);
                }

                logUpdated = true;
            };

            Action <ActivityRecord> addRecord    = record => addOrUpdateRecord(record, activityRecordsRepository.Add);
            Action <ActivityRecord> updateRecord = record => addOrUpdateRecord(record, activityRecordsRepository.Update);

            try
            {
                ActivityRecord lastRecord = activityRecordsRepository.GetLastRecord();

                if (lastRecord != null)
                {
                    TimeSpan idleTimeAfterLastRecord = userInputStartTime - lastRecord.EndTime;

                    if (lastRecord.Idle)
                    {
                        // Cannot log this yet. Not enough data.
                        if (activeTime < settings.MinimumActivityDuration && idleTime < settings.MinimumIdleDuration)
                        {
                            return;
                        }

                        if (activeTime < settings.MinimumActivityDuration)
                        {
                            lastRecord.EndTime = currentTime;
                            updateRecord(lastRecord);

                            return;
                        }

                        if (idleTimeAfterLastRecord.TotalMilliseconds > 0)
                        {
                            lastRecord.EndTime = userInputStartTime;
                            updateRecord(lastRecord);
                        }
                    }
                    else
                    {
                        if (idleTimeAfterLastRecord >= settings.MinimumIdleDuration)
                        {
                            var newIdleRecord = new ActivityRecord
                            {
                                StartTime = lastRecord.EndTime,
                                EndTime   = userInputStartTime,
                                Idle      = true,
                            };

                            addRecord(newIdleRecord);
                        }
                        else
                        {
                            lastRecord.EndTime = lastUserInputTime;
                            updateRecord(lastRecord);
                            activeTime = TimeSpan.Zero;
                        }
                    }
                }

                if (activeTime < settings.MinimumActivityDuration && idleTime < settings.MinimumIdleDuration)
                {
                    return;
                }

                if (activeTime >= settings.MinimumActivityDuration)
                {
                    addRecord(
                        new ActivityRecord
                    {
                        StartTime = userInputStartTime,
                        EndTime   = lastUserInputTime,
                        Idle      = false,
                        Activity  = defaultActivity
                    });
                }
                else if (activeTime != TimeSpan.Zero)
                {
                    idleTime         += activeTime;
                    lastUserInputTime = userInputStartTime;
                }

                if (idleTime < settings.MinimumIdleDuration)
                {
                    return;
                }

                var idleRecord = new ActivityRecord
                {
                    StartTime = lastUserInputTime,
                    EndTime   = currentTime,
                    Idle      = true,
                    Activity  = defaultActivity
                };

                addRecord(idleRecord);
            }
            finally
            {
                if (logUpdated)
                {
                    onActivityLogUpdated();
                }
            }
        }