public IHttpActionResult GetFieldBindingTokenMap() { var keys = fieldBindingMapFactory.GetFieldBindingTokenMap().Keys.ToList(); keys.Sort(new FieldBindingTokenKeyAlpabetSorter()); return(Ok(keys)); }
public override void Process(RenderFieldEventArgs args) { if (!(args.ViewModel is IBindingSettings bindingSettings)) { return; } if (!bindingSettings.PrefillBindingValue) { return; } if (string.IsNullOrEmpty(bindingSettings.BindingToken)) { return; } var tokenMap = fieldBindingMapFactory.GetFieldBindingTokenMap(); if (tokenMap == null || !tokenMap.ContainsKey(new FieldBindingTokenKey(bindingSettings.BindingToken))) { return; } var tokenHandler = tokenMap[new FieldBindingTokenKey(bindingSettings.BindingToken)]; if (tokenHandler == null) { return; } var value = tokenHandler.GetBindingValue(); if (!value.HasValue()) { return; } var property = args.ViewModel.GetType().GetProperty("Value"); if (value.Value.GetType() != property?.PropertyType) { if (property != null && property.PropertyType.IsGenericType && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) { if (value.Value.GetType() != property.PropertyType.GetGenericArguments()[0]) { return; } } else { return; } } property.SetValue(args.ViewModel, value.Value); }
public override void Process(ExecuteSubmitActionsEventArgs args) { var tokenMap = fieldBindingMapFactory.GetFieldBindingTokenMap(); if (tokenMap == null) { return; } var valuesUpdated = false; foreach (var fieldModel in args.FormSubmitContext.Fields) { if (!(fieldModel is IBindingSettings bindingSettings)) { continue; } if (!bindingSettings.StoreBindingValue) { continue; } if (string.IsNullOrEmpty(bindingSettings.BindingToken)) { continue; } if (!tokenMap.ContainsKey(new FieldBindingTokenKey(bindingSettings.BindingToken))) { continue; } var tokenHandler = tokenMap[new FieldBindingTokenKey(bindingSettings.BindingToken)]; var property = fieldModel.GetType().GetProperty("Value"); if (property == null) { continue; } var value = property.GetValue(fieldModel); if (value != null) { tokenHandler.StoreBindingValue(value); valuesUpdated = true; } } if (valuesUpdated) { xDbService.ReloadContactDataIntoSession(); } }