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 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 toJson() { return { 'id': id, 'company_id': companyId, 'name': name, 'email': email, 'role': role, 'is_super_admin': isSuperAdmin, }; } @override List get props => [id, companyId, name, email, role, isSuperAdmin]; }