public void AddDefaultRule() { RuleWithSettingsMetadata defaultRule = new RuleWithSettingsMetadata(Guid.NewGuid().ToString(), "New Rule", false, RemoteConfigDataManager.defaultRulePriority, "", 100, new List <RsKvtData>(), null, null); m_DataManager.UpdateRule(defaultRule); }
/// <summary> /// Adds a rule to the Rules data store. This will add it to the rulesList. /// </summary> /// <param name="newRule">The RuleWithSettingsMetadata to be added</param> public void AddRule(RuleWithSettingsMetadata newRule) { m_DataStore.rulesList.Add(newRule); RulesDataStoreChanged?.Invoke(); RemoteSettingDataStoreChanged?.Invoke(); AddRuleToAddedRuleIDs(newRule); }
/// <summary> /// Updates the attributes for a given rule. This will update the rule in the rulesList. /// </summary> /// <param name="ruleId">ID of the rule being updated</param> /// <param name="newRule">RuleWithSettingsMetadata object containing the new attributes</param> public void UpdateRuleAttributes(string ruleId, RuleWithSettingsMetadata newRule) { if (ValidateRule(newRule)) { var ruleIndex = m_DataStore.rulesList.FindIndex(r => r.id == ruleId); m_DataStore.rulesList[ruleIndex] = newRule; RulesDataStoreChanged?.Invoke(); AddRuleToUpdatedRuleIDs(newRule.id); } }
/// <summary> /// Checks to see if the given rule's priority is valid. /// </summary> /// <param name="rule">RuleWithSettingsMetadata object to be validated</param> /// <returns>true if the rule's priority is valid, false if it is not valid</returns> public bool ValidateRulePriority(RuleWithSettingsMetadata rule) { if (rule.priority < 0 || rule.priority > 1000) { Debug.LogWarning("Rule: " + rule.name + " has an invalid priority. The set priority is " + rule.priority + ". The values for priority must be between " + minRulePriority + " and " + maxRulePriority); return(false); } else { return(true); } }
/// <summary> /// Checks to see if the given Rule's attributes are within the accepted range. /// </summary> /// <param name="rule">RuleWithSettingsMetadata object to be validated</param> /// <returns>true if the rule is valid and false if the rule is not valid</returns> public bool ValidateRule(RuleWithSettingsMetadata rule) { if (ValidateRulePriority(rule) && ValidateRuleName(rule)) { dataStoreStatus = m_DataStoreStatus.UnSynchronized; return(true); } else { dataStoreStatus = m_DataStoreStatus.Error; return(false); } }
/// <summary> /// Checks to see if the given rule's name is valid. /// </summary> /// <param name="rule">RuleWithSettingsMetadata object to be validated</param> /// <returns>true if the rule's name is valid, false if it is not valid</returns> public bool ValidateRuleName(RuleWithSettingsMetadata rule) { var duplicateIndex = m_DataStore.rulesList.FindIndex(rules => rules.name == rule.name); if (duplicateIndex == -1) { return(true); } else if (m_DataStore.rulesList[duplicateIndex].id == rule.id) { return(true); } else { Debug.LogWarning(m_DataStore.rulesList[duplicateIndex].name + " already exists. Rule names must be unique."); return(false); } }
/// <summary> /// Copies last list of rules from the Remote Config Data Store /// </summary> public void SetLastCachedRulesList() { m_DataStore.lastCachedRulesList = new List <RuleWithSettingsMetadata>(m_DataStore.rulesList.Count); for (var i = 0; i < m_DataStore.rulesList.Count; i++) { var newRule = new RuleWithSettingsMetadata(m_DataStore.rulesList[i].id, m_DataStore.rulesList[i].name, m_DataStore.rulesList[i].enabled, m_DataStore.rulesList[i].priority, m_DataStore.rulesList[i].condition, m_DataStore.rulesList[i].rolloutPercentage, new List <RsKvtData>(m_DataStore.rulesList[i].value), m_DataStore.rulesList[i].startDate, m_DataStore.rulesList[i].endDate); m_DataStore.lastCachedRulesList.Add(newRule); } }
private void AddRuleToDeletedRuleIDs(RuleWithSettingsMetadata deletedRule) { bool ruleAdded = false; if (m_DataStore.addedRulesIDs.Contains(deletedRule.id)) { m_DataStore.addedRulesIDs.Remove(deletedRule.id); ruleAdded = true; } if (m_DataStore.updatedRulesIDs.Contains(deletedRule.id)) { m_DataStore.updatedRulesIDs.Remove(deletedRule.id); } if (!ruleAdded) { m_DataStore.deletedRulesIDs.Add(deletedRule.id); } }
/// <summary> /// Adds a rule to the Rules data store. This will add it to the rulesList. /// </summary> /// <param name="newRule">The RuleWithSettingsMetadata to be added</param> public void UpdateRule(RuleWithSettingsMetadata newRule) { if (newRule.name.StartsWith("New Rule")) { int maxNewRuleNumber = 1; List <RuleWithSettingsMetadata> newRuleList = m_DataStore.rulesList.FindAll(rule => rule.name.Contains(newRule.name)); if (newRuleList.Count > 0) { if (newRuleList[0].name == "New Rule" && newRuleList.Count == 1) { newRule.name = newRule.name.Insert(8, " " + maxNewRuleNumber); AddRule(newRule); } else if (newRuleList.Count == 1) { maxNewRuleNumber = Int32.Parse(newRuleList[0].name.Replace("New Rule ", "")) + 1; newRule.name = newRule.name.Insert(8, " " + maxNewRuleNumber); AddRule(newRule); } else { var maxNewRule = newRuleList.OrderByDescending(rule => rule.name).First().name; maxNewRuleNumber = Int32.Parse(maxNewRule.Replace("New Rule ", "")) + 1; newRule.name = newRule.name.Insert(8, " " + maxNewRuleNumber); AddRule(newRule); } } else { AddRule(newRule); } } else { AddRule(newRule); } }
Rule StringMetadataFromRule(RuleWithSettingsMetadata ruleWithSettingsMetadata) { return(new Rule(ruleWithSettingsMetadata.id, ruleWithSettingsMetadata.name, ruleWithSettingsMetadata.enabled, ruleWithSettingsMetadata.priority, ruleWithSettingsMetadata.condition, ruleWithSettingsMetadata.rolloutPercentage, StripMetadataFromRSList(ruleWithSettingsMetadata.value), ruleWithSettingsMetadata.startDate, ruleWithSettingsMetadata.endDate)); }
public void UpdateRuleAttributes(string ruleId, RuleWithSettingsMetadata newRule) { m_DataManager.UpdateRuleAttributes(ruleId, newRule); }
private void AddRuleToAddedRuleIDs(RuleWithSettingsMetadata newRule) { m_DataStore.addedRulesIDs.Add(newRule.id); }