/// <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="dayOneTotalViewModel">La vista-modelo que contienen las opciones seleccionadas en el /// formulario de búsqueda</param> /// <returns>La URL de la API "total/dayone/country/status" con los parámetros de búsqueda sustituídos</returns> private string ExtractPlaceholderUrlApi(DayOneTotalViewModel dayOneTotalViewModel) { string dayOneTotalApiUrl = GetAppSettingsUrlApiByKey(AppSettingsConfig.DAYONE_TOTAL_KEY); dayOneTotalViewModel.Country ??= "Spain"; dayOneTotalViewModel.StatusType ??= "confirmed"; return(new StringBuilder(dayOneTotalApiUrl) .Replace(AppSettingsConfig.COUNTRYNAME_PLACEHOLDER, dayOneTotalViewModel.Country) .Replace(AppSettingsConfig.STATUS_PLACEHOLDER, dayOneTotalViewModel.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="dayOneTotalByCountryList">La lista de países</param> /// <param name="dayOneTotalViewModel">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 <DayOneTotal> ApplySearchFilter(IEnumerable <DayOneTotal> dayOneTotalByCountryList, DayOneTotalViewModel dayOneTotalViewModel) { if (dayOneTotalViewModel.Country == null) { return(dayOneTotalByCountryList.OrderByDescending(bc => bc.Date.Date)); } return(dayOneTotalByCountryList .Where(day => day.Country.Equals(dayOneTotalViewModel.Country) && day.Status.Equals(dayOneTotalViewModel.StatusType)) .OrderByDescending(day => day.Date.Date)); }
public async Task <ActionResult <IEnumerable <DayOneTotal> > > GetDayOneTotalByCountry(DayOneTotalViewModel dayOneTotalViewModel) { if (ModelState.IsValid) { dayOneTotalCacheKey = $"{dayOneTotalCacheKey}_{dayOneTotalViewModel.Country}_{dayOneTotalViewModel.StatusType}"; if (!_cache.Get(dayOneTotalCacheKey, out DayOneTotalViewModel dayOneTotalVM)) { dayOneTotalVM = await GetCountriesViewModel <DayOneTotalViewModel>(); string dayOneTotalUrl = ExtractPlaceholderUrlApi(dayOneTotalVM); var dayOneTotalList = await _apiService.GetAsync <IEnumerable <DayOneTotal> >(dayOneTotalUrl); dayOneTotalVM.DayOneTotal = ApplySearchFilter(dayOneTotalList, dayOneTotalVM); _cache.Set(dayOneTotalCacheKey, dayOneTotalVM); } dayOneTotalViewModel = dayOneTotalVM; } return(View("Index", dayOneTotalViewModel)); }