Files
bumrent_app/lib/app/data/models/user_model.dart
Andreas Malvino e7090af3da first commit
2025-06-02 22:39:03 +07:00

72 lines
1.7 KiB
Dart

import 'dart:convert';
class User {
final String id;
final String email;
final String? name;
final String? avatarUrl;
final String? phoneNumber;
final DateTime? createdAt;
final DateTime? updatedAt;
User({
required this.id,
required this.email,
this.name,
this.avatarUrl,
this.phoneNumber,
this.createdAt,
this.updatedAt,
});
Map<String, dynamic> toMap() {
return {
'id': id,
'email': email,
'name': name,
'avatar_url': avatarUrl,
'phone_number': phoneNumber,
'created_at': createdAt?.toIso8601String(),
'updated_at': updatedAt?.toIso8601String(),
};
}
factory User.fromMap(Map<String, dynamic> map) {
return User(
id: map['id'] ?? '',
email: map['email'] ?? '',
name: map['name'],
avatarUrl: map['avatar_url'],
phoneNumber: map['phone_number'],
createdAt:
map['created_at'] != null ? DateTime.parse(map['created_at']) : null,
updatedAt:
map['updated_at'] != null ? DateTime.parse(map['updated_at']) : null,
);
}
String toJson() => json.encode(toMap());
factory User.fromJson(String source) => User.fromMap(json.decode(source));
User copyWith({
String? id,
String? email,
String? name,
String? avatarUrl,
String? phoneNumber,
DateTime? createdAt,
DateTime? updatedAt,
}) {
return User(
id: id ?? this.id,
email: email ?? this.email,
name: name ?? this.name,
avatarUrl: avatarUrl ?? this.avatarUrl,
phoneNumber: phoneNumber ?? this.phoneNumber,
createdAt: createdAt ?? this.createdAt,
updatedAt: updatedAt ?? this.updatedAt,
);
}
}