|
@@ -994,8 +994,8 @@ class RepoService<T> {
|
|
|
await RepoService().guardar(productoApi);
|
|
|
} else {
|
|
|
// Producto sin cambios
|
|
|
- print(
|
|
|
- "Producto sin cambios o datos insuficientes: ${productoApi.nombre}");
|
|
|
+ // print(
|
|
|
+ // "Producto sin cambios o datos insuficientes: ${productoApi.nombre}");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1036,10 +1036,17 @@ class RepoService<T> {
|
|
|
orElse: () => Permiso(),
|
|
|
);
|
|
|
|
|
|
- if (permisoLocal.id != null && permisoApi.modificado != null) {
|
|
|
+ if (permisoLocal.id != null &&
|
|
|
+ permisoApi.modificado != null &&
|
|
|
+ (permisoLocal.modificado == null ||
|
|
|
+ permisoApi.modificado!.isAfter(permisoLocal.modificado!))) {
|
|
|
+ print('Actualizando permiso con ID: ${permisoApi.id}');
|
|
|
await RepoService().guardar(permisoApi);
|
|
|
} else if (permisoLocal.id == null) {
|
|
|
+ print('Insertando nuevo permiso con ID: ${permisoApi.id}');
|
|
|
await RepoService().guardar(permisoApi);
|
|
|
+ } else {
|
|
|
+ //print('Permiso sin cambios: ${permisoApi.id}');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1057,24 +1064,60 @@ class RepoService<T> {
|
|
|
orElse: () => Usuario(),
|
|
|
);
|
|
|
|
|
|
+ // Comprobar si realmente se necesita actualizar el usuario basado en la fecha de modificado
|
|
|
if (usuarioLocal.id != 0 &&
|
|
|
usuarioApi.modificado != null &&
|
|
|
(usuarioLocal.modificado == null ||
|
|
|
usuarioApi.modificado!.isAfter(usuarioLocal.modificado!))) {
|
|
|
+ print('Actualizando usuario con ID: ${usuarioApi.id}');
|
|
|
await RepoService().guardar(usuarioApi);
|
|
|
- await _guardarPermisosUsuario(db, usuarioApi.id!, usuarioApi.permisos!);
|
|
|
- } else {
|
|
|
+
|
|
|
+ // Comparar permisos antes de actualizarlos
|
|
|
+ await _actualizarPermisosUsuario(
|
|
|
+ db, usuarioApi.id!, usuarioApi.permisos!);
|
|
|
+ } else if (usuarioLocal.id == 0) {
|
|
|
+ print('Insertando nuevo usuario con ID: ${usuarioApi.id}');
|
|
|
await RepoService().guardar(usuarioApi);
|
|
|
+
|
|
|
+ // Insertar los permisos correspondientes
|
|
|
await _guardarPermisosUsuario(db, usuarioApi.id!, usuarioApi.permisos!);
|
|
|
+ } else {
|
|
|
+ //print('Usuario sin cambios: ${usuarioApi.id}');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Future<void> _actualizarPermisosUsuario(
|
|
|
+ Database db, int idUsuario, List<String> permisosApi) async {
|
|
|
+ // Obtener los permisos actuales del usuario
|
|
|
+ var permisosLocalesQuery = await db.query(
|
|
|
+ 'UsuarioPermiso',
|
|
|
+ where: 'idUsuario = ?',
|
|
|
+ whereArgs: [idUsuario],
|
|
|
+ );
|
|
|
+ List<String> permisosLocales = permisosLocalesQuery
|
|
|
+ .map((permiso) => permiso['idPermiso'] as String)
|
|
|
+ .toList();
|
|
|
+
|
|
|
+ // Comparar los permisos del API con los locales
|
|
|
+ bool sonIguales = _listasIguales(permisosLocales, permisosApi);
|
|
|
+
|
|
|
+ if (!sonIguales) {
|
|
|
+ // Si los permisos no son iguales, actualizarlos
|
|
|
+ print('Actualizando permisos del usuario con ID: $idUsuario');
|
|
|
+ await _guardarPermisosUsuario(db, idUsuario, permisosApi);
|
|
|
+ } else {
|
|
|
+ print('Permisos del usuario con ID: $idUsuario no han cambiado.');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
Future<void> _guardarPermisosUsuario(
|
|
|
Database db, int idUsuario, List<String> permisos) async {
|
|
|
+ // Eliminar los permisos actuales solo si hay cambios
|
|
|
await db.delete('UsuarioPermiso',
|
|
|
where: 'idUsuario = ?', whereArgs: [idUsuario]);
|
|
|
|
|
|
+ // Insertar los nuevos permisos
|
|
|
for (var idPermiso in permisos) {
|
|
|
await db.insert('UsuarioPermiso', {
|
|
|
'idUsuario': idUsuario,
|
|
@@ -1082,4 +1125,14 @@ class RepoService<T> {
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ bool _listasIguales(List<String> lista1, List<String> lista2) {
|
|
|
+ if (lista1.length != lista2.length) return false;
|
|
|
+ lista1.sort();
|
|
|
+ lista2.sort();
|
|
|
+ for (int i = 0; i < lista1.length; i++) {
|
|
|
+ if (lista1[i] != lista2[i]) return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|