public async Task <IActionResult> Get(EStreetProvider streetProvider, string searchTerm) { if (!ModelState.IsValid) { return(BadRequest()); } try { var result = await _streetService.SearchAsync(streetProvider, searchTerm); return(Ok(result)); } catch (ProviderException e) { return(BadRequest()); } catch (Exception e) { return(StatusCode(500)); } }
public async Task <IEnumerable <AddressSearchResult> > SearchAsync(EStreetProvider streetProvider, string searchTerm) { var provider = _streetProviders.ToList() .Where(_ => _.ProviderName == streetProvider) .FirstOrDefault(); if (provider == null) { throw new Exception(); } switch (streetProvider) { case EStreetProvider.Fake: return(await provider.SearchAsync(searchTerm)); case EStreetProvider.CRM: return(await provider.SearchAsync(searchTerm)); default: throw new ProviderException("SearchAsync: No provider selected to perform search operation"); } }