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); }