78 lines
2.7 KiB
Dart
78 lines
2.7 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
class UserModel extends Equatable {
|
|
// English: Unique identifier for the user.
|
|
// Arabic: المعرف الفريد للمستخدم.
|
|
final int id;
|
|
|
|
// English: The ID of the company this user belongs to.
|
|
// Arabic: معرف الشركة التي ينتمي إليها هذا المستخدم.
|
|
final int companyId;
|
|
|
|
// English: The name of the user.
|
|
// Arabic: اسم المستخدم.
|
|
final String name;
|
|
|
|
// English: The email address of the user.
|
|
// Arabic: البريد الإلكتروني للمستخدم.
|
|
final String email;
|
|
|
|
// English: The system role assigned to the user (e.g. admin, staff).
|
|
// Arabic: دور النظام المعين للمستخدم (مثل مشرف، موظف).
|
|
final String role;
|
|
|
|
// English: Indicator if the user is a super admin (company ID 1).
|
|
// Arabic: مؤشر ما إذا كان المستخدم مشرفاً عاماً (معرف الشركة 1).
|
|
final bool isSuperAdmin;
|
|
|
|
const UserModel({
|
|
required this.id,
|
|
required this.companyId,
|
|
required this.name,
|
|
required this.email,
|
|
required this.role,
|
|
required this.isSuperAdmin,
|
|
});
|
|
|
|
// English: Factory constructor to create a UserModel instance from JSON mapping.
|
|
// Arabic: منشئ المصنع لإنشاء نسخة نموذج المستخدم من خريطة جيسون.
|
|
factory UserModel.fromJson(Map<String, dynamic> json) {
|
|
// English: Safely parse isSuperAdmin from dynamic input (boolean or integer).
|
|
// Arabic: تحليل آمن لمؤشر المشرف العام من المدخلات الديناميكية (بولين أو عدد صحيح).
|
|
final rawSuperAdmin = json['is_super_admin'];
|
|
bool isSuper = false;
|
|
if (rawSuperAdmin is bool) {
|
|
isSuper = rawSuperAdmin;
|
|
} else if (rawSuperAdmin is int) {
|
|
isSuper = rawSuperAdmin == 1;
|
|
} else if (rawSuperAdmin is String) {
|
|
isSuper = rawSuperAdmin == '1' || rawSuperAdmin.toLowerCase() == 'true';
|
|
}
|
|
|
|
return UserModel(
|
|
id: json['id'] as int? ?? 0,
|
|
companyId: json['company_id'] as int? ?? 0,
|
|
name: json['name'] as String? ?? '',
|
|
email: json['email'] as String? ?? '',
|
|
role: json['role'] as String? ?? '',
|
|
isSuperAdmin: isSuper,
|
|
);
|
|
}
|
|
|
|
// English: Convert UserModel instance to JSON map for local caching.
|
|
// Arabic: تحويل نسخة نموذج المستخدم إلى خريطة جيسون للتخزين المؤقت المحلي.
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'company_id': companyId,
|
|
'name': name,
|
|
'email': email,
|
|
'role': role,
|
|
'is_super_admin': isSuperAdmin,
|
|
};
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [id, companyId, name, email, role, isSuperAdmin];
|
|
}
|