コード例 #1
0
        public virtual string GenerateParameterConfigs(StringBuilder sb)
        {
            DataValueTypeManager dataValueTypeManager = UserConnection.DataValueTypeManager;

            sb.Append("{");
            bool isNotFirstProperty = false;
            var  processSchema      = Owner.Schema;
            var  schemaElement      = (ProcessSchemaUserTask)GetSchemaElement();

            foreach (ProcessSchemaParameter parameter in schemaElement.Parameters)
            {
                if (parameter.CreatedInSchemaUId != processSchema.UId)
                {
                    continue;
                }
                var    dataValueTypeItem = dataValueTypeManager.GetItemByUId(parameter.DataValueTypeUId);
                object parameterValue    = GetParameterValue(parameter);
                if (parameter.DataValueType.IsLookup)
                {
                    Guid guidPropertyValue = Guid.Empty;
                    if (parameterValue != null)
                    {
                        guidPropertyValue = (Guid)parameterValue;
                    }
                    if (guidPropertyValue == Guid.Empty)
                    {
                        AppendJSonProperty(sb, parameter.Name, null, 0, ref isNotFirstProperty);
                        continue;
                    }
                    string displayValue = string.Empty;
                    if (parameter.ParentMetaSchema == null)
                    {
                        parameter.ParentMetaSchema = processSchema;
                        Log.Warn("[AutoGeneratedPageUserTask]. Parameter metadata modified at runtime.");
                    }
                    if (parameter.ReferenceSchema.PrimaryDisplayColumn != null)
                    {
                        if (guidPropertyValue != Guid.Empty)
                        {
                            var entity = parameter.ReferenceSchema.CreateEntity(UserConnection);
                            entity.UseAdminRights = false;
                            entity.FetchFromDB(parameter.ReferenceSchema.PrimaryColumn, guidPropertyValue,
                                               new Collection <CoreEntitySchemaColumn> {
                                parameter.ReferenceSchema.PrimaryDisplayColumn
                            });
                            displayValue = entity.PrimaryDisplayColumnValue;
                        }
                    }
                    var value = new LookupColumnValue {
                        Value        = parameterValue?.ToString(),
                        DisplayValue = displayValue
                    };
                    AppendJSonProperty(sb, parameter.Name, value, 1, ref isNotFirstProperty);
                }
                else if (dataValueTypeItem.GroupName == "Dates")
                {
                    if (parameterValue == null)
                    {
                        AppendJSonProperty(sb, parameter.Name, parameterValue, 0, ref isNotFirstProperty);
                        continue;
                    }
                    var dateTime = (DateTime)parameterValue;
                    if (dateTime == DateTime.MinValue)
                    {
                        AppendJSonProperty(sb, parameter.Name, parameterValue, 0, ref isNotFirstProperty);
                        continue;
                    }
                    if (dateTime.Kind == DateTimeKind.Local)
                    {
                        parameterValue = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified);
                    }
                    string value = DateTimeDataValueType.Serialize(parameterValue, TimeZoneInfo.Utc);
                    string dateTimeObjectValue =
                        $"{{\"dataValueType\":{(int)parameter.DataValueType.ToEnum()}, \"value\":\"{value}\"}}";
                    AppendJSonProperty(sb, parameter.Name, dateTimeObjectValue, 3, ref isNotFirstProperty);
                }
                else if (dataValueTypeItem.Name == "Boolean")
                {
                    AppendJSonProperty(sb, parameter.Name, parameterValue, 2, ref isNotFirstProperty);
                }
                else
                {
                    byte type = parameterValue == null ? (byte)0 : (byte)1;
                    AppendJSonProperty(sb, parameter.Name, parameterValue, type, ref isNotFirstProperty);
                }
            }
            sb.Append("}");
            return(sb.ToString());
        }