cambiaEstado<T extends ColeccionBase> method

Future<Map<String, dynamic>> cambiaEstado<T extends ColeccionBase>({
  1. required String coleccion,
  2. required String id,
  3. required String estado,
  4. QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  5. bool? runIsolate,
  6. String? tipoId,
})

Funcion utilizada para actualizar el estodo de un registro coleccion - es la coleccion que se quiere leer id - es el id del registro que se quiere actualizar. Si se esta trabajando en modo offline se debe pasar el idMobile y si se esta trabajando en modo online se debe pasar el idServer estado - es el estado que se le quiere asignar al registro queryPropertiesWrapper - es un objeto de tipo QueryPropertiesWrapper que contiene las propiedades que se van a utilizar para la consulta runIsolate - es un valor booleano que indica si se va a ejecutar en un isolate tipoId - es el tipo de id que se va a utilizar para la consulta si es idMobile o idServer

Implementation

Future<Map<String, dynamic>> cambiaEstado<T extends ColeccionBase>({
  required String coleccion,
  required String id,
  required String estado,
  QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  bool? runIsolate,
  String? tipoId,
}) async {
  return FlutterUtilsProvider.ejecutaPeticion(() async {
    tipoId ??= (modeToWork == ModeToWork.online)
        ? EnvironmentApiRest.idServer
        : EnvironmentApiRest.idMobile;
    if (tipoId != EnvironmentApiRest.idMobile &&
        tipoId != EnvironmentApiRest.idServer) {
      throw 'El tipo de id no es valido debe ser idMobile o idServer';
    }
    if (tipoId != EnvironmentApiRest.idServer &&
        modeToWork == ModeToWork.online) {
      throw 'El tipo de id no es valido debe ser idServer para trabajar en modo online';
    }

    if (modeToWork == ModeToWork.online) {
      final response = await cloudDb.cambiaEstado(
          idServer: id,
          coleccion: coleccion,
          estado: estado,
          runIsolate: (runIsolate ?? false));
      return response;
    } else {
      final response = await _obtieneDataByIdOffline(
          coleccion: coleccion,
          argsLocaBD: [
            [tipoId!],
            ['='],
            [id]
          ],
          queryPropertiesWrapper: queryPropertiesWrapper);

      if (response.isEmpty) {
        throw 'No se encontro el registro que se quiere actualizar el campo estado';
      }

      if (response.first.estado == estado) {
        return {
          EnvironmentApiRest.dataOk: true,
          EnvironmentApiRest.data: estado,
          EnvironmentApiRest.msgStatus:
              EnvironmentApiRest.literalDataSinModificar
        };
      }
      return await mobileDb.cambiaEstado<T>(
          coleccion: coleccion,
          id: id,
          tipoId: tipoId!,
          estado: estado,
          queryPropertiesWrapper: queryPropertiesWrapper);
    }
  });
}