import 'package:flutter/material.dart';

/// [UserProvider] est un `ChangeNotifier` qui gère les informations de l'utilisateur.
/// Toutes les modifications et actions sont loguées pour assurer une traçabilité complète dans le terminal.
class UserProvider with ChangeNotifier {
  String _userId = '';
  String _userName = '';
  String _userLastName = '';

  /// Getter pour l'ID de l'utilisateur
  String get userId => _userId;

  /// Getter pour le nom de l'utilisateur
  String get userName => _userName;

  /// Getter pour le prénom de l'utilisateur
  String get userLastName => _userLastName;

  /// Méthode pour définir les informations de l'utilisateur.
  /// Logue les informations fournies et notifie les listeners des changements.
  ///
  /// [id] : L'ID de l'utilisateur.
  /// [name] : Le nom de l'utilisateur.
  /// [lastName] : Le prénom de l'utilisateur.
  void setUser(String id, String name, String lastName) {
    debugPrint("[LOG] Tentative de définition des informations de l'utilisateur : ID = $id, Nom = $name, Prénom = $lastName");

    _userId = id;
    _userName = name;
    _userLastName = lastName;

    debugPrint("[LOG] Informations utilisateur définies : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");

    // Notifie les widgets écoutant ce provider qu'une modification a eu lieu
    notifyListeners();
  }

  /// Méthode pour réinitialiser les informations de l'utilisateur.
  /// Les valeurs sont loguées avant et après la réinitialisation.
  void resetUser() {
    debugPrint("[LOG] Réinitialisation des informations de l'utilisateur.");
    debugPrint("[LOG] Valeurs avant réinitialisation : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");

    _userId = '';
    _userName = '';
    _userLastName = '';

    debugPrint("[LOG] Informations utilisateur réinitialisées : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");

    // Notifie les widgets écoutant ce provider que l'utilisateur a été réinitialisé
    notifyListeners();
  }
}
