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 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 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, ); } }