/// <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); }
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()); }