Exemplo n.º 1
0
        private static void SaveForegroundWindowToDb()
        {
            var windowName = TimeTrackingTools.GetTitleOfWindowInForeground();

            var context = new TimeTrackingContext();

            try
            {
                var lowerDayLimit = DateTime.UtcNow.Date;
                var upperDayLimit = DateTime.UtcNow.AddDays(1).Date;

                var lastEntry = context.UsageTime
                                .Where(x => x.ApplicationIdentification == windowName && x.StartTime >= lowerDayLimit &&
                                       x.StartTime < upperDayLimit).OrderByDescending(x => x.StartTime).FirstOrDefault();

                if (lastEntry == null ||
                    (DateTime.UtcNow - lastEntry.StartTime.ToUniversalTime().AddSeconds(lastEntry.Duration))
                    .TotalSeconds > 15)
                {
                    context.UsageTime.Add(new UsageTime()
                    {
                        StartTime = DateTime.UtcNow,
                        ApplicationIdentification = windowName,
                        Duration = 10,
                    });

                    context.SaveChanges();
                }
                else
                {
                    lastEntry.Duration += 10;

                    context.SaveChanges();
                }
            }
            finally
            {
                context.Dispose();
            }
        }
        private static void LogForegroundWindow()
        {
            var windowName = TimeTrackingTools.GetTitleOfWindowInForeground();

            Logger.Log(LogLevel.Info, windowName);
        }