Esempio n. 1
0
        /// <summary>
        /// Return the List of Cities
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> GetCities(int id)
        {
            BaseResult <List <CityViewModel> > cityResult = new BaseResult <List <CityViewModel> >();

            if (id < 1)
            {
                cityResult.Message = Constants.BadRequestErrorMessage.InvalidCountyRequest;
                return(BadRequest(cityResult));
            }

            var cacheData = RedisCacheHelper.Instance.Get <List <CityViewModel> >(Constants.CacheKeys.CityList);

            if (cacheData != null && cacheData.Any())
            {
                cityResult.Result = cacheData;
            }
            else
            {
                BaseResult <List <City> > cityResultData = await iMasterData.GetCities().ConfigureAwait(false);

                if (cityResultData.IsError && cityResultData.ExceptionMessage != null)
                {
                    return(new StatusCodeResult(500));
                }
                else if (cityResultData.Result == null || cityResultData.Result.Count == 0)
                {
                    return(NoContent()); //204
                }
                else
                {   // mapping model to viewmodel
                    List <CityViewModel> cityListAll = DbMapperMasterdata.MapAllCity(cityResultData);
                    cityResult.Result = cityListAll;
                    RedisCacheHelper.Instance.Set <List <CityViewModel> >(Constants.CacheKeys.CityList, cityListAll, false);
                }
            }
            cityResult.Result = cityResult.Result.Where(p => p.CountryId == id).ToList();
            return(Ok(cityResult)); //200
        }