// lib/services/river_api_service.dart import 'dart:convert'; // <-- ADDED for jsonEncode import 'package:intl/intl.dart'; import 'package:flutter/foundation.dart'; import 'package:environment_monitoring_app/services/base_api_service.dart'; import 'package:environment_monitoring_app/services/telegram_service.dart'; import 'package:environment_monitoring_app/services/server_config_service.dart'; class RiverApiService { final BaseApiService _baseService; final TelegramService _telegramService; final ServerConfigService _serverConfigService; RiverApiService(this._baseService, this._telegramService, this._serverConfigService); Future> getManualStations() async { final baseUrl = await _serverConfigService.getActiveApiUrl(); return _baseService.get(baseUrl, 'river/manual-stations'); } Future> getTriennialStations() async { final baseUrl = await _serverConfigService.getActiveApiUrl(); return _baseService.get(baseUrl, 'river/triennial-stations'); } // --- START: MODIFIED METHOD --- Future> getRiverSamplingImages({ required int stationId, required DateTime samplingDate, required String samplingType, // This parameter is now USED }) async { final baseUrl = await _serverConfigService.getActiveApiUrl(); final String dateStr = DateFormat('yyyy-MM-dd').format(samplingDate); // Dynamically determine the API path based on sampling type String apiPath; if (samplingType == 'In-Situ Sampling') { apiPath = 'river/manual/images-by-station'; } else if (samplingType == 'Triennial Sampling') { apiPath = 'river/triennial/images-by-station'; } else if (samplingType == 'Investigative Sampling') { // <-- ADDED apiPath = 'river-investigative/images-by-station'; // <-- ADDED (Points to new controller) } else { // Fallback or error debugPrint("Unknown samplingType for image request: $samplingType"); apiPath = 'river/manual/images-by-station'; // Default fallback } // Build the final endpoint with the correct path final String endpoint = '$apiPath?station_id=$stationId&date=$dateStr'; debugPrint("ApiService: Calling river image request API endpoint: $endpoint"); final response = await _baseService.get(baseUrl, endpoint); return response; } // --- END: MODIFIED METHOD --- Future> sendImageRequestEmail({ required String recipientEmail, required List imageUrls, required String stationName, required String samplingDate, }) async { final baseUrl = await _serverConfigService.getActiveApiUrl(); final Map fields = { 'recipientEmail': recipientEmail, 'imageUrls': jsonEncode(imageUrls), 'stationName': stationName, 'samplingDate': samplingDate, }; return _baseService.postMultipart( baseUrl: baseUrl, endpoint: 'river/images/send-email', // Endpoint for river email requests fields: fields, files: {}, ); } // --- END: ADDED MISSING METHODS --- }