/// <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));
        }