Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }