コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }