private static Field LoadField(JToken fieldJson)
        {
            var   type = ParseEnum <FieldType>(fieldJson["Type"]);
            Field field;

            switch (type)
            {
            case FieldType.Formula:
                field = new FormulaField
                {
                    OutputType = ParseEnum <FormulaOutputType>(fieldJson["OutputType"]),
                    Values     = LoadListValues(fieldJson["Values"]),
                };
                break;

            case FieldType.List:
                field = new ListField
                {
                    Multiplicity = ParseEnum <Multiplicity>(fieldJson["Multiplicity"]),
                    Values       = LoadListValues(fieldJson["Values"]),
                };
                break;

            case FieldType.Reference:
                field = new ReferenceField
                {
                    Multiplicity = ParseEnum <Multiplicity>(fieldJson["Multiplicity"]),
                };
                break;

            default:
                field = new Field();
                break;
            }
            field.Id         = (int)fieldJson["Id"];
            field.AppId      = (int)fieldJson["AppId"];
            field.Name       = (string)fieldJson["Name"];
            field.Type       = type;
            field.Status     = ParseEnum <FieldStatus>(fieldJson["Status"]);
            field.IsRequired = (bool)fieldJson["IsRequired"];
            field.IsUnique   = (bool)fieldJson["IsUnique"];
            return(field);
        }
示例#2
0
 private void Awake()
 {
     formulaField = FindObjectOfType <FormulaField>();
     SetRandomNumber();
 }
示例#3
0
        private static void ProcessField(Field fld, XmlWriter xmlw, string type)
        {
            xmlw.WriteStartElement(type + "Field");
            xmlw.WriteAttributeString("Description", fld.Description);
            xmlw.WriteAttributeString("FormulaForm", fld.FormulaForm);
            xmlw.WriteAttributeString("HeadingText", fld.HeadingText);
            xmlw.WriteAttributeString("IsRecurring", fld.IsRecurring.ToStringSafe());
            xmlw.WriteAttributeString("Kind", fld.Kind.ToStringSafe());
            xmlw.WriteAttributeString("Length", fld.Length.ToStringSafe());
            xmlw.WriteAttributeString("LongName", fld.LongName);
            xmlw.WriteAttributeString("Name", fld.Name);
            xmlw.WriteAttributeString("ShortName", fld.ShortName);
            xmlw.WriteAttributeString("Type", fld.Type.ToStringSafe());
            xmlw.WriteAttributeString("UseCount", fld.UseCount.ToStringSafe());
            switch (fld.Kind)
            {
            case CrFieldKindEnum.crFieldKindDBField:
            {
                DBField dbf = (DBField)fld;
                xmlw.WriteAttributeString("TableAlias", dbf.TableAlias);
                break;
            }

            case CrFieldKindEnum.crFieldKindFormulaField:
            {
                FormulaField ff = (FormulaField)fld;
                xmlw.WriteAttributeString("FormulaNullTreatment", ff.FormulaNullTreatment.ToStringSafe());
                xmlw.WriteAttributeString("Text", ff.Text.ToStringSafe());
                xmlw.WriteAttributeString("Syntax", ff.Syntax.ToStringSafe());

                break;
            }

            case CrFieldKindEnum.crFieldKindGroupNameField:
            {
                GroupNameField gnf = (GroupNameField)fld;
                xmlw.WriteAttributeString("Group", gnf.Group.ConditionField.FormulaForm);
                break;
            }

            case CrFieldKindEnum.crFieldKindParameterField:
            {
                ParameterField pf = (ParameterField)fld;
                xmlw.WriteAttributeString("AllowCustomCurrentValues", pf.AllowCustomCurrentValues.ToStringSafe());
                xmlw.WriteAttributeString("AllowMultiValue", pf.AllowMultiValue.ToStringSafe());
                xmlw.WriteAttributeString("AllowNullValue", pf.AllowNullValue.ToStringSafe());
                if (pf.BrowseField != null)
                {
                    xmlw.WriteAttributeString("BrowseField", pf.BrowseField.FormulaForm);
                }
                xmlw.WriteAttributeString("DefaultValueSortMethod", pf.DefaultValueSortMethod.ToStringSafe());
                xmlw.WriteAttributeString("DefaultValueSortOrder", pf.DefaultValueSortOrder.ToStringSafe());
                xmlw.WriteAttributeString("EditMask", pf.EditMask);
                xmlw.WriteAttributeString("IsEditableOnPanel", pf.IsEditableOnPanel.ToStringSafe());
                xmlw.WriteAttributeString("IsOptionalPrompt", pf.IsOptionalPrompt.ToStringSafe());
                xmlw.WriteAttributeString("IsShownOnPanel", pf.IsShownOnPanel.ToStringSafe());

                xmlw.WriteAttributeString("ParameterType", pf.ParameterType.ToStringSafe());
                xmlw.WriteAttributeString("ReportName", pf.ReportName);
                xmlw.WriteAttributeString("ValueRangeKind", pf.ValueRangeKind.ToStringSafe());


                if (pf.CurrentValues != null)
                {
                    ProcessValues(pf.CurrentValues, xmlw, "Current");
                }
                if (pf.DefaultValues != null)
                {
                    ProcessValues(pf.DefaultValues, xmlw, "Default");
                }
                if (pf.InitialValues != null)
                {
                    ProcessValues(pf.InitialValues, xmlw, "Initial");
                }
                if (pf.Values != null)
                {
                    ProcessValues(pf.Values, xmlw, "");
                }
                ProcessValue(pf.MaximumValue as Value, xmlw, "Maximum");
                ProcessValue(pf.MinimumValue as Value, xmlw, "Minimum");


                break;
            }

            case CrFieldKindEnum.crFieldKindRunningTotalField:
            {
                RunningTotalField rtf = (RunningTotalField)fld;
                xmlw.WriteAttributeString("EvaluateCondition", ProcessCondition(rtf.EvaluateCondition));
                xmlw.WriteAttributeString("EvaluateConditionType", rtf.EvaluateConditionType.ToStringSafe());
                xmlw.WriteAttributeString("Operation", rtf.Operation.ToStringSafe());
                xmlw.WriteAttributeString("ResetCondition", ProcessCondition(rtf.ResetCondition));
                xmlw.WriteAttributeString("ResetConditionType", rtf.ResetConditionType.ToStringSafe());
                xmlw.WriteAttributeString("SummarizedField", rtf.SummarizedField.FormulaForm);
                break;
            }

            case CrFieldKindEnum.crFieldKindSpecialField:
            {
                SpecialField sf = (SpecialField)fld;
                xmlw.WriteAttributeString("SpecialType", sf.SpecialType.ToStringSafe());
                break;
            }

            case CrFieldKindEnum.crFieldKindSummaryField:
            {
                SummaryField smf = (SummaryField)fld;
                if (smf.Group != null)
                {
                    xmlw.WriteAttributeString("Group", smf.Group.ConditionField.FormulaForm);
                }
                xmlw.WriteAttributeString("Operation", smf.Operation.ToStringSafe());
                xmlw.WriteAttributeString("SummarizedField", smf.SummarizedField.FormulaForm);
                break;
            }

            case CrFieldKindEnum.crFieldKindUnknownField:
            {
                break;
            }
            }
            xmlw.WriteEndElement();
        }
示例#4
0
        //This function responsable for resolving formual and getting the value
        private static object GetFormulaFieldValue(PropertyInfo propertyInfo, T entity, FormulaField attFormual)
        {
            var formualFields = attFormual.Formula.Split(']');

            string       fieldName = "";
            object       fieldVal  = "";
            string       formula   = "";
            PropertyInfo innerPropertyInfo;
            object       formulaValue = null;

            formula = attFormual.Formula;

            for (int i = 0; i < formualFields.Length - 1; i++)
            {
                fieldName         = formualFields[i].Split('[')[1];
                innerPropertyInfo = entity.GetType().GetProperty(fieldName);
                fieldVal          = innerPropertyInfo.GetValue(entity, null);

                if (fieldVal != null)
                {
                    formula = formula.Replace("[" + fieldName + "]", fieldVal.ToString().Trim());
                }
            }

            if (propertyInfo.PropertyType == typeof(decimal) || propertyInfo.PropertyType == typeof(int) || propertyInfo.PropertyType == typeof(float))
            {
                formulaValue = MathEvaluator.Evaluate(formula);
                SetFieldValue(entity, propertyInfo, formulaValue);

                return(formulaValue);
            }

            //This only will be for default values on not numbers fields
            else
            {
                return(formula);
            }
        }