import 'package:flutter/material.dart'; import 'package:sqflite/sqflite.dart'; import '../../core/services/services.dart'; import '../../core/models/models.dart'; class SucursalViewModel extends ChangeNotifier { List _sucursales = []; bool _isLoading = false; List get sucursales => _sucursales; bool get isLoading => _isLoading; Future fetchLocalSucursales() async { var db = await DatabaseService().db; var query = await db! .query('Sucursal', where: 'eliminado IS NULL', orderBy: 'id asc'); _sucursales = query.map((element) => Sucursal.fromJson(element)).toList(); notifyListeners(); } Future setSelectedSucursal(Sucursal sucursal) async { var db = await DatabaseService().db; await db!.update( 'Sucursal', {'seleccionado': 0}, ); sucursal.seleccionado = 1; await DatabaseService().guardar(sucursal); await fetchLocalSucursales(); } Future sincronizarSucursales() async { try { final response = ApiResponse(await BaseService().get('/pos/sucursal')); if (response.isOk && response.resultados != null) { List sucursalesApi = response.resultados!.map((json) => Sucursal.fromApi(json)).toList(); if (sucursalesApi.isNotEmpty) { await DatabaseService().sincronizarSucursales(sucursalesApi); await fetchLocalSucursales(); notifyListeners(); return true; } } return false; } catch (e) { print('Error al sincronizar sucursales: $e'); return false; } } Future sincronizarSucursalesDesdeApi() async { setIsLoading(true); try { bool sucursalesSincronizadas = await sincronizarSucursales(); if (sucursalesSincronizadas) { await fetchLocalSucursales(); } print('Sucursales sincronizadas: $sucursalesSincronizadas'); } catch (e, stackTrace) { print("Error al sincronizar sucursales: $e\n$stackTrace"); } finally { setIsLoading(false); } } void setIsLoading(bool loading) { _isLoading = loading; notifyListeners(); } }