Exemplo n.º 1
0
        /// <summary>
        /// Loads the sub fields.
        /// </summary>
        /// <param name="onSubfieldsLoaded">The on subfields loaded.</param>
        public void LoadSubFields(Action onSubfieldsLoaded)
        {
            Subfields.Clear();

            if (Model == null)
            {
                onSubfieldsLoaded();
                return;
            }

            if (Model.ColumnType == ColumnTypes.Reference || Model.ColumnType == ColumnTypes.MultiReference)
            {
                FieldList.BeginGetCrossReferenceSubfields(
                    Model.DefinedIn,
                    Model.SystemName,
                    (o, result) =>
                        {
                            if (result.Error == null)
                            {
                                foreach (var field in result.Object.Where(f => ParentStepViewModel.CanSelectField(f.FieldType.ColumnType)))
                                {
                                    var vm = new DisplayFieldViewModel(field, this);
                                    Subfields.Add(vm);
                                }
                            }

                            onSubfieldsLoaded();
                        });

                return;
            }

            if (Model.ColumnType == ColumnTypes.ReverseReference || Model.ColumnType == ColumnTypes.ReverseMultiReference || Model.ColumnType == ColumnTypes.TreeView)
            {
                FieldList.BeginGetReverseCrossReferenceSubfields(
                    Model.DefinedIn,
                    Model.SystemName,
                    (o, result) =>
                        {
                            if (result.Error == null)
                                foreach (var vm in result.Object.Where(f => ParentStepViewModel.CanSelectField(f.FieldType.ColumnType)).Select(field => new DisplayFieldViewModel(field, this)))
                                    Subfields.Add(vm);

                            onSubfieldsLoaded();
                        });

                return;
            }

            onSubfieldsLoaded();
        }
        private void SetupProcessFields()
        {
            AvailableFields.Clear();

            if (Parent.Model.IsStateEnabled)
            {
                var currentStateViewModel =
                    new DisplayFieldViewModel(
                        new FieldInfo(
                            0,
                            Constants.CurrentStateColumnName,
                            Constants.CurrentStateColumnName,
                            new FieldTypeInfo(null, ColumnTypes.String.ToString(), true),
                            Parent.Model.SystemName,
                            ColumnTypes.String,
                            Guid.Empty,
                            true,
                            false,
                            false),
                        this);

                AvailableFields.Add(currentStateViewModel);
            }

            foreach (var f in Parent.Model.GetAllFields().Where(f => CanSelectField(f.FieldType.ColumnType)))
            {
                var expressionStep = (ExpressionsStepEdit)f.StepList.FirstOrDefault(s => s is ExpressionsStepEdit);
                var isCalculated = expressionStep != null && !string.IsNullOrEmpty(expressionStep.CalculatedExpression);
                var isRequired = Parent.Model.RequiredRuleConfigList.SelectMany(x => x.FieldList).Any(x => x.FieldGuid == f.Guid);
                var fieldViewModel = new DisplayFieldViewModel(new FieldInfo(f.Id, f.Name, f.SystemName, f.FieldType, Parent.Model.SystemName, f.FieldType.ColumnType, f.Guid, false, isCalculated, isRequired), this);
                fieldViewModel.IsSelected = _viewConfigurator.ExistingRecordFields.Any(erf => erf.FullPath == fieldViewModel.FullSystemPath);
                AvailableFields.Add(fieldViewModel);
            }

            RaisePropertyChanged(() => AvailableFields);
        }