/// <summary> /// Sustituye los placeholders marcados entre corchetes "{" "}" especificados en el fichero "appsettings.json" /// en el apartado "Covid19Api" por los datos filtrados en la vista-modelo recogidas en el formulario de búsqueda /// </summary> /// <param name="dayOneLiveViewModel">La vista-modelo que contienen las opciones seleccionadas en el /// formulario de búsqueda</param> /// <returns>La URL de la API "dayone/country/status/live" con los parámetros de búsqueda sustituídos</returns> private string ExtractPlaceholderUrlApi(DayOneLiveViewModel dayOneLiveViewModel) { string dayOneLiveApiUrl = GetAppSettingsUrlApiByKey(AppSettingsConfig.DAYONE_LIVE_KEY); dayOneLiveViewModel.Country ??= "Spain"; dayOneLiveViewModel.StatusType ??= "confirmed"; return(new StringBuilder(dayOneLiveApiUrl) .Replace(AppSettingsConfig.COUNTRYNAME_PLACEHOLDER, dayOneLiveViewModel.Country) .Replace(AppSettingsConfig.STATUS_PLACEHOLDER, dayOneLiveViewModel.StatusType) .ToString()); }
/// <summary> /// Aplica el filtro de búsqueda para los casos de un país desde el /// primer caso de COVID conocido (en directo) /// </summary> /// <param name="dayOneLiveByCountryList">La lista de países</param> /// <param name="dayOneLiveViewModel">La vista-modelo que contienen las opciones seleccionadas en el formulario de búsqueda</param> /// <returns>Lista con el país desde el primer caso de COVID, ordenadas de fechas más recientes a más antiguas</returns> private IEnumerable <DayOneLive> ApplySearchFilter(IEnumerable <DayOneLive> dayOneLiveByCountryList, DayOneLiveViewModel dayOneLiveViewModel) { if (dayOneLiveViewModel.Country == null) { return(dayOneLiveByCountryList.OrderByDescending(bc => bc.Date.Date)); } return(dayOneLiveByCountryList .Where(day => day.Country.Equals(dayOneLiveViewModel.Country) && day.Status.Equals(dayOneLiveViewModel.StatusType)) .OrderByDescending(day => day.Date.Date)); }
public async Task <ActionResult <IEnumerable <DayOneLive> > > GetDayOneLiveByCountry(DayOneLiveViewModel dayOneLiveViewModel) { if (ModelState.IsValid) { dayOneLiveCacheKey = $"{dayOneLiveCacheKey}_{dayOneLiveViewModel.Country}_{dayOneLiveViewModel.StatusType}"; if (!_cache.Get(dayOneLiveCacheKey, out DayOneLiveViewModel dayOneLiveVM)) { dayOneLiveVM = await GetCountriesViewModel <DayOneLiveViewModel>(); string dayOneLiveUrl = ExtractPlaceholderUrlApi(dayOneLiveVM); var dayOneLiveList = await _apiService.GetAsync <IEnumerable <DayOneLive> >(dayOneLiveUrl); dayOneLiveVM.DayOneLive = ApplySearchFilter(dayOneLiveList, dayOneLiveVM); _cache.Set(dayOneLiveCacheKey, dayOneLiveVM); } dayOneLiveViewModel = dayOneLiveVM; } return(View("Index", dayOneLiveViewModel)); }