/** * Returns results of search the animals data by key/value, using * inclusion of the search term. */ public List <Animal> FindByColumnAndValue(AnimalFieldType column, string value) { var results = from j in Animals where GetFieldByType(j, column).Contains(value) select j; return(results.ToList()); }
// Lists Animals with a given field matching a given value public IActionResult Animals(AnimalFieldType column, string value) { SearchAnimalsViewModel animalsViewModel = new SearchAnimalsViewModel(); animalsViewModel.Animals = animalData.FindByColumnAndValue(column, value); animalsViewModel.Title = "Animals with " + column + ": " + value; return(View(animalsViewModel)); }
/** * Returns the AnimalField of the given type from the Animal object, * for all types other than AnimalFieldType.All. In this case, * null is returned. */ public static AnimalField GetFieldByType(Animal animal, AnimalFieldType type) { switch (type) { case AnimalFieldType.Size: return(animal.Size); case AnimalFieldType.Origin: return(animal.Origin); case AnimalFieldType.Eat: return(animal.Eat); case AnimalFieldType.Kind: return(animal.Kind); } throw new ArgumentException("Cannot get field of type: " + type); }
// Lists the values of a given column, or all animals if selected public IActionResult Values(AnimalFieldType column) { if (column.Equals(AnimalFieldType.All)) { SearchAnimalsViewModel animalsViewModel = new SearchAnimalsViewModel(); animalsViewModel.Animals = animalData.Animals; animalsViewModel.Title = "All Animals"; return(View("Animals", animalsViewModel)); } else { AnimalFieldsViewModel animalFieldsViewModel = new AnimalFieldsViewModel(); IEnumerable <AnimalField> fields; switch (column) { case AnimalFieldType.Size: fields = animalData.Sizes.ToList().Cast <AnimalField>(); break; case AnimalFieldType.Origin: fields = animalData.Origins.ToList().Cast <AnimalField>(); break; case AnimalFieldType.Eat: fields = animalData.Eats.ToList().Cast <AnimalField>(); break; case AnimalFieldType.Kind: default: fields = animalData.Kinds.ToList().Cast <AnimalField>(); break; } animalFieldsViewModel.Fields = fields; animalFieldsViewModel.Title = "All " + column + " Values"; animalFieldsViewModel.Column = column; return(View(animalFieldsViewModel)); } }