guardar<T extends ColeccionBase> method
Future<Map<String, dynamic> >
guardar<T extends ColeccionBase>({
- required T data,
- required String versionData,
- QueryPropertiesWrapper<
T> ? queryPropertiesWrapper, - T? modelo,
- ModeToWork? modeToWork,
- String idFuncionBackend = '',
- Map<
String, dynamic> ? dataAdicionalBody,
Funcion utilizada para actualiza un registro
data - clase ColeccionObjBox la cual contiene los datos a
guardar
versionData - es la version de la coleccion que se va actualizar
Ejemplo para generar un nuevo Ciudadano:
CiudadanoModel ciudadano = CiudadanoModel(
nombre: 'Juan',
apellido: 'Perez',
tipoDocumento: 'DNI',
numeroDocumento: '24555666',
email: 'juanperez@gmail.com',
telefono: '5493751441205',
sexo: 'M',
fechaNacimiento: '01/01/1975',
nacionalidad: '631f7bc8afbdb0417d7bcf7a',
);
final response =
await ciudadanoDb.guardar(data: ciudadano, versionData: '1');
if (response.containsKey(Environment.dataOk)) {
ciudadano = response[Environment.data];
}
//Si la Actualizacion finaliza con exito el resultado es OK
return {
EnvironmentApiRest.dataOk: 'OK',
EnvironmentApiRest.data: data //<ColeccionObjBox>
EnvironmentApiRest.dataAtomica: true //bool .. si es atomico
};
//Si la Actualizacion finaliza con error el resultado es NOK
return {
EnvironmentApiRest.dataNOk: 'NOK',
EnvironmentApiRest.error: error //String
};
Consideraciones
[1] Si el proceso es Atomico entonces en data se obtiene
el registro de la coleccion que administra los procesos atomicos,
en caso contrario se obtiene el registro completo de la coleecion
que se esta actualizando.
[2] Si el proceso es Atomico entonces se establece en true el valor
del key `EnvironmentApiRest.dataAtomica`
Implementation
Future<Map<String, dynamic>> guardar<T extends ColeccionBase>({
required T data,
required String versionData,
QueryPropertiesWrapper<T>? queryPropertiesWrapper,
T? modelo,
ModeToWork? modeToWork,
String idFuncionBackend = '',
Map<String, dynamic>? dataAdicionalBody,
}) async {
modelo ??= ColeccionObjBox() as T;
modeToWork ??= this.modeToWork;
if (data.idServer.isNotEmpty) {
throw 'No se Puede Ejecutar esta funcion(GUARDAR) si el registro ya posee idServer';
}
return FlutterUtilsProvider.ejecutaPeticion(() async {
final response = await _guardarData<T>(
data: data,
versionData: versionData,
queryPropertiesWrapper: queryPropertiesWrapper,
modelo: modelo,
idFuncionBackend: idFuncionBackend,
dataAdicionalBody: dataAdicionalBody,
modeToWork: modeToWork!);
if (!response.containsKey(EnvironmentApiRest.dataOk)) {
return response;
}
final List<T> items = [...response[EnvironmentApiRest.data] ?? []];
if (response.containsKey(EnvironmentApiRest.dataOk)) {
if (items.isEmpty) {
throw 'No se encontro el registro que se quiere guardar';
}
return {
EnvironmentApiRest.dataOk: 'OK',
EnvironmentApiRest.data: items.first,
EnvironmentApiRest.dataAtomica:
response[EnvironmentApiRest.dataAtomica] ?? false,
};
}
return response;
});
}