import '../../domain/entities/user.dart'; /// User model for data layer (extends User entity) class UserModel extends User { const UserModel({ required super.id, required super.name, required super.email, required super.roles, required super.isActive, required super.createdAt, required super.updatedAt, }); /// Create UserModel from JSON factory UserModel.fromJson(Map json) { // createdAt might not be in response, default to now final createdAt = json['createdAt'] != null ? DateTime.parse(json['createdAt'] as String) : DateTime.now(); return UserModel( id: json['id'] as String, name: json['name'] as String, email: json['email'] as String, roles: (json['roles'] as List).cast(), isActive: json['isActive'] as bool? ?? true, createdAt: createdAt, // updatedAt might not be in response, default to createdAt updatedAt: json['updatedAt'] != null ? DateTime.parse(json['updatedAt'] as String) : createdAt, ); } /// Convert UserModel to JSON Map toJson() { return { 'id': id, 'name': name, 'email': email, 'roles': roles, 'isActive': isActive, 'createdAt': createdAt.toIso8601String(), 'updatedAt': updatedAt.toIso8601String(), }; } /// Create UserModel from User entity factory UserModel.fromEntity(User user) { return UserModel( id: user.id, name: user.name, email: user.email, roles: user.roles, isActive: user.isActive, createdAt: user.createdAt, updatedAt: user.updatedAt, ); } /// Convert to User entity User toEntity() { return User( id: id, name: name, email: email, roles: roles, isActive: isActive, createdAt: createdAt, updatedAt: updatedAt, ); } }