feat: Ajout de la gestion des maintenances et intégration de la synthèse vocale

This commit is contained in:
ElPoyo
2026-02-24 13:39:44 +01:00
parent 506225ac62
commit 890449d5e3
17 changed files with 1731 additions and 107 deletions

View File

@@ -1,14 +1,39 @@
import 'package:flutter/foundation.dart';
import 'package:em2rp/models/maintenance_model.dart';
import 'package:em2rp/services/maintenance_service.dart';
import 'package:em2rp/utils/debug_log.dart';
class MaintenanceProvider extends ChangeNotifier {
final MaintenanceService _service = MaintenanceService();
List<MaintenanceModel> _maintenances = [];
bool _isLoading = false;
// Getters
List<MaintenanceModel> get maintenances => _maintenances;
bool get isLoading => _isLoading;
/// Charger toutes les maintenances
Future<void> loadMaintenances({String? equipmentId}) async {
_isLoading = true;
notifyListeners();
try {
if (equipmentId != null) {
_maintenances = await _service.getMaintenancesByEquipment(equipmentId);
} else {
_maintenances = await _service.getAllMaintenances();
}
_isLoading = false;
notifyListeners();
} catch (e) {
DebugLog.error('[MaintenanceProvider] Error loading maintenances', e);
_isLoading = false;
notifyListeners();
rethrow;
}
}
/// Récupérer les maintenances pour un équipement spécifique
Future<List<MaintenanceModel>> getMaintenances(String equipmentId) async {
@@ -24,9 +49,9 @@ class MaintenanceProvider extends ChangeNotifier {
Future<void> createMaintenance(MaintenanceModel maintenance) async {
try {
await _service.createMaintenance(maintenance);
notifyListeners();
await loadMaintenances(); // Recharger après création
} catch (e) {
print('Error creating maintenance: $e');
DebugLog.error('[MaintenanceProvider] Error creating maintenance', e);
rethrow;
}
}
@@ -35,9 +60,9 @@ class MaintenanceProvider extends ChangeNotifier {
Future<void> updateMaintenance(String id, Map<String, dynamic> data) async {
try {
await _service.updateMaintenance(id, data);
notifyListeners();
await loadMaintenances(); // Recharger après mise à jour
} catch (e) {
print('Error updating maintenance: $e');
DebugLog.error('[MaintenanceProvider] Error updating maintenance', e);
rethrow;
}
}
@@ -46,9 +71,9 @@ class MaintenanceProvider extends ChangeNotifier {
Future<void> deleteMaintenance(String id) async {
try {
await _service.deleteMaintenance(id);
notifyListeners();
await loadMaintenances(); // Recharger après suppression
} catch (e) {
print('Error deleting maintenance: $e');
DebugLog.error('[MaintenanceProvider] Error deleting maintenance', e);
rethrow;
}
}
@@ -58,7 +83,7 @@ class MaintenanceProvider extends ChangeNotifier {
try {
return await _service.getMaintenanceById(id);
} catch (e) {
print('Error getting maintenance: $e');
DebugLog.error('[MaintenanceProvider] Error getting maintenance', e);
rethrow;
}
}
@@ -71,9 +96,9 @@ class MaintenanceProvider extends ChangeNotifier {
}) async {
try {
await _service.completeMaintenance(id, performedBy: performedBy, cost: cost);
notifyListeners();
await loadMaintenances(); // Recharger après complétion
} catch (e) {
print('Error completing maintenance: $e');
DebugLog.error('[MaintenanceProvider] Error completing maintenance', e);
rethrow;
}
}
@@ -83,13 +108,13 @@ class MaintenanceProvider extends ChangeNotifier {
try {
await _service.checkUpcomingMaintenances();
} catch (e) {
print('Error checking upcoming maintenances: $e');
DebugLog.error('[MaintenanceProvider] Error checking upcoming maintenances', e);
rethrow;
}
}
/// Récupérer les maintenances en retard
List<MaintenanceModel> get overdueMaintances {
List<MaintenanceModel> get overdueMaintenances {
return _maintenances.where((m) => m.isOverdue).toList();
}
@@ -102,5 +127,12 @@ class MaintenanceProvider extends ChangeNotifier {
List<MaintenanceModel> get upcomingMaintenances {
return _maintenances.where((m) => !m.isCompleted && !m.isOverdue).toList();
}
/// Obtenir les maintenances pour un équipement spécifique (depuis le cache local)
List<MaintenanceModel> getForEquipment(String equipmentId) {
return _maintenances.where((m) =>
m.equipmentIds.contains(equipmentId)
).toList();
}
}