import 'package:firebase_auth/firebase_auth.dart';

import '../models/user_model.dart';
import 'package:em2rp/services/data_service.dart';
import 'package:em2rp/services/api_service.dart';

/// @deprecated Ce service est obsolète. Utilisez UsersProvider avec DataService à la place.
/// Ce service reste pour compatibilité mais toutes les opérations passent par l'API.
class UserService {
  final DataService _dataService = DataService(FirebaseFunctionsApiService());

  /// @deprecated Utilisez UsersProvider.fetchUsers() à la place
  Future<List<UserModel>> fetchUsers() async {
    try {
      final usersData = await _dataService.getUsers();
      return usersData.map((data) => UserModel.fromMap(data, data['id'] as String)).toList();
    } catch (e) {
      print("Erreur: $e");
      return [];
    }
  }

  /// @deprecated Utilisez DataService.updateUser() à la place
  Future<void> updateUser(UserModel user) async {
    try {
      await _dataService.updateUser(user.uid, user.toMap());
    } catch (e) {
      print("Erreur mise à jour: $e");
    }
  }

  /// @deprecated Utilisez API deleteUser à la place
  Future<void> deleteUser(String uid) async {
    try {
      final apiService = FirebaseFunctionsApiService();
      await apiService.call('deleteUser', {'userId': uid});
    } catch (e) {
      print("Erreur suppression: $e");
      rethrow;
    }
  }

  /// Firebase Auth reste OK (pas Firestore)
  Future<void> resetPassword(String email) async {
    try {
      // Firebase Auth est OK, ce n'est pas Firestore
      await FirebaseAuth.instance.sendPasswordResetEmail(email: email);
      print("Email de réinitialisation envoyé à $email");
    } catch (e) {
      print("Erreur reset password: $e");
    }
  }
}
