Esempio n. 1
0
 private static bool HasKey(Expando expando, string key)
 {
     return expando.GetProperties().Any(p => p.Key == key);
 }
Esempio n. 2
0
        public FieldResponse CreateField(Guid entityId, FieldType type, Expando data, string name, string label, Guid? id = null,
                    string placeholderText = "", string helpText = "", string description = "",
                    bool system = false, bool required = false, bool unique = false, bool searchable = false, bool auditable = false)
        {
            Field field = null;

            if (data == null)
                data = new Expando();

            switch (type)
            {
                case FieldType.AutoNumberField:
                    field = new AutoNumberField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((AutoNumberField)field).DefaultValue = (decimal?)data["defaultValue"];
                    if (HasKey(data, "startingNumber") && data["startingNumber"] != null)
                        ((AutoNumberField)field).StartingNumber = (decimal?)data["startingNumber"];
                    if (HasKey(data, "displayFormat") && data["displayFormat"] != null)
                        ((AutoNumberField)field).DisplayFormat = (string)data["displayFormat"];
                    break;
                case FieldType.CheckboxField:
                    field = new CheckboxField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((CheckboxField)field).DefaultValue = (bool?)data["defaultValue"] ?? false;
                    break;
                case FieldType.CurrencyField:
                    field = new CurrencyField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((CurrencyField)field).DefaultValue = (decimal?)data["defaultValue"];
                    if (HasKey(data, "minValue") && data["minValue"] != null)
                        ((CurrencyField)field).MinValue = (decimal?)data["minValue"];
                    if (HasKey(data, "maxValue") && data["maxValue"] != null)
                        ((CurrencyField)field).MaxValue = (decimal?)data["maxValue"];
                    if (HasKey(data, "currency") && data["currency"] != null)
                    {
                        ((CurrencyField)field).Currency = (CurrencyType)data["currency"];
                    }
                    else
                    {
                        ((CurrencyField)field).Currency = new CurrencyType();
                        ((CurrencyField)field).Currency.Code = "USD";
                        ((CurrencyField)field).Currency.DecimalDigits = 2;
                        ((CurrencyField)field).Currency.Name = "US dollar";
                        ((CurrencyField)field).Currency.NamePlural = "US dollars";
                        ((CurrencyField)field).Currency.Rounding = 0;
                        ((CurrencyField)field).Currency.Symbol = "$";
                        ((CurrencyField)field).Currency.SymbolNative = "$";
                        ((CurrencyField)field).Currency.SymbolPlacement = CurrencySymbolPlacement.Before;
                        ((CurrencyField)field).DefaultValue = 1;
                    }
                    break;
                case FieldType.DateField:
                    field = new DateField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((DateField)field).DefaultValue = (DateTime?)data["defaultValue"];
                    if (HasKey(data, "format") && data["format"] != null)
                        ((DateField)field).Format = (string)data["format"];
                    if (HasKey(data, "useCurrentTimeAsDefaultValue") && data["useCurrentTimeAsDefaultValue"] != null)
                        ((DateField)field).UseCurrentTimeAsDefaultValue = (bool?)data["useCurrentTimeAsDefaultValue"];
                    break;
                case FieldType.DateTimeField:
                    field = new DateTimeField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((DateTimeField)field).DefaultValue = (DateTime?)data["defaultValue"];
                    if (HasKey(data, "format") && data["format"] != null)
                        ((DateTimeField)field).Format = (string)data["format"];
                    if (HasKey(data, "useCurrentTimeAsDefaultValue") && data["useCurrentTimeAsDefaultValue"] != null)
                        ((DateTimeField)field).UseCurrentTimeAsDefaultValue = (bool?)data["useCurrentTimeAsDefaultValue"];
                    break;
                case FieldType.EmailField:
                    field = new EmailField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((EmailField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((EmailField)field).MaxLength = (int?)data["maxLength"];
                    break;
                case FieldType.FileField:
                    field = new FileField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((FileField)field).DefaultValue = (string)data["defaultValue"];
                    break;
                case FieldType.GuidField:
                    field = new GuidField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((GuidField)field).DefaultValue = (Guid?)data["defaultValue"];
                    if (HasKey(data, "generateNewId") && data["generateNewId"] != null)
                        ((GuidField)field).GenerateNewId = (bool?)data["generateNewId"];
                    break;
                case FieldType.HtmlField:
                    field = new HtmlField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((HtmlField)field).DefaultValue = (string)data["defaultValue"];
                    break;
                case FieldType.ImageField:
                    field = new ImageField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((ImageField)field).DefaultValue = (string)data["defaultValue"];
                    break;
                case FieldType.MultiLineTextField:
                    field = new MultiLineTextField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((MultiLineTextField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((MultiLineTextField)field).MaxLength = (int?)data["maxLength"];
                    if (HasKey(data, "visibleLineNumber") && data["visibleLineNumber"] != null)
                        ((MultiLineTextField)field).VisibleLineNumber = (int?)data["visibleLineNumber"];
                    break;
                case FieldType.MultiSelectField:
                    field = new MultiSelectField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((MultiSelectField)field).DefaultValue = (IEnumerable<string>)data["defaultValue"];
                    if (HasKey(data, "options") && data["options"] != null)
                        ((MultiSelectField)field).Options = (List<MultiSelectFieldOption>)data["options"];
                    break;
                case FieldType.NumberField:
                    field = new NumberField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((NumberField)field).DefaultValue = (int?)data["defaultValue"];
                    if (HasKey(data, "minValue") && data["minValue"] != null)
                        ((NumberField)field).MinValue = (decimal?)data["minValue"];
                    if (HasKey(data, "maxValue") && data["maxValue"] != null)
                        ((NumberField)field).MaxValue = (decimal?)data["maxValue"];
                    if (HasKey(data, "decimalPlaces") && data["decimalPlaces"] != null)
                        ((NumberField)field).DecimalPlaces = (byte?)data["decimalPlaces"];
                    break;
                case FieldType.PasswordField:
                    field = new PasswordField();
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((PasswordField)field).MaxLength = (int?)data["maxLength"];
                    if (HasKey(data, "minLength") && data["minLength"] != null)
                        ((PasswordField)field).MinLength = (int?)data["minLength"];
                    if (HasKey(data, "encrypted") && data["encrypted"] != null)
                        ((PasswordField)field).Encrypted = (bool?)data["encrypted"];
                    break;
                case FieldType.PercentField:
                    field = new PercentField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((PercentField)field).DefaultValue = (decimal?)data["defaultValue"]; //0.01m;
                    if (HasKey(data, "minValue") && data["minValue"] != null)
                        ((PercentField)field).MinValue = (decimal?)data["minValue"];
                    if (HasKey(data, "maxValue") && data["maxValue"] != null)
                        ((PercentField)field).MaxValue = (decimal?)data["maxValue"];
                    if (HasKey(data, "decimalPlaces") && data["decimalPlaces"] != null)
                        ((PercentField)field).DecimalPlaces = (byte?)data["decimalPlaces"];
                    break;
                case FieldType.PhoneField:
                    field = new PhoneField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((PhoneField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "format") && data["format"] != null)
                        ((PhoneField)field).Format = (string)data["format"];
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((PhoneField)field).DefaultValue = (string)data["maxLength"];
                    break;
                case FieldType.SelectField:
                    field = new SelectField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((SelectField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "options") && data["options"] != null)
                        ((SelectField)field).Options = (List<SelectFieldOption>)data["options"];
                    break;
                case FieldType.TextField:
                    field = new TextField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((TextField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((TextField)field).MaxLength = (int?)data["maxLength"];
                    break;
                case FieldType.UrlField:
                    field = new UrlField();
                    if (HasKey(data, "defaultValue") && data["defaultValue"] != null)
                        ((UrlField)field).DefaultValue = (string)data["defaultValue"];
                    if (HasKey(data, "maxLength") && data["maxLength"] != null)
                        ((UrlField)field).MaxLength = (int?)data["maxLength"];
                    if (HasKey(data, "openTargetInNewWindow") && data["openTargetInNewWindow"] != null)
                        ((UrlField)field).OpenTargetInNewWindow = (bool?)data["openTargetInNewWindow"];
                    break;
                default:
                    {
                        FieldResponse response = new FieldResponse();
                        response.Timestamp = DateTime.UtcNow;
                        response.Success = false;
                        response.Message = "Not supported field type!";
                        response.Success = false;
                        return response;
                    }
            }

            field.Id = id.HasValue && id.Value != Guid.Empty ? id.Value : Guid.NewGuid();
            field.Name = name;
            field.Label = label;
            field.PlaceholderText = placeholderText;
            field.Description = description;
            field.HelpText = helpText;
            field.Required = required;
            field.Unique = unique;
            field.Searchable = searchable;
            field.Auditable = auditable;
            field.System = system;

            return CreateField(entityId, field.MapTo<InputField>());
        }