copyValuesFrom method
Copy values from other
db model fields to this fields.
other
The other model want to copy values from.
fullCopy
Copy values with (id, serverId, creationTime, modificationTime).
Implementation
void copyValuesFrom(DbModel other,
{List<FieldWithValue>? fieldsToCopy, bool fullCopy = false}) {
// assert(runtimeType == other.runtimeType);
FieldWithValue? Function(String name) getCorrepondingField;
getCorrepondingField = (String name) {
for (var f in getAllFields()) {
if (f != null) {
if (f.columnName!.trim().toLowerCase() == name.trim().toLowerCase()) {
return f;
}
}
}
return null;
};
List<FieldWithValue> fields = [];
if (fieldsToCopy != null) {
for (var f in fieldsToCopy) {
var corrField = getCorrepondingField(f.columnName!);
if (corrField != null) fields.add(corrField);
}
}
Map<String?, FieldWithValue?> fieldsMap = {};
for (var e in (fullCopy
? getAllFields()
: fieldsToCopy == null
? getFields()!
: fields)) {
fieldsMap[e?.columnName] = e;
}
Map<String, FieldWithValue> otherFieldsMap = {};
var otherFields = (fullCopy
? other.getAllFields()
: fieldsToCopy == null
? other.getFields()
: other._getNamedFields(
fieldsToCopy.map((e) => e.columnName).toList()));
otherFields?.forEach((e) => otherFieldsMap[e!.columnName!] = e);
//Copy values
for (var k in fieldsMap.keys) {
var thisField = fieldsMap[k];
var otherField = otherFieldsMap[k];
if (thisField != null && otherField != null) {
thisField.value = otherField.value;
}
}
}