private static void CheckSystemMode() { var now = Platform.Time; if (!_systemModeLastCheckTimestamp.HasValue || now - _systemModeLastCheckTimestamp > TimeSpan.FromSeconds(15)) { lock (_syncLock) { if (!_systemModeLastCheckTimestamp.HasValue || now - _systemModeLastCheckTimestamp > TimeSpan.FromSeconds(15)) { try { IPersistentStore store = PersistentStoreRegistry.GetDefaultStore(); using (IReadContext ctx = store.OpenReadContext()) { var deleteRuleBroker = ctx.GetBroker <IServerRuleEntityBroker>(); var deleteRuleSearchCriteria = new ServerRuleSelectCriteria(); deleteRuleSearchCriteria.ServerRuleTypeEnum.EqualTo(ServerRuleTypeEnum.StudyDelete); deleteRuleSearchCriteria.Enabled.EqualTo(true); var deleteRules = deleteRuleBroker.Find(deleteRuleSearchCriteria); if (deleteRules == null || deleteRules.Count == 0) { _serverMode = Common.ServerOperatingMode.Archive; } var defaultDeleteRuleExists = deleteRules.Any(r => r.RuleName.Equals("Default Delete")); var customDeleteRuleExists = deleteRules.Any(r => !r.RuleName.Equals("Default Delete")); if (defaultDeleteRuleExists) { _serverMode = Common.ServerOperatingMode.TemporaryCache; } else { if (customDeleteRuleExists) { _serverMode = Common.ServerOperatingMode.MixedMode; } else { _serverMode = Common.ServerOperatingMode.Archive; } } } } catch (Exception ex) { Platform.Log(LogLevel.Error, ex); } finally { _systemModeLastCheckTimestamp = now; } } } } }
private static void CheckSystemMode() { var now = Platform.Time; if (!_systemModeLastCheckTimestamp.HasValue || now - _systemModeLastCheckTimestamp > TimeSpan.FromSeconds(15)) { lock (_syncLock) { if (!_systemModeLastCheckTimestamp.HasValue || now - _systemModeLastCheckTimestamp > TimeSpan.FromSeconds(15)) { try { using (var context = new ServerExecutionContext()) { var deleteRuleBroker = context.ReadContext.GetBroker<IServerRuleEntityBroker>(); var deleteRuleSearchCriteria = new ServerRuleSelectCriteria(); deleteRuleSearchCriteria.ServerRuleTypeEnum.EqualTo(ServerRuleTypeEnum.StudyDelete); deleteRuleSearchCriteria.Enabled.EqualTo(true); var deleteRules = deleteRuleBroker.Find(deleteRuleSearchCriteria); if (deleteRules == null || deleteRules.Count == 0) _serverMode = ServerOperatingMode.Archive; var defaultDeleteRuleExists = deleteRules.Any(r => r.RuleName.Equals("Default Delete")); var customDeleteRuleExists = deleteRules.Any(r => !r.RuleName.Equals("Default Delete")); if (defaultDeleteRuleExists) _serverMode = ServerOperatingMode.TemporaryCache; else { if (customDeleteRuleExists) _serverMode = ServerOperatingMode.MixedMode; else _serverMode = ServerOperatingMode.Archive; } } } catch (Exception ex) { Platform.Log(LogLevel.Error, ex); } finally { _systemModeLastCheckTimestamp = now; } } } } }