95 lines
2.7 KiB
Dart
95 lines
2.7 KiB
Dart
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<String, dynamic> 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<String, dynamic> 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();
|
|
}
|