12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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: 'idLocal asc');
- _sucursales = query.map((element) => Sucursal.fromJson(element)).toList();
- notifyListeners();
- }
- Future<bool> sincronizarSucursales() async {
- try {
- // Llamada a la API para obtener las sucursales
- 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();
- }
- }
|