import 'package:flutter/material.dart'; import 'package:prosapp_web_app/models/usuario_profesional.dart'; import 'package:prosapp_web_app/services/api_service.dart'; class ProfessionalsProvider extends ChangeNotifier { List professionals = []; bool isLoading = true; bool _initialized = false; String? _locationCity; double? _locationLat; double? _locationLng; final _api = ApiService.instance; void updateCity(String? city) { if (!_initialized) { _initialized = true; _locationCity = city; getProfessionals(); } } void setLocationContext({required String? city, required double lat, required double lng}) { if (city != null && city.isNotEmpty) _locationCity = city; _locationLat = lat; _locationLng = lng; getProfessionals(); } Future getProfessionals({String? search}) async { isLoading = true; notifyListeners(); try { final params = {}; if (search != null && search.trim().isNotEmpty) params['search'] = search.trim(); if (_locationCity != null && _locationCity!.isNotEmpty) params['city'] = _locationCity!.trim(); if (_locationLat != null) params['lat'] = _locationLat.toString(); if (_locationLng != null) params['lng'] = _locationLng.toString(); final query = params.isEmpty ? '' : '?${params.entries.map((e) => '${e.key}=${Uri.encodeComponent(e.value)}').join('&')}'; final res = await _api.get('/professionals$query'); final list = (res is Map ? res['data'] : res) as List; professionals = list .map((e) => UsuarioProfesional.fromDocument(e as Map)) .toList(); } catch (e) { print('Error obteniendo profesionales: $e'); } finally { isLoading = false; notifyListeners(); } } }