pedido_view_model.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart';
  2. import 'package:turquessa_mesas_hoster/core/services/database_service.dart';
  3. import '../../core/models/pedido_model.dart';
  4. import '../../core/services/api_response.dart';
  5. import '../../core/services/base_service.dart';
  6. class PedidoViewModel extends ChangeNotifier {
  7. List<Pedido> _pedidos = [];
  8. bool _isLoading = false;
  9. List<Pedido> get pedidos => _pedidos;
  10. bool get isLoading => _isLoading;
  11. Future<void> fetchLocalPedidos() async {
  12. var db = await DatabaseService().db;
  13. var query = await db!
  14. .query('Pedido', where: 'eliminado IS NULL', orderBy: 'id asc');
  15. _pedidos = query.map((element) => Pedido.fromJson(element)).toList();
  16. notifyListeners();
  17. }
  18. // Future<void> setSelectedPedido(Pedido pedido) async {
  19. // var db = await DatabaseService().db;
  20. // await db!.update(
  21. // 'Pedido',
  22. // {'seleccionado': 0},
  23. // );
  24. // pedido.seleccionado = 1;
  25. // await DatabaseService().guardar(pedido);
  26. // await fetchLocalPedidos();
  27. // }
  28. Future<bool> sincronizarPedidos() async {
  29. try {
  30. final response =
  31. ApiResponse(await BaseService().get('/pos/mesa?expand=pedidos'));
  32. if (response.isOk && response.resultados != null) {
  33. List<Pedido> pedidosApi =
  34. response.resultados!.map((json) => Pedido.fromJson(json)).toList();
  35. // if (pedidosApi.isNotEmpty) {
  36. // await DatabaseService().sincronizarPedidos(pedidosApi);
  37. // await fetchLocalPedidos();
  38. // notifyListeners();
  39. // return true;
  40. // }
  41. }
  42. return false;
  43. } catch (e) {
  44. print('Error al sincronizar pedidos: $e');
  45. return false;
  46. }
  47. }
  48. // // Future<void> sincronizarPedidosDesdeApi() async {
  49. // setIsLoading(true);
  50. // try {
  51. // final response = ApiResponse(await BaseService().get('/pos/pedido'));
  52. // if (response.isOk && response.resultados != null) {
  53. // List<Pedido> pedidosApi =
  54. // response.resultados!.map((json) => Pedido.fromApi(json)).toList();
  55. // if (pedidosApi.isNotEmpty) {
  56. // await DatabaseService().sincronizarPedidos(pedidosApi);
  57. // await fetchLocalPedidos();
  58. // notifyListeners();
  59. // }
  60. // }
  61. // } catch (e) {
  62. // print('Error al sincronizar pedidos: $e');
  63. // } finally {
  64. // setIsLoading(false);
  65. // }
  66. // }
  67. void setIsLoading(bool value) {
  68. _isLoading = value;
  69. notifyListeners();
  70. }
  71. }