public void SetCountryHasCountryGetCountry() { CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams(); locParams.Country = "United States"; Assert.True(locParams.IsFieldSet("Country")); Assert.False(locParams.IsFieldSet("City")); Assert.False(locParams.IsFieldSet("State")); Assert.Equal("United States", locParams.GetFieldAsString("Country")); }
public void SetCityHasCityGetCity() { CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams(); locParams.City = "Baltimore"; Assert.True(locParams.IsFieldSet("City")); Assert.False(locParams.IsFieldSet("State")); Assert.False(locParams.IsFieldSet("Country")); Assert.Equal("Baltimore", locParams.GetFieldAsString("City")); }
public void SetStateHasStateGetState() { CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams(); locParams.State = new LabelledSearchParam[] { new LabelledSearchParam() { Key = "MD", Label = "Maryland" } }; Assert.True(locParams.IsFieldSet("State")); Assert.False(locParams.IsFieldSet("City")); Assert.False(locParams.IsFieldSet("Country")); Assert.Equal("Maryland", locParams.GetFieldAsString("State")); }
public void SetAllHasAll() { CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams(); locParams.Country = "United States"; locParams.City = "Baltimore"; locParams.State = new LabelledSearchParam[] { new LabelledSearchParam() { Key = "MD", Label = "Maryland" } }; Assert.True(locParams.IsFieldSet("State")); Assert.True(locParams.IsFieldSet("City")); Assert.True(locParams.IsFieldSet("Country")); }
/// <summary> /// Determine whether the specified objects are equal. /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool Equals(LocationSearchParams x, LocationSearchParams y) { // If the items are both null, or if one or the other is null, return // the correct response right away. if (x == null && y == null) { return(true); } else if (x == null || y == null) { return(false); } else if (x.GetType() != y.GetType()) { return(false); } //This should compare every single property. //Ad we check above if x & y are the same types we don't need to check both below. if (x is AtNIHLocationSearchParams) { return(true); } else if (x is CountryCityStateLocationSearchParams) { CountryCityStateLocationSearchParams ccsX = (CountryCityStateLocationSearchParams)x; CountryCityStateLocationSearchParams ccsY = (CountryCityStateLocationSearchParams)y; bool isEqual = ccsX.City == ccsY.City && ccsX.Country == ccsY.Country && AreLabelledParamListsEqual(ccsX.State, ccsY.State); return(isEqual); } else if (x is HospitalLocationSearchParams) { bool isEqual = ((HospitalLocationSearchParams)(x)).Hospital == ((HospitalLocationSearchParams)(y)).Hospital; return(isEqual); } else if (x is ZipCodeLocationSearchParams) { bool isEqual = false; if (((ZipCodeLocationSearchParams)(x)).GeoLocation != null && ((ZipCodeLocationSearchParams)(y)).GeoLocation != null) { isEqual = ((ZipCodeLocationSearchParams)(x)).ZipCode == ((ZipCodeLocationSearchParams)(y)).ZipCode && ((ZipCodeLocationSearchParams)(x)).ZipRadius == ((ZipCodeLocationSearchParams)(y)).ZipRadius && ((ZipCodeLocationSearchParams)(x)).GeoLocation.Lat == ((ZipCodeLocationSearchParams)(y)).GeoLocation.Lat && ((ZipCodeLocationSearchParams)(x)).GeoLocation.Lon == ((ZipCodeLocationSearchParams)(y)).GeoLocation.Lon; } else if (((ZipCodeLocationSearchParams)(x)).GeoLocation == null && ((ZipCodeLocationSearchParams)(y)).GeoLocation == null) { isEqual = ((ZipCodeLocationSearchParams)(x)).ZipCode == ((ZipCodeLocationSearchParams)(y)).ZipCode && ((ZipCodeLocationSearchParams)(x)).ZipRadius == ((ZipCodeLocationSearchParams)(y)).ZipRadius; } return(isEqual); } else { return(false); } }
/// <summary> /// Get all Locations, but filtered by location parameters. /// NOTE: LocationTypes for Hospital and None will not be filtered, but will be sorted. /// </summary> /// <returns></returns> public ClinicalTrial.StudySite[] GetFilteredLocations(IEnumerable <ClinicalTrial.StudySite> sites, CTSSearchParams searchParams) { IEnumerable <ClinicalTrial.StudySite> rtnSites = sites; switch (searchParams.Location) { case LocationType.AtNIH: { rtnSites = rtnSites.Where(s => s.PostalCode == "20892"); break; } case LocationType.CountryCityState: { CountryCityStateLocationSearchParams locParams = (CountryCityStateLocationSearchParams)searchParams.LocationParams; if (locParams.IsFieldSet(FormFields.Country)) { rtnSites = rtnSites.Where(s => StringComparer.CurrentCultureIgnoreCase.Equals(s.Country, locParams.Country)); } if (locParams.IsFieldSet(FormFields.City)) { rtnSites = rtnSites.Where(s => StringComparer.CurrentCultureIgnoreCase.Equals(s.City, locParams.City)); } if (locParams.IsFieldSet(FormFields.State)) { var states = locParams.State.Select(s => s.Key); //Get Abbreviations rtnSites = rtnSites.Where(s => states.Contains(s.StateOrProvinceAbbreviation)); } break; } case LocationType.Zip: { ZipCodeLocationSearchParams locParams = (ZipCodeLocationSearchParams)searchParams.LocationParams; rtnSites = rtnSites.Where(site => site.Coordinates != null && locParams.GeoLocation.DistanceBetween(new GeoLocation(site.Coordinates.Latitude, site.Coordinates.Longitude)) <= locParams.ZipRadius && site.Country == "United States" ); break; } default: { //Basically we can't/shouldn't filter. break; } } //Filter out non-va sites if this is a VA only search if (searchParams.IsVAOnly && searchParams.Location != LocationType.Hospital) { rtnSites = rtnSites.Where(site => site.IsVA); } //Now that we have the sites filtered, now we need to sort. return(rtnSites.ToArray()); }