Пример #1
0
        private IEnumerable <GameStats> FilterGames(IEnumerable <GameStats> games)
        {
            var selectedGameMode = (GameMode)ComboboxGameMode.SelectedItem;
            var noteFilter       = TextboxNoteFilter.Text;
            var comboboxString   = (TimeFrame)ComboboxTime.SelectedItem;

            var endTime   = DateTime.Today + new TimeSpan(0, 23, 59, 59, 999);
            var startTime = DateTime.Today;

            switch (comboboxString)
            {
            case TimeFrame.Today:
                endTime = DateTime.Now;
                break;

            case TimeFrame.Yesterday:
                startTime -= new TimeSpan(1, 0, 0, 0);
                endTime   -= new TimeSpan(1, 0, 0, 0);
                break;

            case TimeFrame.Last24Hours:
                startTime = DateTime.Now - new TimeSpan(1, 0, 0, 0);
                endTime   = DateTime.Now;
                break;

            case TimeFrame.ThisWeek:
                startTime -= new TimeSpan(((int)(startTime.DayOfWeek) - 1), 0, 0, 0);
                break;

            case TimeFrame.PreviousWeek:
                startTime -= new TimeSpan(7 + ((int)(startTime.DayOfWeek) - 1), 0, 0, 0);
                endTime   -= new TimeSpan(((int)(endTime.DayOfWeek)), 0, 0, 0);
                break;

            case TimeFrame.Last7Days:
                startTime -= new TimeSpan(7, 0, 0, 0);
                break;

            case TimeFrame.ThisMonth:
                startTime -= new TimeSpan(startTime.Day - 1, 0, 0, 0);
                break;

            case TimeFrame.PreviousMonth:
                startTime -= new TimeSpan(startTime.Day - 1 + DateTime.DaysInMonth(startTime.AddMonths(-1).Year, startTime.AddMonths(-1).Month), 0,
                                          0, 0);
                endTime -= new TimeSpan(endTime.Day, 0, 0, 0);
                break;

            case TimeFrame.ThisYear:
                startTime -= new TimeSpan(startTime.DayOfYear - 1, 0, 0, 0);
                break;

            case TimeFrame.PreviousYear:
                startTime -= new TimeSpan(startTime.DayOfYear - 1 + (DateTime.IsLeapYear(startTime.Year) ? 366 : 365), 0, 0, 0);
                endTime   -= new TimeSpan(startTime.DayOfYear, 0, 0, 0);
                break;

            case TimeFrame.AllTime:
                startTime = new DateTime();
                break;
            }

            return
                (games.Where(
                     g =>
                     (g.GameMode == selectedGameMode || selectedGameMode == GameMode.All) && g.StartTime >= startTime &&
                     g.StartTime <= endTime &&
                     (g.Note == null && noteFilter == string.Empty ||
                      g.Note != null && g.Note.ToLowerInvariant().Contains(noteFilter.ToLowerInvariant()))));
        }