Files
voidea/flutter/lib/models/workspace.dart
T

85 lines
2.2 KiB
Dart

class Workspace {
final String id;
final String name;
final String type;
final String? description;
final String ownerId;
final int memberCount;
final DateTime createdAt;
Workspace({
required this.id,
required this.name,
required this.type,
this.description,
required this.ownerId,
this.memberCount = 0,
required this.createdAt,
});
factory Workspace.fromJson(Map<String, dynamic> json) => Workspace(
id: json['id'] as String,
name: json['name'] as String,
type: json['type'] as String? ?? 'personal',
description: json['description'] as String?,
ownerId: json['owner_id'] as String? ?? '',
memberCount: json['member_count'] as int? ?? 0,
createdAt: DateTime.parse(json['created_at'] as String),
);
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'type': type,
'description': description,
'owner_id': ownerId,
'member_count': memberCount,
'created_at': createdAt.toIso8601String(),
};
bool get isPersonal => type == 'personal';
bool get isTeam => type == 'team';
}
class WorkspaceMember {
final String id;
final String userId;
final String userName;
final String userEmail;
final String role;
final DateTime joinedAt;
WorkspaceMember({
required this.id,
required this.userId,
this.userName = '',
this.userEmail = '',
required this.role,
required this.joinedAt,
});
factory WorkspaceMember.fromJson(Map<String, dynamic> json) =>
WorkspaceMember(
id: json['id'] as String,
userId: json['user_id'] as String? ?? '',
userName: json['user_name'] as String? ?? '',
userEmail: json['user_email'] as String? ?? '',
role: json['role'] as String? ?? 'member',
joinedAt: json['created_at'] != null
? DateTime.parse(json['created_at'] as String)
: DateTime.now(),
);
}
class CreateWorkspaceRequest {
final String name;
final String? description;
CreateWorkspaceRequest({required this.name, this.description});
Map<String, dynamic> toJson() => {
'name': name,
'description': description,
};
}