示例#1
0
        private DataSubmissionResult UpdateDataRecord(SubmitDataRecord submitDataRecord, string user)
        {
            int recordId = (int)submitDataRecord.MergeCriteria.SetId;

            Dictionary <int, InMemoryRecord> database = amplaDatabase.GetModuleRecords(submitDataRecord.Module.ToString());

            InMemoryRecord record   = FindRecord(database, submitDataRecord.Location, submitDataRecord.Module, recordId);
            DateTime       editTime = DateTime.UtcNow;

            foreach (Field field in submitDataRecord.Fields)
            {
                string oldValue = string.Empty;

                FieldValue fieldValue = record.Find(field.Name);
                if (fieldValue == null)
                {
                    record.Fields.Add(new FieldValue(field.Name, field.Value));
                }
                else
                {
                    oldValue         = fieldValue.Value;
                    fieldValue.Value = field.Value;
                }
                AddAuditRecord(record, editTime, field.Name, oldValue, field.Value, user);
            }

            return(new DataSubmissionResult
            {
                RecordAction = RecordAction.Update,
                SetId = recordId
            });
        }
示例#2
0
        private DataSubmissionResult InsertDataRecord(SubmitDataRecord submitDataRecord, string user)
        {
            string module = submitDataRecord.Module.ToString();
            Dictionary <int, InMemoryRecord> database = amplaDatabase.GetModuleRecords(module);
            int setId = amplaDatabase.GetNewSetId(module);

            setId++;
            GetView        view        = amplaConfiguration.GetViewForLocation(module, submitDataRecord.Location);
            InMemoryRecord amplaRecord = new InMemoryRecord(view)
            {
                Location = submitDataRecord.Location,
                Module   = module,
                RecordId = setId
            };

            foreach (Field field in submitDataRecord.Fields)
            {
                amplaRecord.Fields.Add(new FieldValue(field.Name, field.Value));
            }

            AddDefaultFields(amplaRecord, user);

            database[setId] = amplaRecord;
            return(new DataSubmissionResult
            {
                RecordAction = RecordAction.Insert,
                SetId = setId
            });
        }
        public bool Bind()
        {
            if (existing == null)
            {
                return(false);
            }
            if (update == null)
            {
                return(false);
            }

            if (modelProperties.GetLocation(existing) != modelProperties.GetLocation(update))
            {
                return(false);
            }

            SubmitDataRecord record = new SubmitDataRecord
            {
                Location      = modelProperties.GetLocation(existing),
                Module        = modelProperties.Module,
                MergeCriteria = new MergeCriteria
                {
                    SetId = ModelIdentifier.GetValue <TModel, long>(update)
                }
            };

            List <Field> fields = new List <Field>();

            foreach (FieldMapping fieldMapping in amplaViewProperties.GetFieldMappings())
            {
                if (fieldMapping.CanWrite)
                {
                    string existingField;
                    string updateField;
                    if (fieldMapping.TryResolveValue(modelProperties, existing, out existingField) &&
                        fieldMapping.TryResolveValue(modelProperties, update, out updateField))
                    {
                        if (updateField != existingField)
                        {
                            Field field = new Field {
                                Name = fieldMapping.Name, Value = updateField
                            };
                            fields.Add(field);
                        }
                    }
                }
            }
            if (fields.Count > 0)
            {
                record.Fields = fields.ToArray();
                records.Add(record);
            }

            return(records.Count > 0);
        }
示例#4
0
        public bool Bind()
        {
            if (models.Count == 0)
            {
                return(false);
            }

            foreach (TModel model in models)
            {
                SubmitDataRecord record = new SubmitDataRecord
                {
                    Location      = modelProperties.GetLocation(model),
                    Module        = modelProperties.Module,
                    MergeCriteria = null
                };

                List <Field> fields = new List <Field>();
                foreach (FieldMapping fieldMapping in amplaViewProperties.GetFieldMappings())
                {
                    if (fieldMapping.CanWrite)
                    {
                        string value;
                        if (fieldMapping.TryResolveValue(modelProperties, model, out value))
                        {
                            Field field = new Field {
                                Name = fieldMapping.Name, Value = value
                            };
                            fields.Add(field);
                        }
                    }
                }
                if (fields.Count > 0)
                {
                    record.Fields = fields.ToArray();
                    records.Add(record);
                }
            }

            return(records.Count > 0);
        }
示例#5
0
        public SubmitDataRecord ConvertToSubmitDataRecord()
        {
            MergeCriteria mergeCriteria = RecordId > 0
                      ? new MergeCriteria {
                SetId = RecordId
            }
                      : null;

            AmplaModules amplaModule;

            Enum.TryParse(Module, out amplaModule);
            SubmitDataRecord submitRecord = new SubmitDataRecord
            {
                Location      = Location,
                Module        = amplaModule,
                MergeCriteria = mergeCriteria,
                Fields        = FieldsToUpdate().Select(fieldValue => new Field {
                    Name = fieldValue.Name, Value = fieldValue.Value
                }).ToArray()
            };

            return(submitRecord);
        }