public async Task <IEnumerable <SelectListItem> > GetProjectTypeList(CancellationToken cancellationToken = default) { return(await _cache.GetOrCreateAsync(CacheHelpers.GenerateCacheKey("ProjectType"), async entry => { entry.SlidingExpiration = CacheHelpers.DefaultCacheDuration; var list = await _dbContext.ProjectTypes.ToListAsync(cancellationToken); return list.Select(s => new SelectListItem( CultureHelper.IsArabic ? s.NameAr : s.NameEn, s.Id.ToString())).ToList(); })); }
public async Task <IEnumerable <SelectListItem> > GetBuildingList() { return(await _cache.GetOrCreateAsync(CacheHelpers.GenerateCacheKey("GetBuildingList"), async entry => { entry.SlidingExpiration = CacheHelpers.DefaultCacheDuration; var list = await _dbContext.Buildings.ToListAsync(); return list.Select(s => new SelectListItem( CultureHelper.IsArabic ? s.Number : s.Number, s.Id.ToString())).ToList(); })); }
public async Task <IDictionary <string, IList <SettingsDto> > > GetAllSettingsCached() { //cache return(await _cache.GetOrCreateAsync(CacheHelpers.GenerateCacheKey("SettingsAllCacheKey"), async entry => { //we use no tracking here for performance optimization //anyway records are loaded only for read-only operations entry.SlidingExpiration = CacheHelpers.DefaultCacheDuration; var query = from s in _dbContext.SystemSettings orderby s.Name select s; var settings = await query.AsNoTracking().Select(s => new SettingsDto { Id = s.Id, Name = s.Name, Value = s.Value, GroupName = s.GroupName, ValueType = s.ValueType }).ToListAsync(); var dictionary = new Dictionary <string, IList <SettingsDto> >(); foreach (var s in settings) { var resourceName = s.Name.ToLowerInvariant(); if (!dictionary.ContainsKey(resourceName)) { //first setting dictionary.Add(resourceName, new List <SettingsDto> { s }); } else { //already added //most probably it's the setting with the same name but for some certain store (storeId > 0) dictionary[resourceName].Add(s); } } return dictionary; })); }