public IHttpActionResult GetFieldBindingTokenMap()
        {
            var keys = fieldBindingMapFactory.GetFieldBindingTokenMap().Keys.ToList();

            keys.Sort(new FieldBindingTokenKeyAlpabetSorter());
            return(Ok(keys));
        }
示例#2
0
        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();
            }
        }