Пример #1
0
        public bool Bind()
        {
            if (response.RowSets.Length == 0)
            {
                return(false);
            }

            RowSet rowSet = response.RowSets[0];

            foreach (Row row in rowSet.Rows)
            {
                AmplaRecord model = new AmplaRecord(Convert.ToInt32(row.id))
                {
                    Module    = modelProperties.Module.ToString(),
                    ModelName = modelProperties.GetModelName()
                };

                foreach (var column in rowSet.Columns)
                {
                    model.AddColumn(column.displayName, DataTypeHelper.GetDataType(column.type));
                }

                foreach (XmlElement cell in row.Any)
                {
                    string field = XmlConvert.DecodeName(cell.Name);
                    string value = cell.InnerText;
                    model.SetValue(field, value);
                }

                model.SetMappedProperties(amplaViewProperties.GetFieldMappings());
                records.Add(model);
            }
            return(true);
        }
        public bool Bind()
        {
            versions.ModelName = modelProperties.GetModelName();

            AmplaRecordHistory <TModel> history       = new AmplaRecordHistory <TModel>(amplaRecord, auditRecord, viewProperties);
            List <AmplaRecordChanges>   recordChanges = history.Reconstruct();

            ModelVersion <TModel>[] modelVersions = new ModelVersion <TModel> [recordChanges.Count];

            TModel clonedModel = modelProperties.CloneModel(currentModel);

            for (int i = 0; i < modelVersions.Length; i++)
            {
                AmplaRecordChanges recordChange = recordChanges[i];
                bool isCurrent = i == (modelVersions.Length - 1);
                modelVersions[i] = new ModelVersion <TModel>(isCurrent, clonedModel)
                {
                    Version     = i + 1,
                    User        = recordChange.User,
                    VersionDate = recordChange.VersionDateTime,
                    Display     = recordChange.Display
                };
            }

            TModel current = currentModel;

            for (int i = modelVersions.Length - 1; i >= 0; i--)
            {
                var modelVersion = modelVersions[i];
                modelVersion.Model = modelProperties.CloneModel(current);
                AmplaRecordChanges recordChange = recordChanges[i];

                foreach (var field in recordChange.Changes)
                {
                    viewProperties.UpdateModel(current, field.Name, field.OriginalValue, false);
                }
                if (i == 0)
                {
                    modelVersion.Model = modelProperties.CloneModel(current);
                }
            }

            foreach (var modelVersion in modelVersions)
            {
                versions.Versions.Add(modelVersion);
            }
            return(true);
        }