public CompleteScoreboardSummary WithFilter(ScoreboardFilterInfo filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } if (Filter.Division.HasValue && Filter.Division != filter.Division) { throw new ArgumentException("Cannot change an existing DivisionFilter."); } if (Filter.Tier.HasValue && Filter.Tier != filter.Tier) { throw new ArgumentException("Cannot change an existing TierFilter."); } IEnumerable <ScoreboardSummaryEntry> newTeamList = TeamList; if (filter.Division.HasValue) { newTeamList = newTeamList.Where(summary => summary.Division == filter.Division.Value); } if (filter.Tier.HasValue) { newTeamList = newTeamList.Where(summary => summary.Tier == filter.Tier.Value); } Filter = filter; TeamList = newTeamList as IList <ScoreboardSummaryEntry> ?? newTeamList.ToList(); return(this); }
public ScoreboardFilterInfo WithAdditionalFiltering(ScoreboardFilterInfo addition) { var newFilter = new ScoreboardFilterInfo(); if (addition.Division.HasValue && Division.HasValue && addition.Division.Value != Division.Value) { throw new ArgumentException("An existing filter parameter cannot be changed."); } newFilter.Division = addition.Division ?? Division; if (addition.Tier.HasValue && Tier.HasValue && addition.Tier.Value != Tier.Value) { throw new ArgumentException("An existing filter parameter cannot be changed."); } newFilter.Tier = addition.Tier ?? Tier; if (addition.Category.HasValue && Category.HasValue && addition.Category.Value != Category.Value) { throw new ArgumentException("An existing filter parameter cannot be changed."); } newFilter.Category = addition.Category ?? Category; if (addition.Location != null && Location != null && addition.Location != Location) { throw new ArgumentException("An existing filter parameter cannot be changed."); } newFilter.Location = addition.Location ?? Location; return(newFilter); }