/// <summary> /// Location rule /// </summary> /// <param name="address"></param> /// <param name="isOnline"></param> public LocationRule(Address address) { IStateDao stateDao = Ioc.GetObject <IStateDao>("stateDao"); ICountryDao countryDao = Ioc.GetObject <ICountryDao>("countryDao"); Init(stateDao.GetLookUp(), countryDao.GetLookUp(), address, address.IsOnline); }
/// <summary> /// Does a high-level check of the format supplied and determines what type /// of location input was supplied. /// /// Formats are: /// 1. city - "Bronx" /// 2. city,state - "Bronx , New York" /// 3. city,state( abbreviation ) - "Bronx , NY" /// 4. city,country - "HomeTown , USA" /// 5. state - "New Jersey" /// 6. state abbreviation - "NJ" /// 7. country - "Italy" /// the actuall parsing /// </summary> /// <param name="locationData">The location to parse. Can be any combination of /// inputs, check the summary above.</param> /// <returns></returns> private LocationLookUpResult InternalParse(string locationData) { CityLookUp cityLookUp = _cityDao.GetLookUp(); StatesLookUp stateLookUp = _stateDao.GetLookUp(); CountryLookUp countryLookUp = _countryDao.GetLookUp(); try { bool isValidUSZipCode = IsUnitedStatesZipCode(locationData); bool containsComma = isValidUSZipCode ? false : locationData.Contains(","); // United states Zip code format if (isValidUSZipCode) { return(ParseUnitedStatesZipCode(locationData)); } // City, ( State or Country ) // Comma indicates search by city, <state> or <country> if (containsComma) { return(LocationParser.ParseCityWithStateOrCountry(cityLookUp, stateLookUp, countryLookUp, locationData)); } // Check for city, state, or country. // Start with narrowest search. // Check city. LocationLookUpResult result = LocationParser.ParseCity(cityLookUp, stateLookUp, countryLookUp, locationData); if (result != LocationLookUpResult.Empty && result.IsValid) { return(result); } // Check State - 2nd most restrictive search. result = LocationParser.ParseState(stateLookUp, countryLookUp, locationData); if (result != LocationLookUpResult.Empty && result.IsValid) { return(result); } // Check country - 3rd and final search criteria result = LocationParser.ParseCountry(countryLookUp, locationData); if (result != LocationLookUpResult.Empty && result.IsValid) { return(result); } } catch (Exception ex) { // Some error during parsing. // Log the sucker into our system. Logger.Error("Error verifying search location", ex); } return(new LocationLookUpResult(LocationLookUpType.None, false, "Unable to determine location")); }