public static void Set(this SettingValue settingValue, SettingDefinition settingDef, string fieldName, string value) { for (int i = 1; i <= FieldCount; i++) { string name = (string)settingDef.GetType().GetProperty("Field" + i.ToString()).GetValue(settingDef, null); if (fieldName == name) { settingValue.GetType().GetProperty("Field" + i.ToString()).SetValue(settingValue, value); return; } } }
public void UpdateSettingValue(SettingValue settingValue) { SettingDefinition settingDef = this.GetSettingDefinitionById(settingValue.SettingDefinitionID); for (int i = 1; i <= 15; i++) { bool isRequired = (bool)settingDef.GetType().GetProperty("FieldRequired" + i.ToString()).GetValue(settingDef, null); string value = (string)settingValue.GetType().GetProperty("Field" + i.ToString()).GetValue(settingValue, null); if (isRequired && string.IsNullOrEmpty(value)) { throw new ASException(this._resourceManager.GetString("Setting_InvalidSettingValue")); } } settingValue = Encrypt(settingValue, settingDef); _dbContext.Entry(settingValue).State = EntityState.Modified; _dbContext.SaveChanges(); }
/// <summary> /// Encrypts password fields of the setting value to store it securely /// </summary> /// <param name="settingValue">Value</param> /// <param name="settingDefiniton">Definition</param> /// <returns>Encrypted application setting value</returns> private SettingValue Encrypt(SettingValue settingValue, SettingDefinition settingDefiniton) { if (settingValue == null || settingDefiniton == null) { return(settingValue); } for (int i = 1; i <= 15; i++) { FormInputType inputType = (FormInputType)settingDefiniton.GetType().GetProperty("FieldInputType" + i.ToString()).GetValue(settingDefiniton, null); if (inputType == FormInputType.Password) { string value = (string)settingValue.GetType().GetProperty("Field" + i.ToString()).GetValue(settingValue, null); value = _encryptionProvider.Encrypt(value, _configurationFactory().SymmetricKey); settingValue.GetType().GetProperty("Field" + i.ToString()).SetValue(settingValue, value); } } return(settingValue); }