1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import 'package:flutter/material.dart';
- import 'package:sqflite/sqflite.dart';
- import '../data/api_response.dart';
- import '../services/base_service.dart';
- import '../models/models.dart';
- import '../services/services.dart';
- import '../services/repo_service.dart';
- class SucursalViewModel<T> extends ChangeNotifier {
- List<Sucursal> _sucursales = [];
- bool _isLoading = false;
- List<Sucursal> get sucursales => _sucursales;
- bool get isLoading => _isLoading;
- Future<void> fetchLocalSucursales() async {
- var db = await RepoService().db;
- var query = await db!
- .query('Sucursal', where: 'eliminado IS NULL', orderBy: 'id asc');
- _sucursales = query.map((element) => Sucursal.fromJson(element)).toList();
- notifyListeners();
- }
- Future<void> setSelectedSucursal(Sucursal sucursal) async {
- var db = await RepoService().db;
- await db!.update(
- 'Sucursal',
- {'seleccionado': 0},
- );
- sucursal.seleccionado = 1;
- await RepoService().guardar(sucursal);
- await fetchLocalSucursales();
- }
- Future<bool> sincronizarSucursales() async {
- try {
- final response = ApiResponse(await BaseService().get('/pos/sucursal'));
- if (response.isOk && response.resultados != null) {
- List<Sucursal> sucursalesApi =
- response.resultados!.map((json) => Sucursal.fromApi(json)).toList();
- if (sucursalesApi.isNotEmpty) {
- await RepoService().sincronizarSucursales(sucursalesApi);
- notifyListeners();
- return true;
- }
- }
- return false;
- } catch (e) {
- print('Error al sincronizar sucursales: $e');
- return false;
- }
- }
- Future<void> 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();
- }
- }
|