obtenerData<T extends ColeccionBase> method

Future<Map<String, dynamic>> obtenerData<T extends ColeccionBase>({
  1. required String coleccion,
  2. required String consulta,
  3. required List<List<String>> argsLocalBD,
  4. required String skip,
  5. Map<String, dynamic>? project,
  6. QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  7. List<String>? union,
  8. bool? obtieneEsquema,
  9. String? concatenar,
  10. String? ordenar,
  11. String? limit,
  12. ModeToWork? modeToWork,
})

Funcion Utilizada para Obtener datos ModeToWork este parametro es opcional y se lo utiliza para forzar un estado offline o online Estructura de respuesta ok

{
  'data':[...],
  'totalItems': 0,
}

data es un List<Map<String, dynamic>> con los datos obtenidos cada objeto dentro de la lista tiene el siguiente formato:

{
  'idServer': 'idServer',
  'idMobile': 'idMobile',
  'eTransfer': 'eTransfer',
  'creadoEl': 'creadoEl',
  'estado': 'estado',
  'coleccion': 'coleccion',
  'data': {...},
  'dataOriginal': '{...}',
  'idAuth': 'idAuth',
  'coleccionAuth': 'coleccionAuth',
}

totalItems es un int con la cantidad de registros

Implementation

Future<Map<String, dynamic>> obtenerData<T extends ColeccionBase>(
    {required String coleccion,
    required String consulta,
    required List<List<String>> argsLocalBD,
    required String skip,
    Map<String, dynamic>? project,
    QueryPropertiesWrapper<T>? queryPropertiesWrapper,
    List<String>? union,
    bool? obtieneEsquema,
    String? concatenar,
    String? ordenar,
    String? limit,
    ModeToWork? modeToWork}) async {
  final response = await apiRest.obtener<T>(
      coleccion: coleccion,
      consulta: consulta,
      argsLocalBD: argsLocalBD,
      project: project,
      queryPropertiesWrapper: queryPropertiesWrapper,
      ordenar: ordenar,
      union: union,
      concatenar: concatenar,
      limit: limit ?? '25',
      skip: skip);

  if (response.containsKey(EnvironmentApiRest.dataNOk)) {
    return response;
  }

  final List<Map<String, dynamic>> lstData = [];

  if (response.containsKey(EnvironmentApiRest.dataOk) &&
      response[EnvironmentApiRest.data].isNotEmpty) {
    // Map<String, dynamic>? jsonEsquema;
    // if (obtieneEsquema ?? false) {
    //   jsonEsquema = await apiRest.obtieneEsquema(
    //       valor: coleccion, modeToWork: modeToWork ?? apiRest.modeToWork);
    // }
    for (final item in response[EnvironmentApiRest.data]) {
      lstData.add(await obtieneData<T>(
        item,
        // jsonEsquema, modeToWork ?? apiRest.modeToWork
      ));
    }
  }
  return {
    EnvironmentApiRest.data: lstData,
    EnvironmentApiRest.totalItems:
        response[EnvironmentApiRest.totalItems] ?? 0,
  };
}