public void ClearCache <T>(int tenantId) where T : class, ISettings { var settings = LoadSettings <T>(tenantId); var key = settings.ID.ToString() + tenantId + Guid.Empty; DbSettingsManagerCache.Remove(key); }
public bool SaveSettingsFor <T>(T settings, int tenantId, Guid userId) where T : ISettings { if (settings == null) { throw new ArgumentNullException("settings"); } try { var key = settings.ID.ToString() + tenantId + userId; var data = Serialize(settings); var def = (T)settings.GetDefault(ServiceProvider); var defaultData = Serialize(def); var tr = WebstudioDbContext.Database.BeginTransaction(); if (data.SequenceEqual(defaultData)) { // remove default settings var s = WebstudioDbContext.WebstudioSettings .Where(r => r.Id == settings.ID) .Where(r => r.TenantId == tenantId) .Where(r => r.UserId == userId) .FirstOrDefault(); if (s != null) { WebstudioDbContext.WebstudioSettings.Remove(s); } } else { var s = new DbWebstudioSettings { Id = settings.ID, UserId = userId, TenantId = tenantId, Data = data }; WebstudioDbContext.AddOrUpdate(r => r.WebstudioSettings, s); } WebstudioDbContext.SaveChanges(); tr.Commit(); DbSettingsManagerCache.Remove(key); Cache.Insert(key, settings, expirationTimeout); return(true); } catch (Exception ex) { log.Error(ex); return(false); } }
public bool SaveSettingsFor <T>(T settings, int tenantId, Guid userId) where T : ISettings { if (settings == null) { throw new ArgumentNullException("settings"); } try { var key = settings.ID.ToString() + tenantId + userId; var data = Serialize(settings); var db = DbManager; var def = (T)settings.GetDefault(ServiceProvider); var defaultData = Serialize(def); ISqlInstruction i; if (data.SequenceEqual(defaultData)) { // remove default settings i = new SqlDelete("webstudio_settings") .Where("id", settings.ID.ToString()) .Where("tenantid", tenantId) .Where("userid", userId.ToString()); } else { i = new SqlInsert("webstudio_settings", true) .InColumnValue("id", settings.ID.ToString()) .InColumnValue("userid", userId.ToString()) .InColumnValue("tenantid", tenantId) .InColumnValue("data", data); } DbSettingsManagerCache.Remove(key); db.ExecuteNonQuery(i); Cache.Insert(key, settings, expirationTimeout); return(true); } catch (Exception ex) { log.Error(ex); return(false); } }