123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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<Pedido> _pedidos = [];
- Pedido? _selectedPedido;
- bool _isLoading = false;
- List<Pedido> get pedidos => _pedidos;
- Pedido? get selectedPedido => _selectedPedido;
- bool get isLoading => _isLoading;
- void setIsLoading(bool loading) {
- _isLoading = loading;
- notifyListeners();
- }
- Future<bool> guardarPedidoLocal({required Pedido pedido}) async {
- RepoService<Pedido> repoPedido = RepoService<Pedido>();
- int nextFolio = await repoPedido.obtenerProximoFolio();
- pedido.folio = nextFolio;
- int idPedido = await repoPedido.guardar(pedido);
- if (idPedido > 0) {
- pedido.id = idPedido;
- RepoService<PedidoProducto> repoPedidoProducto =
- RepoService<PedidoProducto>();
- 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<void> fetchLocalPedidos() async {
- setIsLoading(true);
- RepoService<Pedido> repoPedido = RepoService<Pedido>();
- List<Pedido> localPedidos = await repoPedido.obtenerTodos();
- _pedidos = localPedidos;
- setIsLoading(false);
- notifyListeners();
- }
- Future<Pedido?> fetchPedidoConProductos(int idPedido) async {
- RepoService<Pedido> repoPedido = RepoService<Pedido>();
- Pedido? pedido = await repoPedido.obtenerPorId(idPedido);
- if (pedido != null) {
- RepoService<PedidoProducto> repoProducto = RepoService<PedidoProducto>();
- RepoService<Producto> repoProductoInfo = RepoService<Producto>();
- List<PedidoProducto> 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;
- }
- }
|