saveIndividuo method
- Map<
String, dynamic> individuo, - BuildContext context
Guarda un nuevo individuo localmente y trata de enviarlo a la API.
Implementation
Future<void> saveIndividuo(
Map<String, dynamic> individuo, BuildContext context) async {
try {
// 1) Insertar local en 'individuos'
await _dbHelper.insertIndividuo(individuo);
// 2) Intentar enviar a la API
bool enviado = await _saveToApi(individuo);
if (!enviado) {
// 3a) Si falla, guardar pendiente y notificar
await _dbHelper.insertPendingNewIndividuo(jsonEncode(individuo));
await _sendNotification(
'Sincronización Fallida',
'Individuo guardado local, se sincronizará luego.',
);
_showSnack(context,
'Guardado localmente. Se sincronizará cuando haya internet.');
} else {
// 3b) Si éxito, notificar y ya
final String idValue = individuo['id']?.toString() ?? '(sin id)';
await _sendNotification(
'Guardado Exitoso',
'Individuo con ID=$idValue sincronizado.',
);
_showSnack(context, 'Individuo creado exitosamente en la API.');
}
} catch (e) {
// Error en inserción local u otros
print('Error al guardar individuo: $e');
await _sendNotification('Error', 'Ocurrió un error al guardar: $e');
_showSnack(context, 'Error al guardar individuo: $e');
}
}