123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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);
- await fetchLocalSucursales();
- 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();
- }
- }
|