public static List <CaveModel> GetCavesByFilters(CaveTypeModel caveTypeModel, List <CaveDistrictModel> pickedDistricts, List <CaveRegionModel> pickedRegions, List <CaveSiteModel> pickedSites) { List <CaveModel> resultCaves = new List <CaveModel>(kuchaContainer.Caves); //Clone them to not access the full list if (caveTypeModel != null) { resultCaves.RemoveAll(cave => cave.caveTypeID != caveTypeModel.caveTypeID); } if (pickedDistricts?.Count > 0) { resultCaves.RemoveAll(cave => !pickedDistricts.Any(district => cave.districtID == district.districtID)); } if (pickedRegions?.Count > 0) { resultCaves.RemoveAll(cave => !pickedRegions.Any(region => cave.regionID == region.regionID)); } if (pickedSites?.Count > 0) { resultCaves.RemoveAll(cave => !pickedSites.Any(site => cave.siteID == site.siteID)); } return(resultCaves); }
public static string GetCaveTypeSketchByID(int id) { CaveTypeModel c = kuchaContainer.CaveTypes.Find(x => x.caveTypeID == id); if (c == null) { return(String.Empty); } return(c.sketchName); }
private void SearchButton_Clicked(object sender, EventArgs e) { string selectedCaveTypeName = caveFilterPicker.Items[caveFilterPicker.SelectedIndex]; CaveTypeModel caveTypeModel = caveTypeDictionary[selectedCaveTypeName]; List <CaveModel> caves = Kucha.GetCavesByFilters(caveTypeModel, pickedDistricts, pickedRegions, pickedSites); List <CaveFilter> searchHistory = Settings.CaveSearchHistorySetting ?? new List <CaveFilter>(); CaveFilter caveFilter = new CaveFilter { caveTypeModel = caveTypeModel, pickedDistricts = pickedDistricts, pickedRegions = pickedRegions, pickedSites = pickedSites, FoundResultsString = "Results: " + caves.Count, SearchTimeString = "At " + DateTime.UtcNow.ToString() }; searchHistory.Add(caveFilter); Settings.CaveSearchHistorySetting = searchHistory.OrderByDescending(x => x.SearchTimeString).ToList(); Navigation.PushAsync(new CaveSearchResultUI(caves), true); }