107 lines
2.9 KiB
Dart
107 lines
2.9 KiB
Dart
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<MaintenanceModel> _maintenances = [];
|
|
|
|
// Getters
|
|
List<MaintenanceModel> get maintenances => _maintenances;
|
|
|
|
/// Stream des maintenances pour un équipement spécifique
|
|
Stream<List<MaintenanceModel>> getMaintenancesStream(String equipmentId) {
|
|
return _service.getMaintenances(equipmentId);
|
|
}
|
|
|
|
/// Stream de toutes les maintenances
|
|
Stream<List<MaintenanceModel>> get allMaintenancesStream {
|
|
return _service.getAllMaintenances();
|
|
}
|
|
|
|
/// Créer une nouvelle maintenance
|
|
Future<void> createMaintenance(MaintenanceModel maintenance) async {
|
|
try {
|
|
await _service.createMaintenance(maintenance);
|
|
notifyListeners();
|
|
} catch (e) {
|
|
print('Error creating maintenance: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// Mettre à jour une maintenance
|
|
Future<void> updateMaintenance(String id, Map<String, dynamic> data) async {
|
|
try {
|
|
await _service.updateMaintenance(id, data);
|
|
notifyListeners();
|
|
} catch (e) {
|
|
print('Error updating maintenance: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// Supprimer une maintenance
|
|
Future<void> 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<MaintenanceModel?> 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<void> 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<void> checkUpcomingMaintenances() async {
|
|
try {
|
|
await _service.checkUpcomingMaintenances();
|
|
} catch (e) {
|
|
print('Error checking upcoming maintenances: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// Récupérer les maintenances en retard
|
|
List<MaintenanceModel> get overdueMaintances {
|
|
return _maintenances.where((m) => m.isOverdue).toList();
|
|
}
|
|
|
|
/// Récupérer les maintenances complétées
|
|
List<MaintenanceModel> get completedMaintenances {
|
|
return _maintenances.where((m) => m.isCompleted).toList();
|
|
}
|
|
|
|
/// Récupérer les maintenances à venir
|
|
List<MaintenanceModel> get upcomingMaintenances {
|
|
return _maintenances.where((m) => !m.isCompleted && !m.isOverdue).toList();
|
|
}
|
|
}
|
|
|