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 }); }
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); }
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); }
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); }