import 'package:flutter/foundation.dart'; import 'package:em2rp/models/maintenance_model.dart'; import 'package:em2rp/services/maintenance_service.dart'; class MaintenanceProvider extends ChangeNotifier { final MaintenanceService _service = MaintenanceService(); List _maintenances = []; // Getters List get maintenances => _maintenances; /// Stream des maintenances pour un équipement spécifique Stream> getMaintenancesStream(String equipmentId) { return _service.getMaintenances(equipmentId); } /// Stream de toutes les maintenances Stream> get allMaintenancesStream { return _service.getAllMaintenances(); } /// Créer une nouvelle maintenance Future createMaintenance(MaintenanceModel maintenance) async { try { await _service.createMaintenance(maintenance); notifyListeners(); } catch (e) { print('Error creating maintenance: $e'); rethrow; } } /// Mettre à jour une maintenance Future updateMaintenance(String id, Map data) async { try { await _service.updateMaintenance(id, data); notifyListeners(); } catch (e) { print('Error updating maintenance: $e'); rethrow; } } /// Supprimer une maintenance Future deleteMaintenance(String id) async { try { await _service.deleteMaintenance(id); notifyListeners(); } catch (e) { print('Error deleting maintenance: $e'); rethrow; } } /// Récupérer une maintenance par ID Future getMaintenanceById(String id) async { try { return await _service.getMaintenanceById(id); } catch (e) { print('Error getting maintenance: $e'); rethrow; } } /// Marquer une maintenance comme complétée Future completeMaintenance( String id, { String? performedBy, double? cost, }) async { try { await _service.completeMaintenance(id, performedBy: performedBy, cost: cost); notifyListeners(); } catch (e) { print('Error completing maintenance: $e'); rethrow; } } /// Vérifier les maintenances à venir Future checkUpcomingMaintenances() async { try { await _service.checkUpcomingMaintenances(); } catch (e) { print('Error checking upcoming maintenances: $e'); rethrow; } } /// Récupérer les maintenances en retard List get overdueMaintances { return _maintenances.where((m) => m.isOverdue).toList(); } /// Récupérer les maintenances complétées List get completedMaintenances { return _maintenances.where((m) => m.isCompleted).toList(); } /// Récupérer les maintenances à venir List get upcomingMaintenances { return _maintenances.where((m) => !m.isCompleted && !m.isOverdue).toList(); } }