feat: Enhance trip creation and management features with user validation, improved error handling, and Firestore integration

This commit is contained in:
Dayron
2025-10-07 11:38:20 +02:00
parent c90011ef5d
commit 4e403f3308
5 changed files with 625 additions and 225 deletions

View File

@@ -71,7 +71,6 @@ class UserProvider extends ChangeNotifier {
try {
// Structurer les données pour que tous les utilisateurs aient le même format
final userDoc = {
'id': userData['uid'],
'email': userData['email'] ?? '',
'nom': '', // Nom vide pour tous les utilisateurs
'prenom': userData['name'] ?? userData['nom'] ?? 'Utilisateur', // Nom complet dans prenom
@@ -79,7 +78,7 @@ class UserProvider extends ChangeNotifier {
await _firestore.collection('users').doc(userData['uid']).set(userDoc);
// Retourner l'objet User créé
// Retourner l'objet User créé avec l'ID correct
return User.fromMap({...userDoc, 'id': userData['uid']});
} catch (e) {
print('Erreur lors de la création de l\'utilisateur: $e');
@@ -87,6 +86,25 @@ class UserProvider extends ChangeNotifier {
}
}
// Méthode pour obtenir l'ID d'un utilisateur par son email
Future<String?> getUserIdByEmail(String email) async {
try {
final QuerySnapshot querySnapshot = await _firestore
.collection('users')
.where('email', isEqualTo: email.trim())
.limit(1)
.get();
if (querySnapshot.docs.isNotEmpty) {
return querySnapshot.docs.first.id;
}
return null;
} catch (e) {
print('Erreur lors de la recherche de l\'utilisateur par email: $e');
return null;
}
}
// Initialiser l'utilisateur connecté
Future<void> initializeUser() async {
firebase_auth.User? firebaseUser = _authService.currentUser;
@@ -99,3 +117,4 @@ class UserProvider extends ChangeNotifier {
}
}
}