import 'package:get/get.dart'; import '../models/econtrol_model.dart'; import '../services/geolocation_service.dart'; import '../services/econtrol_service.dart'; class GasstationsController extends GetxController { final isLoading = false.obs; final isLoadingLocation = false.obs; final eControlData = [].obs; @override void onInit() { _loadStationInfosList(); super.onInit(); } @override void onReady() {} @override void onClose() {} Future _loadStationInfosList() async { isLoading.value = true; var geolocationService = GeolocationService(); var eControlService = EControlService(); await geolocationService.getCurrentLocation(); if (geolocationService.hasLocation) { // Parallel Diesel und Benzin laden final fuelData = await eControlService.getBothFuelData( geolocationService.latitude, geolocationService.longitude, ); List dieselStations = (fuelData['DIE'] as List) .map((json) => EControlModel.fromJson(json)) .toList(); List supStations = (fuelData['SUP'] as List) .map((json) => EControlModel.fromJson(json)) .toList(); // Map zur Zusammenführung nach Tankstellen-ID Map combinedMap = {}; for (var station in dieselStations) { if (station.id != null) { combinedMap[station.id!] = station; } } // Benzin-Preise in dieselben Tankstellen-Objekte mergen for (var supStation in supStations) { if (supStation.id != null) { if (combinedMap.containsKey(supStation.id)) { // Falls Tankstelle schon existiert, füge Benzin-Preis hinzu final existingPrices = combinedMap[supStation.id!]!.prices ?? []; final supPrices = supStation.prices ?? []; combinedMap[supStation.id!]!.prices = [...existingPrices, ...supPrices]; } else { combinedMap[supStation.id!] = supStation; } } } eControlData.value = combinedMap.values.toList(); } isLoading.value = false; update(); } }