agregaDynamicValueInMap method
Future<void>
agregaDynamicValueInMap(
{ - required Map<String, dynamic> data,
- required Map<String, Map<String, dynamic>> lstCamposConDataAdicional,
- Map<String, dynamic>? project,
- required Map<String, dynamic> esquema,
- bool propertyInArrayObject = true,
})
Implementation
Future<void> agregaDynamicValueInMap(
{required Map<String, dynamic> data,
required Map<String, Map<String, dynamic>> lstCamposConDataAdicional,
Map<String, dynamic>? project,
required Map<String, dynamic> esquema,
bool propertyInArrayObject = true}) async {
try {
for (final campo in lstCamposConDataAdicional.entries) {
final keys = FlutterUtilsProvider.descomponerKey(campo.key);
dynamic dataKey;
List<String> keysToAddDynamicValue = [];
if (keys.length > 1) {
(keysToAddDynamicValue, dataKey) =
FlutterUtilsProvider.determinaEstructuraContenedoraDelKey(
keys, data);
} else {
keysToAddDynamicValue = [keys.last];
dataKey = data;
}
Future<void> updateItem(Map<String, dynamic> item) async {
for (final key in keysToAddDynamicValue) {
if (key != keysToAddDynamicValue.last) {
if (!item.containsKey(key)) {
ApiRest.logDebug(
'agregaDynamicValueInMap() El campo $key no existe en el mapa');
return;
}
item = item[key];
} else {
if (item.containsKey(key)) {
///Obtengo unicamente la porcion del esquema que corresponde al campo
///esto es para utilizar el redex del campo si es que existe
Map<String, dynamic> subesquemaItem =
FlutterUtilsProvider.obtenerEsquemaSegunKey(esquema, keys);
dynamic descripcion = await _determinaDynamicValue(
esquemaItem: subesquemaItem,
vData: item[key],
dataAdicional: campo.value,
propertyInArrayObject: propertyInArrayObject,
project: project);
if (descripcion is List) {
descripcion = descripcion.join(' ');
}
item['$key${EnvironmentApiRest.dynamicValue}'] = descripcion;
}
}
}
}
if (dataKey is List) {
for (var item in dataKey) {
if (item is Map<String, dynamic>) {
await updateItem(item);
}
}
} else if (dataKey is Map<String, dynamic>) {
await updateItem(dataKey);
} else {
ApiRest.logDebug(
'agregaDynamicValueInMap() dataKey=> $dataKey no es una lista o un mapa para agregar dynamicValue');
}
}
} catch (error) {
ApiRest.logDebug('Error en agregaDynamicValueInMap: $error');
}
}