private void btnSearch_Click(object sender, EventArgs e) { var keywords = tbSearchField.Text.Replace("\r\n", "").Split(','); if (keywords.Length == 0) { MessageBox.Show("Please input keywords, Separated by commas"); return; } var res = RescueTimeAPI.GetAllActivityData(DateTime.Now.AddMonths(-3), DateTime.Now); var result = res.Where(x => keywords.Any(s => s.Equals(x.Activity, StringComparison.OrdinalIgnoreCase)) || keywords.Any(s => s.Equals(x.Category, StringComparison.OrdinalIgnoreCase)) || (x.Activity == "Google Chrome" && keywords.Any(s => s.Equals(x.Document, StringComparison.OrdinalIgnoreCase))) ); var strResult = result.GroupBy(x => x.Category).Select(g => new { Activity = g.First().Activity, Category = g.Key, TimeSpent = g.Sum(x => x.TimeSpent) }) .Select(s => $"Activity: {s.Activity} Category: {s.Category} TimeSpent: {s.TimeSpent}" ).ToList(); tbSearchResult.DataSource = strResult; }
public void CheckTimeSpendIsExceedByAlertTypeAndPeriodTest() { List <ApiActivityResponse> MockData = RescueTimeAPI.ConvertStringArrayToClass(jsonString); ConfigModel.AlertRule alertRule = new ConfigModel.AlertRule(); alertRule.Hour = 1; alertRule.Minute = 0; alertRule.AlertType = EnumModule.AlertType.SpecificCategoryOrActivity; alertRule.SpecificName = new string[] { "ptt.cc", "ptt.cc - Google Chrome", "PttChrome - Google Chrome", "批踢踢實業坊" }; alertRule.PeriodName = new String[] { "全天" }; alertRule.EnablePeriodName = new string[] { "全天" }; alertRule.EnableDays = new List <EnumModule.WeekDays>() { EnumModule.WeekDays.Monday, EnumModule.WeekDays.Tuesday, EnumModule.WeekDays.Wednesday, EnumModule.WeekDays.Thursday, EnumModule.WeekDays.Friday, EnumModule.WeekDays.Saturday, EnumModule.WeekDays.Sunday }; bool result = new Alert().CheckTimeSpendIsExceedByAlertTypeAndPeriod(alertRule, MockData); Assert.IsInstanceOfType(result, typeof(Boolean)); }