public ActionResult SearchAll(string searchTerm, string indicatorId) { var model = new List<DomainIndicatorsSearchResult>(); // Get a distinct list of records that match the search var search = new IndicatorSearch(); IEnumerable<IndicatorMetadataTextValue> indicatorMatch = string.IsNullOrEmpty(indicatorId) ? search.SearchByText(searchTerm) : search.SearchByIndicatorId(Convert.ToInt32(indicatorId)); var allAreaTypes = CommonUtilities.GetAllAreaTypes(); var profiles = _profileRepository.GetProfiles(); foreach (var indicatorMetadataTextValue in indicatorMatch) { var groupings = CommonUtilities .GetGroupingsByIndicatorIds(new List<int> { indicatorMetadataTextValue.IndicatorId }) .Distinct(new DistinctGroupComparer()) .ToList(); foreach (var grouping in groupings) { Debug.WriteLine(grouping.GroupId); var domainIndicators = new DomainIndicatorsSearchResult(); domainIndicators.GroupId = grouping.GroupId; // Assign grouping metadata var groupingMetadata = CommonUtilities.GetGroupingMetadata(new List<int> { grouping.GroupId }).First(); domainIndicators.GroupName = groupingMetadata.GroupName; domainIndicators.SequenceId = groupingMetadata.Sequence; // Assign profile information var profile = profiles.FirstOrDefault(x => x.Id == groupingMetadata.ProfileId); if (profile != null) { domainIndicators.ProfileName = profile.Name; domainIndicators.UrlKey = profile.UrlKey; // Assign the rest GroupingPlusName groupingPlusNames = _profileRepository .GetGroupingPlusNames(grouping.IndicatorId, grouping.GroupId, grouping.AreaTypeId, profile.Id) .First(x => x.SexId == grouping.SexId && x.AgeId == grouping.AgeId && x.YearRange == grouping.YearRange); groupingPlusNames.AreaType = allAreaTypes.First(x => x.Id == grouping.AreaTypeId).ShortName; groupingPlusNames.ComparatorMethodId = grouping.ComparatorMethodId; groupingPlusNames.ComparatorId = grouping.ComparatorId; domainIndicators.Indicators.Add(groupingPlusNames); model.Add(domainIndicators); } } } model = model.Where(m => m.Indicators.Any()).ToList(); LoadProfileAndDomainDropdowns(); return View("SearchAll", model); }
public void TestSearchByText() { var word = "hip"; var results = new IndicatorSearch().SearchByText(word); Assert.IsTrue(results.Any()); foreach (var indicatorMetadataTextValue in results) { var name = indicatorMetadataTextValue.Name; Assert.IsTrue(name.ToLower().Contains(word), word + " not found in " + name); } }
public void TestSearchByIndicatorId() { var results = new IndicatorSearch().SearchByIndicatorId(IndicatorIds.ObesityYear6); Assert.AreEqual(1, results.Count()); Assert.IsTrue(results.First().Name.ToLower().Contains("obes")); }