Modif de l'affichage des données d'un événement et de l'afichage de la création/édition

Options sont maintenant géres dans firebase
This commit is contained in:
ElPoyo
2025-10-10 19:20:38 +02:00
parent aae68f8ab7
commit 4128ddc34a
13 changed files with 850 additions and 299 deletions

View File

@@ -19,33 +19,61 @@ class EventProvider with ChangeNotifier {
try {
print(
'Loading events for user: $userId (canViewAllEvents: $canViewAllEvents)');
QuerySnapshot eventsSnapshot;
// On charge tous les events pour les users non-admins aussi
eventsSnapshot = await _firestore.collection('events').get();
print('Found ${eventsSnapshot.docs.length} events for user');
QuerySnapshot eventsSnapshot = await _firestore.collection('events').get();
print('Found ${eventsSnapshot.docs.length} events total');
// On filtre côté client si l'utilisateur n'est pas admin
final allEvents = eventsSnapshot.docs.map((doc) {
print('Event data: ${doc.data()}');
return EventModel.fromMap(doc.data() as Map<String, dynamic>, doc.id);
}).toList();
if (canViewAllEvents) {
_events = allEvents;
} else {
final userRef = _firestore.collection('users').doc(userId);
_events = allEvents
.where((e) => e.workforce.any((ref) => ref.id == userRef.id))
.toList();
List<EventModel> allEvents = [];
int failedCount = 0;
// Parser chaque événement individuellement pour éviter qu'une erreur interrompe tout
for (var doc in eventsSnapshot.docs) {
try {
final data = doc.data() as Map<String, dynamic>;
print('Processing event ${doc.id}: ${data['Name'] ?? 'Unknown'}');
final event = EventModel.fromMap(data, doc.id);
allEvents.add(event);
} catch (e) {
print('Failed to parse event ${doc.id}: $e');
failedCount++;
// Continue avec les autres événements au lieu d'arrêter
}
}
print('Parsed ${_events.length} events');
print('Successfully parsed ${allEvents.length} events, failed: $failedCount');
// Filtrage amélioré pour les utilisateurs non-admin
if (canViewAllEvents) {
_events = allEvents;
print('Admin user: showing all ${_events.length} events');
} else {
// Créer la référence utilisateur correctement
final userDocRef = _firestore.collection('users').doc(userId);
_events = allEvents.where((event) {
// Vérifier si l'utilisateur est dans l'équipe de l'événement
bool isInWorkforce = event.workforce.any((workforceRef) {
return workforceRef.path == userDocRef.path;
});
if (isInWorkforce) {
print('Event ${event.name} includes user ${userId}');
}
return isInWorkforce;
}).toList();
print('Non-admin user: showing ${_events.length} events out of ${allEvents.length}');
}
_isLoading = false;
notifyListeners();
} catch (e) {
print('Error loading events: $e');
_isLoading = false;
_events = []; // S'assurer que la liste est vide en cas d'erreur
notifyListeners();
rethrow;
}