uploadInfoToServer<T extends ColeccionBase> method

Future<Map<String, dynamic>> uploadInfoToServer<T extends ColeccionBase>({
  1. required String coleccion,
  2. required String versionData,
  3. String? ordenar,
  4. QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  5. T? modelo,
})

Funcion utilizada para subir la informacion del dispositivo al servidor lee los registros con el campo eTransfer igual a D y los envia al servidor parametros solicitados requeridos parametros solicitados requeridos coleccion - es la coleccion que se quiere leer y obtener los registros ordenar - es el orden con el que se va a devolver la lista de registros ejemplo jsonEncode({'data.idCiudadano': 1}) queryPropertiesWrapper - es un objeto de tipo QueryPropertiesWrapper que contiene las propiedades que se van a utilizar para la consulta si no se envia nada se toma por defecto el objeto ColeccionObjBoxWrapper() modelo - es el modelo que se va a utilizar para la consulta si no se envia nada se toma por defecto el objeto ColeccionObjBox()

Implementation

Future<Map<String, dynamic>> uploadInfoToServer<T extends ColeccionBase>({
  required String coleccion,
  required String versionData,
  String? ordenar,
  QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  T? modelo,
}) async {
  try {
    modelo ??= ColeccionObjBox() as T;
    queryPropertiesWrapper ??=
        ColeccionObjBoxWrapper() as QueryPropertiesWrapper<T>;

    final response = await mobileDb.obtenerRegistrosNoTransferidos<T>(
      coleccion: coleccion,
      ordenar: ordenar,
      queryPropertiesWrapper: queryPropertiesWrapper,
    );
    if (response.containsKey(EnvironmentApiRest.dataOk) &&
        response[EnvironmentApiRest.data].isNotEmpty) {
      for (int i = 0; i < response[EnvironmentApiRest.data].length; i++) {
        final T item = response[EnvironmentApiRest.data][i];

        final responseGuarda = await cloudDb.guardar(
            coleccion: coleccion,
            versionData: versionData,
            data: item.tojson(),
            runIsolate: false);

        if (!responseGuarda.containsKey(EnvironmentApiRest.dataOk)) {
          return responseGuarda;
        }

        final idServer = [...responseGuarda[EnvironmentApiRest.data]]
                .first[EnvironmentApiRest.idColeccion] ??
            '';

        await mobileDb.guardar<T>(
            data: item.copyWith(
                eTransfer: '',
                idServer: (idServer.isNotEmpty) ? idServer : null),
            queryPropertiesWrapper: queryPropertiesWrapper);
      }
    }
    return {EnvironmentApiRest.dataOk: true};
  } catch (error) {
    return {
      EnvironmentApiRest.dataNOk: 'NOK',
      EnvironmentApiRest.error: 'Error al transferir la informacion $error'
    };
  }
}