import 'package:em2rp/models/container_model.dart'; import 'package:em2rp/services/data_service.dart'; import 'package:em2rp/services/api_service.dart'; /// Service pour gérer la relation entre containers et équipements /// Utilise le principe : seul le container stocke la référence aux équipements class ContainerEquipmentService { final DataService _dataService = DataService(apiService); /// Récupère tous les containers contenant un équipement spécifique /// Utilise une Cloud Function avec authentification et permissions Future> getContainersByEquipment(String equipmentId) async { try { final containersData = await _dataService.getContainersByEquipment(equipmentId); return containersData.map((data) { // L'ID est dans le champ 'id' retourné par la fonction final id = data['id'] as String; return ContainerModel.fromMap(data, id); }).toList(); } catch (e) { print('[ContainerEquipmentService] Error getting containers for equipment $equipmentId: $e'); rethrow; } } /// Vérifie si un équipement est dans au moins un container Future isEquipmentInAnyContainer(String equipmentId) async { try { final containers = await getContainersByEquipment(equipmentId); return containers.isNotEmpty; } catch (e) { print('[ContainerEquipmentService] Error checking if equipment is in container: $e'); return false; } } /// Récupère le nombre de containers contenant un équipement Future getContainerCountForEquipment(String equipmentId) async { try { final containers = await getContainersByEquipment(equipmentId); return containers.length; } catch (e) { print('[ContainerEquipmentService] Error getting container count: $e'); return 0; } } } /// Instance globale singleton final containerEquipmentService = ContainerEquipmentService();