/// <summary> /// Fetches meetings from the DB /// (hint: no API calls are made, meetings are only fetched if they are already stored) /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedMeetings(DateTimeOffset date) { var list = new List <TimeSpentItem>(); var meetingsFromDb = Queries.GetMeetingsFromDatabase(date); // if already saved, get it from the database (if not today) if (meetingsFromDb != null && meetingsFromDb.Count > 0) { foreach (var w in meetingsFromDb) { // hide day or longer meetings if (w.Item3 >= 24 * 60) { continue; } // hide meetings which not yet occurred if (w.Item2 > DateTime.Now) { continue; } var item = new TimeSpentItem(TimeSpentType.Meeting, w.Item1, w.Item3); list.Add(item); } } return(list); }
/// <summary> /// Fetches information about the time spent in Outlook /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedOutlookInfo(DateTimeOffset date) { var emailDetails = WindowTitleEmailExtractor.GetTimeSpentInOutlook(date); var list = new List <TimeSpentItem>(); foreach (var p in emailDetails) { var item = new TimeSpentItem(TimeSpentType.Outlook, p.ItemName, p.DurationInMins); list.Add(item); } return(list.Where(w => w.DurationInMins > MinDurationInMins).ToList()); }
/// <summary> /// Fetches code reviews, cleanes them for the MinDuration. /// Hint: no need to sort, as they already comed sorted by duration. /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedCodeReviewsDone(DateTimeOffset date) { var maxCodeReviews = 15; var reviews = WindowTitleCodeExtractor.GetCodeReviewsDone(date); var list = new List <TimeSpentItem>(); foreach (var p in reviews) { var item = new TimeSpentItem(TimeSpentType.CodeReview, p.Key, p.Value); list.Add(item); } return(list.Where(w => w.DurationInMins > MinDurationInMins).Take(maxCodeReviews).ToList()); }
/// <summary> /// Fetches VS projects, cleanes them for the MinDuration. /// Hint: no need to sort, as they already comed sorted by duration. /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedVisualStudioProjects(DateTimeOffset date) { var maxVsProjects = 10; var vsProjects = WindowTitleCodeExtractor.GetVisualStudioProjects(date); var list = new List <TimeSpentItem>(); foreach (var p in vsProjects) { var item = new TimeSpentItem(TimeSpentType.VsProject, p.Key, p.Value); list.Add(item); } return(list.Where(w => w.DurationInMins > MinDurationInMins).Take(maxVsProjects).ToList()); }
/// <summary> /// Fetches the visited websites, cleanes it for the MinDuration. /// Hint: no need to sort, as they already comed sorted by duration. /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedWebsites(DateTimeOffset date) { var maxWebsites = 25; var websites = WindowTitleWebsitesExtractor.GetWebsitesVisited(date); var websitesFiltered = websites.Where(w => w.DurationInMins > MinDurationInMins).Take(maxWebsites).ToList(); var list = new List <TimeSpentItem>(); foreach (var w in websitesFiltered) { var item = new TimeSpentItem(TimeSpentType.Website, w.ItemName, w.DurationInMins); list.Add(item); } return(list); }
/// <summary> /// Fetches programs used for the date /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedPrograms(DateTimeOffset date) { var programs = Queries.GetActivityPieChartData(date); var list = new List <TimeSpentItem>(); foreach (var p in programs) { var item = new TimeSpentItem(TimeSpentType.Programs, p.Key, p.Value); list.Add(item); } var sortedList = list.OrderByDescending(i => i.DurationInMins).ToList(); return(sortedList.Where(w => w.DurationInMins > MinDurationInMins).ToList()); }
/// <summary> /// Fetches files, cleanes them for the MinDuration. /// Hint: no need to sort, as they already comed sorted by duration. /// </summary> /// <param name="date"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedFilesWorkedOn(DateTimeOffset date) { var maxFiles = 20; var files = WindowTitleArtifactExtractor.GetFilesWorkedOn(date); var filesFiltered = files.Where(w => w.DurationInMins > MinDurationInMins).Take(maxFiles).ToList(); var list = new List <TimeSpentItem>(); foreach (var w in filesFiltered) { var title = w.FileName; // + w.FilePath; var item = new TimeSpentItem(TimeSpentType.File, title, w.DurationInMins); list.Add(item); } return(list); //WindowTitleArtifactExtractor.GetFileExtensionFromFileName(file.FileName), // WindowTitleArtifactExtractor.GetFileNameWithoutExtension(file.FileName), // Math.Round(file.DurationInMins, 1)); }
/// <summary> /// Fetches meetings from the DB /// (hint: no API calls are made, meetings are only fetched if they are already stored) /// </summary> /// <param name="date"></param> /// <param name="hideMeetingsWithoutAttendees"></param> /// <returns></returns> internal static List <TimeSpentItem> GetCleanedMeetings(DateTimeOffset date, bool hideMeetingsWithoutAttendees) { var meetingsFromDb = Queries.GetMeetingsFromDatabase(date); // if already saved, get it from the database (if not today) var list = new List <TimeSpentItem>(); if (meetingsFromDb == null || meetingsFromDb.Count <= 0) { return(list); } foreach (var w in meetingsFromDb) { // hide day or longer meetings if (w.Item3 >= 24 * 60) { continue; } // hide meetings which not yet occurred if (w.Item2 > DateTime.Now) { continue; } // (optionally) hide meetings where no attendees if (hideMeetingsWithoutAttendees && w.Item4 == 0) { continue; } var item = new TimeSpentItem(TimeSpentType.Meeting, w.Item1, w.Item3); list.Add(item); } return(list); }