示例#1
0
        /// <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());
        }
示例#2
0
        /// <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));
        }
示例#3
0
        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));
        }