Ejemplo n.º 1
0
        private void scenarioSearchBy_SelectedValueChanged(object sender, EventArgs e)
        {
            ComboBox comboBox = (ComboBox)sender;

            if (comboBox == null)
            {
                return;
            }

            ScenarioSearchType type = (ScenarioSearchType)comboBox.SelectedItem;

            if (type == ScenarioSearchType.HasBonusObjective)
            {
                textBoxSearchScenarios.Enabled = false;
                buttonSearchScenarios.PerformClick();
            }
            else
            {
                textBoxSearchScenarios.Enabled = true;
            }
        }
Ejemplo n.º 2
0
        private void buttonSearchScenarios_Click(object sender, EventArgs e)
        {
            ScenarioSearchType searchType = (ScenarioSearchType)comboBoxScenariosSearchBy.SelectedItem;

            switch (searchType)
            {
            case ScenarioSearchType.ByScenarioName:
                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Name?.ToLower(CultureInfo.InvariantCulture)
                        .Contains(textBoxSearchScenarios.Text.ToLower(CultureInfo.InvariantCulture)) == true)
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.ByScenarioId:
                int scenarioId;
                if (!int.TryParse(textBoxSearchScenarios.Text, out scenarioId))
                {
                    break;
                }

                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Id == scenarioId).Select(scenario => scenario.Value).ToList();
                break;

            case ScenarioSearchType.ByScenarioType:
            {
                int scenarioTypeId;
                if (!int.TryParse(textBoxSearchScenarios.Text, out scenarioTypeId))
                {
                    listBoxScenarios.DataSource = SearchByScenarioTypeDescription(textBoxSearchScenarios.Text);
                    break;
                }

                ScenarioType    type      = (ScenarioType)scenarioTypeId;
                List <Scenario> scenarios = Scenarios.Where(
                    scenario =>
                    scenario.Value.Type == type).Select(scenario => scenario.Value).ToList();

                if (!scenarios.Any())
                {
                    listBoxScenarios.DataSource = SearchByScenarioTypeDescription(textBoxSearchScenarios.Text);
                    break;
                }

                listBoxScenarios.DataSource = scenarios;
                break;
            }

            case ScenarioSearchType.ByScenarioStepName:
                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Any(
                            step =>
                            step.Name?.ToLower(CultureInfo.InvariantCulture)
                            .Contains(
                                textBoxSearchScenarios.Text.ToLower(CultureInfo.InvariantCulture)) ==
                            true))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.ByScenarioStepDescription:
                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Any(
                            step =>
                            step.Description?.ToLower(CultureInfo.InvariantCulture)
                            .Contains(
                                textBoxSearchScenarios.Text.ToLower(CultureInfo.InvariantCulture)) ==
                            true))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.UsesCriteriaTreeId:
                uint criteriaTreeId;
                if (!uint.TryParse(textBoxSearchScenarios.Text, out criteriaTreeId))
                {
                    break;
                }

                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Where(step => step.CriteriaTree != null).Any(
                            step =>
                            step.CriteriaTree.Id == criteriaTreeId ||
                            CriteriaTreeHasChildCriteriaTreeId(step.CriteriaTree, criteriaTreeId)))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.ByCriteriaTreeDescription:
                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Where(step => step.CriteriaTree != null).Any(
                            step =>
                            step.CriteriaTree.Description.ToLower().Contains(textBoxSearchScenarios.Text.ToLower()) ||
                            CriteriaTreeHasChildCriteriaTreeDescription(step.CriteriaTree, textBoxSearchScenarios.Text)))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.UsesCriteriaId:
                uint criteriaId;
                if (!uint.TryParse(textBoxSearchScenarios.Text, out criteriaId))
                {
                    break;
                }

                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Where(step => step.CriteriaTree != null).Any(
                            step =>
                            step.CriteriaTree.CriteriaId == criteriaId ||
                            CriteriaTreeHasChildCriteriaId(step.CriteriaTree, criteriaId)))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;

            case ScenarioSearchType.UsesCriteriaType:
            {
                int criteriaTypeId;
                if (!int.TryParse(textBoxSearchScenarios.Text, out criteriaTypeId))
                {
                    listBoxScenarios.DataSource = SearchByCriteriaTypeDescription(textBoxSearchScenarios.Text);
                    break;
                }

                CriteriaType    type      = (CriteriaType)criteriaTypeId;
                List <Scenario> scenarios = Scenarios.Where(scenario => scenario.Value.Steps.Where(step => step.CriteriaTree != null).Any(step => CriteriaTreeHasChildCriteriaType(step.CriteriaTree, type))).Select(scenario => scenario.Value).ToList();

                if (!scenarios.Any())
                {
                    listBoxScenarios.DataSource = SearchByCriteriaTypeDescription(textBoxSearchScenarios.Text);
                    break;
                }

                listBoxScenarios.DataSource = scenarios;
                break;
            }

            case ScenarioSearchType.HasBonusObjective:
                listBoxScenarios.DataSource =
                    Scenarios.Where(
                        scenario =>
                        scenario.Value.Steps.Any(step => (step.Flags & ScenarioStepFlag.BonusObjective) != 0))
                    .Select(scenario => scenario.Value)
                    .ToList();
                break;
            }
        }