61 lines
1.9 KiB
Dart
61 lines
1.9 KiB
Dart
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:travel_mate/data/models/group.dart';
|
|
import 'package:travel_mate/services/error_service.dart';
|
|
|
|
class GroupService {
|
|
final _errorService = ErrorService();
|
|
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
|
|
|
|
Stream<List<Group>> getGroupsStream() {
|
|
return _firestore.collection('groups').snapshots().map((snapshot) {
|
|
return snapshot.docs.map((doc) {
|
|
return Group.fromMap(doc.data(), doc.id);
|
|
}).toList();
|
|
});
|
|
}
|
|
|
|
Future<bool> createGroup(Group group) async {
|
|
try {
|
|
await _firestore.collection('groups').add(group.toMap());
|
|
return true;
|
|
} catch (e) {
|
|
_errorService.logError('Erreur lors de la création du groupe: $e', StackTrace.current);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Future<bool> updateGroup(Group group) async {
|
|
try {
|
|
await _firestore.collection('groups').doc(group.id).update(group.toMap());
|
|
return true;
|
|
} catch (e) {
|
|
_errorService.logError('Erreur lors de la mise à jour du groupe: $e', StackTrace.current);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Future<bool> deleteGroup(String groupId) async {
|
|
try {
|
|
await _firestore.collection('groups').doc(groupId).delete();
|
|
return true;
|
|
} catch (e) {
|
|
_errorService.logError('Erreur lors de la suppression du groupe: $e', StackTrace.current);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Stream pour obtenir les groupes d'un utilisateur spécifique
|
|
Stream<List<Group>> getGroupsStreamByUser(String userId) {
|
|
return _firestore
|
|
.collection('groups')
|
|
.where('members', arrayContains: userId)
|
|
.snapshots()
|
|
.map((snapshot) {
|
|
return snapshot.docs.map((doc) {
|
|
final group = Group.fromMap(doc.data(), doc.id);
|
|
_errorService.logError('Groupe: ${group.name}, Membres: ${group.members.length}', StackTrace.current);
|
|
return group;
|
|
}).toList();
|
|
});
|
|
}
|
|
} |