import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:yoshi_papas_app/services/repo_service.dart'; import '../data/api_response.dart'; import '../services/base_service.dart'; import '../models/models.dart'; class PedidoViewModel extends ChangeNotifier { String _busqueda = ""; String get busqueda => _busqueda; List _pedidos = []; Pedido? _selectedPedido; bool _isLoading = false; List get pedidos => _pedidos; Pedido? get selectedPedido => _selectedPedido; bool get isLoading => _isLoading; void setIsLoading(bool loading) { _isLoading = loading; notifyListeners(); } Future guardarPedidoLocal({required Pedido pedido}) async { RepoService repoPedido = RepoService(); int nextFolio = await repoPedido.obtenerProximoFolio(); pedido.folio = nextFolio; int idPedido = await repoPedido.guardar(pedido); if (idPedido > 0) { pedido.id = idPedido; RepoService repoPedidoProducto = RepoService(); for (var producto in pedido.productos) { PedidoProducto pedidoProducto = PedidoProducto( idPedido: idPedido, idProducto: producto.idProducto, cantidad: producto.cantidad, costoUnitario: producto.costoUnitario, comentario: producto.comentario, ); await repoPedidoProducto.guardar(pedidoProducto); } notifyListeners(); return true; } else { return false; } } Future fetchLocalPedidos() async { setIsLoading(true); RepoService repoPedido = RepoService(); List localPedidos = await repoPedido.obtenerTodos(); _pedidos = localPedidos; setIsLoading(false); notifyListeners(); } Future fetchPedidoConProductos(int idPedido) async { RepoService repoPedido = RepoService(); Pedido? pedido = await repoPedido.obtenerPorId(idPedido); if (pedido != null) { RepoService repoProducto = RepoService(); RepoService repoProductoInfo = RepoService(); List productos = await repoProducto.obtenerPorIdPedido(idPedido); for (var producto in productos) { Producto? prodInfo = await repoProductoInfo.obtenerProductoPorId(producto.idProducto!); if (prodInfo != null) { producto.producto = prodInfo; // Asegúrate de que tu clase PedidoProducto pueda sostener este objeto } } pedido.productos = productos; } return pedido; } }