public async Task <IActionResult> Index() { List <string> factionOptions = new List <string>() { StaticDetails.AllFactions }; List <string> themeOptions = new List <string>() { StaticDetails.AllThemes }; List <string> casterOptions = new List <string>() { StaticDetails.AllCasters }; List <Faction> factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(); foreach (Faction faction in factions) { factionOptions.Add(faction.Name); } BattleReportsListViewModel viewModel = new BattleReportsListViewModel() { BattleReports = await _db.BattleReports.Where(br => br.ConfirmedByOpponent).OrderByDescending(br => br.DatePlayed).ToListAsync(), TimePeriod = StaticDetails.AllTime, TimePeriodOptions = StaticDetails.TimePeriodOptions, P1Faction = StaticDetails.AllFactions, FactionOptions = factionOptions, P1Theme = StaticDetails.AllThemes, P1ThemeOptions = themeOptions, P1Caster = StaticDetails.AllCasters, P1CasterOptions = casterOptions, P2Faction = StaticDetails.AllFactions, P2Theme = StaticDetails.AllThemes, P2ThemeOptions = themeOptions, P2Caster = StaticDetails.AllCasters, P2CasterOptions = casterOptions, GameSizeOptions = StaticDetails.GameSizeFilterOptions, GameSize = StaticDetails.AllGameSizes, EndConditionOptions = StaticDetails.EndconditionFilterOptions, EndCondition = StaticDetails.AllEndConditions, ScenarioOptions = StaticDetails.ScenarioFilterOptions, Scenario = StaticDetails.AllScenarios, HideFilters = true }; return(View(viewModel)); }
public async Task <IActionResult> Index(BattleReportsListViewModel viewModel) { var filteredBattleReports = _db.BattleReports.AsQueryable(); viewModel.TimePeriodOptions = StaticDetails.TimePeriodOptions; List <Faction> factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(); List <Theme> themes = await _db.Themes.ToListAsync(); List <Caster> casters = await _db.Casters.ToListAsync(); viewModel.FactionOptions = new List <string>() { StaticDetails.AllFactions }; foreach (Faction faction in factions) { viewModel.FactionOptions.Add(faction.Name); } viewModel.P1ThemeOptions = new List <string>() { StaticDetails.AllThemes }; viewModel.P1CasterOptions = new List <string>() { StaticDetails.AllCasters }; viewModel.P2ThemeOptions = new List <string>() { StaticDetails.AllThemes }; viewModel.P2CasterOptions = new List <string>() { StaticDetails.AllCasters }; viewModel.GameSizeOptions = StaticDetails.GameSizeFilterOptions; viewModel.EndConditionOptions = StaticDetails.EndconditionFilterOptions; viewModel.ScenarioOptions = StaticDetails.ScenarioFilterOptions; if (viewModel.TimePeriod == StaticDetails.LastYear) { filteredBattleReports = filteredBattleReports.Where(br => br.DatePlayed > DateTime.Today.AddYears(-1)); } else if (viewModel.TimePeriod == StaticDetails.Last6Months) { filteredBattleReports = filteredBattleReports.Where(br => br.DatePlayed > DateTime.Today.AddMonths(-6)); } else if (viewModel.TimePeriod == StaticDetails.LastMonth) { filteredBattleReports = filteredBattleReports.Where(br => br.DatePlayed > DateTime.Today.AddMonths(-1)); } if (viewModel.P1Faction != StaticDetails.AllFactions) { Faction faction = factions.First(f => f.Name == viewModel.P1Faction); List <Theme> factionThemes = themes.Where(t => t.FactionId == faction.Id).OrderBy(t => t.Name).ToList(); foreach (Theme theme in factionThemes) { viewModel.P1ThemeOptions.Add(theme.Name); } List <Caster> factionCasters = casters.Where(c => c.FactionId == faction.Id).OrderBy(c => c.Name).ToList(); foreach (Caster caster in factionCasters) { viewModel.P1CasterOptions.Add(caster.Name); } } if (viewModel.P2Faction != StaticDetails.AllFactions) { Faction faction = factions.First(f => f.Name == viewModel.P2Faction); List <Theme> factionThemes = themes.Where(t => t.FactionId == faction.Id).OrderBy(t => t.Name).ToList(); foreach (Theme theme in factionThemes) { viewModel.P2ThemeOptions.Add(theme.Name); } List <Caster> enemyCasters = casters.Where(c => c.FactionId == faction.Id).OrderBy(c => c.Name).ToList(); foreach (Caster caster in enemyCasters) { viewModel.P2CasterOptions.Add(caster.Name); } } if (viewModel.P1Faction != StaticDetails.AllFactions) { if (viewModel.P1Theme != StaticDetails.AllThemes && viewModel.P1Caster != StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P1Faction && br.PostersTheme == viewModel.P1Theme && br.PostersCaster == viewModel.P1Caster) || (br.OpponentsFaction == viewModel.P1Faction && br.OpponentsTheme == viewModel.P1Theme && br.OpponentsCaster == viewModel.P1Caster)); } else if (viewModel.P1Theme != StaticDetails.AllThemes && viewModel.P1Caster == StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P1Faction && br.PostersTheme == viewModel.P1Theme) || (br.OpponentsFaction == viewModel.P1Faction && br.OpponentsTheme == viewModel.P1Theme)); } else if (viewModel.P1Theme == StaticDetails.AllThemes && viewModel.P1Caster != StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P1Faction && br.PostersCaster == viewModel.P1Caster) || (br.OpponentsFaction == viewModel.P1Faction && br.OpponentsCaster == viewModel.P1Caster)); } else if (viewModel.P1Theme == StaticDetails.AllThemes && viewModel.P1Caster == StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P1Faction) || (br.OpponentsFaction == viewModel.P1Faction)); } } if (viewModel.P2Faction != StaticDetails.AllFactions) { if (viewModel.P2Theme != StaticDetails.AllThemes && viewModel.P2Caster != StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P2Faction && br.PostersTheme == viewModel.P2Theme && br.PostersCaster == viewModel.P2Caster) || (br.OpponentsFaction == viewModel.P2Faction && br.OpponentsTheme == viewModel.P2Theme && br.OpponentsCaster == viewModel.P2Caster)); } else if (viewModel.P2Theme != StaticDetails.AllThemes && viewModel.P2Caster == StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P2Faction && br.PostersTheme == viewModel.P2Theme) || (br.OpponentsFaction == viewModel.P2Faction && br.OpponentsTheme == viewModel.P2Theme)); } else if (viewModel.P2Theme == StaticDetails.AllThemes && viewModel.P2Caster != StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P2Faction && br.PostersCaster == viewModel.P2Caster) || (br.OpponentsFaction == viewModel.P2Faction && br.OpponentsCaster == viewModel.P2Caster)); } else if (viewModel.P2Theme == StaticDetails.AllThemes && viewModel.P2Caster == StaticDetails.AllCasters) { filteredBattleReports = filteredBattleReports.Where(br => (br.PostersFaction == viewModel.P2Faction) || (br.OpponentsFaction == viewModel.P2Faction)); } } if (viewModel.P1Faction != StaticDetails.AllFactions && viewModel.P1Faction == viewModel.P2Faction) { filteredBattleReports = filteredBattleReports.Where(br => br.PostersFaction == br.OpponentsFaction); } if (viewModel.P1Theme != StaticDetails.AllThemes && viewModel.P1Theme == viewModel.P2Theme) { filteredBattleReports = filteredBattleReports.Where(br => br.PostersTheme == br.OpponentsTheme); } if (viewModel.P1Caster != StaticDetails.AllCasters && viewModel.P1Caster == viewModel.P2Caster) { filteredBattleReports = filteredBattleReports.Where(br => br.PostersCaster == br.OpponentsCaster); } if (viewModel.GameSize != StaticDetails.AllGameSizes) { filteredBattleReports = filteredBattleReports.Where(br => br.GameSize.ToString() == viewModel.GameSize); } if (viewModel.EndCondition != StaticDetails.AllEndConditions) { filteredBattleReports = filteredBattleReports.Where(br => br.EndCondition == viewModel.EndCondition); } if (viewModel.Scenario != StaticDetails.AllScenarios) { filteredBattleReports = filteredBattleReports.Where(br => br.Scenario == viewModel.Scenario); } viewModel.BattleReports = await filteredBattleReports.ToListAsync(); return(View(viewModel)); }