import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; import 'package:yoshi_papas_app/models/toping_categoria_model.dart'; import '../data/api_response.dart'; import '../services/base_service.dart'; import '../models/models.dart'; import '../services/services.dart'; class TopingViewModel extends ChangeNotifier { String _busqueda = ""; String get busqueda => _busqueda; List _registros = []; Toping? _selectedModelo; bool _isLoading = false; List get registros => _registros; Toping? get selectedToping => _selectedModelo; bool get isLoading => _isLoading; int pagina = 1; int totalPaginas = 1; int limite = 25; setBusqueda(String value) { _busqueda = value; notifyListeners(); } Future> fetchRegistros( {String? q, bool segmentar = false}) async { Map parametros = { "ordenar": "id-desc", "pagina": "$pagina", "limite": "$limite", "expand": "mediaToping,categoriaToping" }; if (_busqueda.isNotEmpty) { parametros["q"] = _busqueda; } if (segmentar) { parametros['segmentar'] = "1"; } var r = ApiResponse( await BaseService().get("admin/toping", queryParameters: parametros)); pagina = r.paginacion!.pagina; var total = r.paginacion!.total / r.paginacion!.limite; totalPaginas = total > 0 ? total.ceil() : 1; List aux = []; if (r.isOk) { for (var x in r.resultados!) { Toping modelo = Toping.fromJson(x); aux.add(modelo); } } _registros = aux; notifyListeners(); return _registros; } selectModelo(Toping Toping) { _selectedModelo = Toping; notifyListeners(); } setIsLoading(bool loading) { _isLoading = loading; notifyListeners(); } cambiarPagina(int nuevaPagina, {bool segmentar = false}) { pagina = nuevaPagina; fetchRegistros(segmentar: segmentar); } Future eliminarMedia(Media m) async { _selectedModelo!.mediaToping .removeWhere((mediaToping) => mediaToping.media?.id == m.id); notifyListeners(); } Future guardarModelo({ required Toping modelo, required String clave, required String nombre, required String descripcion, List? fotos, }) async { modelo.clave = clave; modelo.nombre = nombre; modelo.descripcion = descripcion; var r = ApiResponse( await BaseService().post("admin/toping", body: modelo.toJson())); int id = int.parse(r.detalle!["id"].toString()); if (id > 0 && fotos != null && fotos.isNotEmpty) { for (var x in fotos) { await GeneralService().enviarMedia( id: id, media: x, modulo: "Autotanque", etiquetaID: "idInspeccion", tipo: "imagen"); } } var s = await BaseService().post("admin/toping/guardar", body: modelo.toJson()); if (r.statusCode == 200) {} notifyListeners(); } }