TKK_E32230859/lib/app/models/user_model.dart

60 lines
1.3 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
class UserModel {
final String id;
final String email;
final String name;
final String role;
final String? deviceId;
final DateTime? createdAt;
UserModel({
required this.id,
required this.email,
required this.name,
required this.role,
this.deviceId,
this.createdAt,
});
Map<String, dynamic> toFirestore() {
return {
'email': email,
'name': name,
'role': role,
if (deviceId != null) 'device_id': deviceId,
'created_at': createdAt ?? FieldValue.serverTimestamp(),
};
}
factory UserModel.fromFirestore(DocumentSnapshot doc) {
final data = doc.data() as Map<String, dynamic>;
return UserModel(
id: doc.id,
email: data['email'] ?? '',
name: data['name'] ?? '',
role: data['role'] ?? '',
deviceId: data['device_id'],
createdAt: (data['created_at'] as Timestamp?)?.toDate(),
);
}
UserModel copyWith({
String? id,
String? email,
String? name,
String? role,
String? deviceId,
DateTime? createdAt,
}) {
return UserModel(
id: id ?? this.id,
email: email ?? this.email,
name: name ?? this.name,
role: role ?? this.role,
deviceId: deviceId ?? this.deviceId,
createdAt: createdAt ?? this.createdAt,
);
}
}