class AppUser { final String id; final String email; final String role; final DateTime createdAt; final DateTime updatedAt; final bool changementMdpObligatoire; final String? nom; final String? prenom; final String? statut; final String? telephone; final String? photoUrl; final String? adresse; final String? ville; final String? codePostal; AppUser({ required this.id, required this.email, required this.role, required this.createdAt, required this.updatedAt, this.changementMdpObligatoire = false, this.nom, this.prenom, this.statut, this.telephone, this.photoUrl, this.adresse, this.ville, this.codePostal, }); factory AppUser.fromJson(Map json) { final id = json['id']?.toString(); final email = json['email']?.toString(); final role = json['role']?.toString(); if (id == null || id.isEmpty) { throw Exception('Profil invalide: id manquant'); } if (email == null || email.isEmpty) { throw Exception('Profil invalide: email manquant'); } if (role == null || role.isEmpty) { throw Exception('Profil invalide: rĂ´le manquant'); } return AppUser( id: id, email: email, role: role, createdAt: json['cree_le'] != null ? DateTime.tryParse(json['cree_le'].toString()) ?? DateTime.now() : (json['createdAt'] != null ? DateTime.tryParse(json['createdAt'].toString()) ?? DateTime.now() : DateTime.now()), updatedAt: json['modifie_le'] != null ? DateTime.tryParse(json['modifie_le'].toString()) ?? DateTime.now() : (json['updatedAt'] != null ? DateTime.tryParse(json['updatedAt'].toString()) ?? DateTime.now() : DateTime.now()), changementMdpObligatoire: json['changement_mdp_obligatoire'] == true, nom: json['nom']?.toString(), prenom: json['prenom']?.toString(), statut: json['statut']?.toString(), telephone: json['telephone']?.toString(), photoUrl: json['photo_url']?.toString(), adresse: json['adresse']?.toString(), ville: json['ville']?.toString(), codePostal: json['code_postal']?.toString(), ); } Map toJson() { return { 'id': id, 'email': email, 'role': role, 'createdAt': createdAt.toIso8601String(), 'updatedAt': updatedAt.toIso8601String(), 'changement_mdp_obligatoire': changementMdpObligatoire, 'nom': nom, 'prenom': prenom, 'statut': statut, 'telephone': telephone, 'photo_url': photoUrl, 'adresse': adresse, 'ville': ville, 'code_postal': codePostal, }; } String get fullName => '${prenom ?? ''} ${nom ?? ''}'.trim(); }