Example #1
0
        /// <summary>
        /// Define o valor do campo.
        /// </summary>
        /// <param name="field">O campo a ser modificado.</param>
        /// <param name="value">O valor do campo.</param>
        /// <returns>A própria instância do campo modificado.</returns>
        public static Field SetValue(this Field field, object value)
        {
            if (field.Value is FieldValueCollection options)
            {
                var items = Is.Collection(value)
          ? ((IEnumerable)value).Cast <object>().ToArray()
          : new[] { value };

                options.ForEach(opt =>
                {
                    var selected = items.Contains(opt?.Value);
                    opt.Selected = selected ? true : (bool?)null;
                });
            }
            else
            {
                field.Value = value;
            }
            return(field);
        }
Example #2
0
        private object[] CreateParameters(PaperContext context, IPaper paper, MethodInfo method, Args args, Entity form)
        {
            var methodArgs = new List <object>();

            var argKeys  = args?.Keys.ToList() ?? new List <string>();
            var formKeys = form?.Properties?.Keys.ToList() ?? new List <string>();

            foreach (var parameter in method.GetParameters())
            {
                var name = parameter.Name;

                if (typeof(Sort).IsAssignableFrom(parameter.ParameterType))
                {
                    var sort = (Sort)context.Paper.Create(objectFactory, parameter.ParameterType);
                    sort.CopyFrom(args);
                    methodArgs.Add(sort);
                    continue;
                }

                if (typeof(Page).IsAssignableFrom(parameter.ParameterType))
                {
                    var page = (Page)context.Paper.Create(objectFactory, parameter.ParameterType);
                    page.CopyFrom(args);
                    methodArgs.Add(page);
                    continue;
                }

                if (typeof(IFilter).IsAssignableFrom(parameter.ParameterType))
                {
                    var filter = CreateCompatibleFilter(context, args, parameter.ParameterType);
                    methodArgs.Add(filter);
                    continue;
                }

                string key = null;

                key = argKeys.FirstOrDefault(x => x.EqualsIgnoreCase(name));
                if (key != null)
                {
                    var value           = args[key];
                    var compatibleValue = CreateCompatibleValue(context, value, parameter.ParameterType);
                    methodArgs.Add(compatibleValue);
                    argKeys.Remove(key);
                    continue;
                }

                key = formKeys.FirstOrDefault(x => x.EqualsIgnoreCase(name));
                if (key != null)
                {
                    var value           = form.Properties[key];
                    var compatibleValue = CreateCompatibleValue(context, value, parameter.ParameterType);
                    methodArgs.Add(compatibleValue);
                    formKeys.Remove(key);
                    continue;
                }

                if (Is.Collection(parameter.ParameterType))
                {
                    var records  = form.Children();
                    var itemType = TypeOf.CollectionElement(parameter.ParameterType);
                    var items    = records.Select(record =>
                                                  CreateCompatibleValue(context, record.Properties, itemType)
                                                  ).ToArray();
                    var compatibleValue = CreateCompatibleValue(context, items, parameter.ParameterType);
                    methodArgs.Add(compatibleValue);
                }
                else
                {
                    var record          = form?.Children().FirstOrDefault();
                    var compatibleValue = CreateCompatibleValue(context, record.Properties, parameter.ParameterType);
                    methodArgs.Add(compatibleValue);
                }
            }

            return(methodArgs.ToArray());
        }