public async Task UpdateSiteSettingsAsync(int siteId, IEnumerable <SiteSetting> siteSettings) { VerifyManagementPermission(); var currentSiteSettings = await _siteSettingRepository.GetBySiteIdAsync(siteId); var siteSettingsToAdd = siteSettings .Where(_ => currentSiteSettings.Select(s => s.Key).Contains(_.Key) == false); var siteSettingsToRemove = currentSiteSettings .Where(_ => siteSettings.Select(s => s.Key).Contains(_.Key) == false) .Select(_ => _.Id); var siteSettingsToUpdate = siteSettings .Where(_ => currentSiteSettings .Where(s => s.Key == _.Key) .Any(s => s.Value != _.Value)); var userId = GetClaimId(ClaimType.UserId); await _siteSettingRepository.AddListAsync(userId, siteSettingsToAdd); await _siteSettingRepository.RemoveListAsync(userId, siteSettingsToRemove); await _siteSettingRepository.UpdateListAsync(userId, siteSettingsToUpdate); await _siteSettingRepository.SaveAsync(); await _siteLookupService.ReloadSiteCacheAsync(); }
private async Task <IEnumerable <Site> > GetSitesFromCacheAsync() { IEnumerable <Site> sites; var cachedSites = await _cache.GetStringFromCache(CacheKey.Sites); if (cachedSites == null) { sites = await _siteRepository.GetAllAsync(); if (!sites.Any()) { _logger.LogInformation("No sites in database, inserting initial site"); sites = await InsertInitialSiteAsync(); } await _cache.SaveToCacheAsync(CacheKey.Sites, JsonConvert.SerializeObject(sites), 8); _logger.LogTrace("Cache miss on sites: {Count} loaded", sites.Count()); } else { sites = JsonConvert.DeserializeObject <IEnumerable <Site> >(cachedSites); } foreach (var site in sites) { string key = $"s{site.Id}.{CacheKey.SiteSettings}"; var cachedSiteSettings = await _cache.GetStringFromCache(key); if (cachedSiteSettings == null) { site.Settings = await _siteSettingRepository.GetBySiteIdAsync(site.Id); await _cache.SaveToCacheAsync(key, JsonConvert.SerializeObject(site.Settings), 8); _logger.LogTrace("Cache miss on site settings for site id {Id}, {Count} loaded", site.Id, site.Settings.Count); } else { site.Settings = JsonConvert.DeserializeObject <ICollection <SiteSetting> >(cachedSiteSettings); } } return(sites); }
private async Task <IEnumerable <Site> > GetSitesFromCacheAsync() { IEnumerable <Site> sites = null; var cachedSites = _cache.GetString(CacheKey.Sites); if (cachedSites == null) { sites = await _siteRepository.GetAllAsync(); if (sites.Count() == 0) { sites = await InsertInitialSiteAsync(); } _cache.SetString(CacheKey.Sites, JsonConvert.SerializeObject(sites)); _logger.LogTrace("Cache miss on sites: {Count} loaded", sites.Count()); } else { sites = JsonConvert.DeserializeObject <IEnumerable <Site> >(cachedSites); } foreach (var site in sites) { string key = $"s{site.Id}.{CacheKey.SiteSettings}"; var cachedSiteSettings = _cache.GetString(key); if (cachedSiteSettings == null) { site.Settings = await _siteSettingRepository.GetBySiteIdAsync(site.Id); _cache.SetString(key, JsonConvert.SerializeObject(site.Settings)); _logger.LogTrace("Cache miss on site settings for site id {Id}, {Count} loaded", site.Id, site.Settings.Count()); } else { site.Settings = JsonConvert.DeserializeObject <ICollection <SiteSetting> >(cachedSiteSettings); } } return(sites); }
private async Task <IEnumerable <Site> > GetSitesFromCacheAsync() { var sites = _memoryCache.Get <IEnumerable <Site> >(CacheKey.SitePaths); if (sites == null) { sites = await _siteRepository.GetAllAsync(); if (sites.Count() == 0) { sites = await InsertInitialSiteAsync(); } foreach (var site in sites) { site.Settings = await _siteSettingRepository.GetBySiteIdAsync(site.Id); } _memoryCache.Set(CacheKey.SitePaths, sites); } return(sites); }