import 'package:flutter/material.dart';
import 'package:turquessa_mesas_hoster/core/services/database_service.dart';

import '../../core/models/pedido_model.dart';
import '../../core/services/api_response.dart';
import '../../core/services/base_service.dart';

class PedidoViewModel extends ChangeNotifier {
  List<Pedido> _pedidos = [];
  bool _isLoading = false;

  List<Pedido> get pedidos => _pedidos;
  bool get isLoading => _isLoading;

  Future<void> fetchLocalPedidos() async {
    var db = await DatabaseService().db;
    var query = await db!
        .query('Pedido', where: 'eliminado IS NULL', orderBy: 'id asc');
    _pedidos = query.map((element) => Pedido.fromJson(element)).toList();
    notifyListeners();
  }

  // Future<void> setSelectedPedido(Pedido pedido) async {
  //   var db = await DatabaseService().db;
  //   await db!.update(
  //     'Pedido',
  //     {'seleccionado': 0},
  //   );
  //   pedido.seleccionado = 1;
  //   await DatabaseService().guardar(pedido);

  //   await fetchLocalPedidos();
  // }

  Future<bool> sincronizarPedidos() async {
    try {
      final response =
          ApiResponse(await BaseService().get('/pos/mesa?expand=pedidos'));
      if (response.isOk && response.resultados != null) {
        List<Pedido> pedidosApi =
            response.resultados!.map((json) => Pedido.fromJson(json)).toList();

        // if (pedidosApi.isNotEmpty) {
        //   await DatabaseService().sincronizarPedidos(pedidosApi);
        //   await fetchLocalPedidos();
        //   notifyListeners();
        //   return true;
        // }
      }
      return false;
    } catch (e) {
      print('Error al sincronizar pedidos: $e');
      return false;
    }
  }

  // // Future<void> sincronizarPedidosDesdeApi() async {
  //   setIsLoading(true);
  //   try {
  //     final response = ApiResponse(await BaseService().get('/pos/pedido'));

  //     if (response.isOk && response.resultados != null) {
  //       List<Pedido> pedidosApi =
  //           response.resultados!.map((json) => Pedido.fromApi(json)).toList();

  //       if (pedidosApi.isNotEmpty) {
  //         await DatabaseService().sincronizarPedidos(pedidosApi);
  //         await fetchLocalPedidos();
  //         notifyListeners();
  //       }
  //     }
  //   } catch (e) {
  //     print('Error al sincronizar pedidos: $e');
  //   } finally {
  //     setIsLoading(false);
  //   }
  // }

  void setIsLoading(bool value) {
    _isLoading = value;
    notifyListeners();
  }
}
