import '../../../../core/network/api_client.dart'; import '../../../dashboard/data/models/doctor_info_model.dart'; class ConfigService { final ApiClient apiClient; ConfigService({ApiClient? client}) : apiClient = client ?? ApiClient(); /// Obtiene la configuración del consultorio desde Directus. Future getConfig() async { try { final response = await apiClient.dio.get('/items/configuracion'); if (response.statusCode == 200 && response.data != null) { final data = response.data['data']; if (data is Map) { return DoctorInfoModel.fromJson(data); } else if (data is List && data.isNotEmpty && data.first is Map) { return DoctorInfoModel.fromJson(data.first as Map); } } return const DoctorInfoModel( nombreDoctor: 'Dr. Luis A. Castro Sosa', especialidad: 'Cirujano Urólogo', descripEspecialidad: '', descripGeneral: '', ); } catch (e) { throw Exception('Error al cargar la configuración del consultorio: $e'); } } /// Actualiza la configuración del consultorio en Directus mediante PATCH. Future updateConfig(DoctorInfoModel model) async { try { final response = await apiClient.dio.patch( '/items/configuracion', data: model.toJson(includeId: false), ); if (response.statusCode == 200 && response.data != null) { final data = response.data['data']; if (data is Map) { return DoctorInfoModel.fromJson(data); } else if (data is List && data.isNotEmpty && data.first is Map) { return DoctorInfoModel.fromJson(data.first as Map); } } return model; } catch (e) { throw Exception('Error al guardar la configuración: $e'); } } }