cambiaEstado<T extends ColeccionBase> method
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);
}
});
}