75 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:autos/domain/entities/user.dart';
class UserModel extends User {
const UserModel({
required super.id,
required super.name,
required super.email,
required super.role,
super.plan,
super.paymentStatus,
super.phoneNumber,
super.message,
super.code,
});
/// ✅ FROM API JSON
factory UserModel.fromJson(Map<String, dynamic> json) {
final payment = json['payment'] ?? {};
return UserModel(
id: json['userid'] ?? json['id']?.toString() ?? '',
name: json['name'] ?? '',
email: json['email'] ?? '',
role: json['role'] ?? '',
plan: payment['plan'] ?? json['plan'],
paymentStatus: payment['status'] ?? json['paymentStatus'],
phoneNumber: json['phonenumber'] ?? '',
message: json['message'] ?? '',
code: json['code'] ?? '',
);
}
/// ✅ ✅ ✅ THIS WAS MISSING — VERY IMPORTANT
factory UserModel.fromEntity(User user) {
return UserModel(
id: user.id,
name: user.name,
email: user.email,
role: user.role,
plan: user.plan,
paymentStatus: user.paymentStatus,
phoneNumber: user.phoneNumber,
message: user.message,
code: user.code,
);
}
/// ✅ TO JSON FOR STORAGE
Map<String, dynamic> toJson() {
return {
'userid': id,
'name': name,
'email': email,
'role': role,
'plan': plan,
'paymentStatus': paymentStatus,
'phonenumber': phoneNumber,
'message': message,
'code': code,
};
}
/// ✅ STORE USER AS RAW JSON STRING
String toRawJson() => jsonEncode(toJson());
/// ✅ RESTORE USER FROM RAW JSON STRING
factory UserModel.fromRawJson(String raw) =>
UserModel.fromJson(jsonDecode(raw));
@override
String toString() {
return 'UserModel(id: $id, name: $name, email: $email, role: $role, phone: $phoneNumber, plan: $plan, status: $paymentStatus, code: $code)';
}
}