Пример #1
0
        public static ViewModelAttributeValue Create(IModelAttribute attribute, IModelValue value)
        {
            ViewModelAttributeValue viewAttributeValue = new ViewModelAttributeValue()
            {
                ObjectState = value != null ? value.ObjectState : ObjectState.New, AttributeID = attribute.AttributeID, DataType = attribute.DataType, DisplayText = attribute.DisplayText, IsKey = attribute.IsKey, VariableUnits = attribute.VariableUnits
            };

            foreach (EAV.Model.IModelUnit unit in attribute.Units)
            {
                viewAttributeValue.Units.Add(ViewModelUnit.Create(unit));
            }

            if (value != null)
            {
                viewAttributeValue.Value = value.RawValue;

                if (value.Unit != null)
                {
                    viewAttributeValue.UnitID   = value.Unit.UnitID;
                    viewAttributeValue.UnitText = value.Unit.DisplayText;
                }
            }
            else if (!attribute.VariableUnits.GetValueOrDefault(true) && attribute.Units.Count == 1)
            {
                viewAttributeValue.UnitID   = attribute.Units.First().UnitID;
                viewAttributeValue.UnitText = attribute.Units.First().DisplayText;
            }

            return(viewAttributeValue);
        }
Пример #2
0
        public static ViewModelInstance Create(IModelContainer container, IModelSubject subject, IModelInstance instance, ViewModelInstance parentInstance, ref int nextInstanceID)
        {
            ViewModelInstance viewInstance = new ViewModelInstance()
            {
                ObjectState = instance != null ? instance.ObjectState : ObjectState.New, ContainerID = container.ContainerID, SubjectID = subject != null ? subject.SubjectID : 0, InstanceID = instance != null ? instance.InstanceID : nextInstanceID--, ParentInstanceID = parentInstance != null ? parentInstance.InstanceID : null
            };

            foreach (EAV.Model.IModelAttribute attribute in container.Attributes.OrderBy(it => it.Sequence))
            {
                viewInstance.Values.Add(ViewModelAttributeValue.Create(attribute, instance != null ? instance.Values.SingleOrDefault(it => it.AttributeID == attribute.AttributeID) : null));
            }

            foreach (IModelChildContainer childContainer in container.ChildContainers.OrderBy(it => it.Sequence))
            {
                viewInstance.ChildContainers.Add(ViewModelContainer.Create(childContainer, subject, viewInstance, ref nextInstanceID));
            }

            return(viewInstance);
        }