import 'package:em2rp/models/maintenance_model.dart'; import 'package:em2rp/services/api_service.dart'; class MaintenanceService { final ApiService _apiService = apiService; // ============================================================================ // CRUD Operations - Utilise le backend sécurisé // ============================================================================ /// Créer une nouvelle maintenance (via Cloud Function) Future createMaintenance(MaintenanceModel maintenance) async { try { await _apiService.call('createMaintenance', maintenance.toMap()); // Note: La Cloud Function gère maintenant la mise à jour des équipements et la création des alertes } catch (e) { print('Error creating maintenance: $e'); rethrow; } } /// Mettre à jour une maintenance (via Cloud Function) Future updateMaintenance(String id, Map data) async { try { await _apiService.call('updateMaintenance', { 'maintenanceId': id, 'data': data, }); } catch (e) { print('Error updating maintenance: $e'); rethrow; } } /// Supprimer une maintenance Future deleteMaintenance(String id) async { try { await _apiService.call('deleteMaintenance', { 'maintenanceId': id, }); // Note: La Cloud Function gère la mise à jour des équipements } catch (e) { print('Error deleting maintenance: $e'); rethrow; } } /// Récupérer une maintenance par ID Future getMaintenanceById(String id) async { try { final response = await _apiService.call('getMaintenances', { 'maintenanceId': id, }); final maintenances = (response['maintenances'] as List?) ?.map((m) => MaintenanceModel.fromMap(m as Map, m['id'] as String)) .toList(); return maintenances?.firstWhere( (m) => m.id == id, orElse: () => throw Exception('Maintenance not found'), ); } catch (e) { print('Error getting maintenance: $e'); return null; } } /// Récupérer l'historique des maintenances pour un équipement Future> getMaintenancesByEquipment(String equipmentId) async { try { final response = await _apiService.call('getMaintenances', { 'equipmentId': equipmentId, }); final maintenances = (response['maintenances'] as List?) ?.map((m) => MaintenanceModel.fromMap(m as Map, m['id'] as String)) .toList() ?? []; return maintenances; } catch (e) { print('Error getting maintenances: $e'); rethrow; } } /// Récupérer toutes les maintenances Future> getAllMaintenances() async { try { final response = await _apiService.call('getMaintenances', {}); final maintenances = (response['maintenances'] as List?) ?.map((m) => MaintenanceModel.fromMap(m as Map, m['id'] as String)) .toList() ?? []; return maintenances; } catch (e) { print('Error getting all maintenances: $e'); rethrow; } } /// Marquer une maintenance comme complétée Future completeMaintenance(String id, {String? performedBy, double? cost}) async { try { await _apiService.call('completeMaintenance', { 'maintenanceId': id, if (performedBy != null) 'performedBy': performedBy, if (cost != null) 'cost': cost, }); } catch (e) { print('Error completing maintenance: $e'); rethrow; } } /// Vérifier les maintenances à venir et créer des alertes Future checkUpcomingMaintenances() async { try { await _apiService.call('checkUpcomingMaintenances', {}); } catch (e) { print('Error checking upcoming maintenances: $e'); rethrow; } } }