Files
tasq/lib/models/team.model.dart
T
2026-04-27 06:20:39 +08:00

48 lines
1.3 KiB
Dart

import 'package:brick_offline_first_with_supabase/brick_offline_first_with_supabase.dart';
import 'package:brick_supabase/brick_supabase.dart';
import 'package:tasq/models/team_member.dart';
extension TeamMembersExtension on Team {
List<String> members(List<TeamMember> allMembers) {
return allMembers
.where((m) => m.teamId == id)
.map((m) => m.userId)
.toList();
}
}
@ConnectOfflineFirstWithSupabase(
supabaseConfig: SupabaseSerializable(tableName: 'teams'),
)
class Team extends OfflineFirstWithSupabaseModel {
final String id;
final String name;
final String leaderId;
final List<String> officeIds;
final DateTime createdAt;
final String? color;
Team({
required this.id,
required this.name,
required this.leaderId,
required this.officeIds,
required this.createdAt,
this.color,
});
factory Team.fromMap(Map<String, dynamic> map) {
return Team(
id: map['id'] as String,
name: map['name'] as String? ?? '',
leaderId: map['leader_id'] as String? ?? '',
officeIds:
(map['office_ids'] as List?)?.map((e) => e.toString()).toList() ??
<String>[],
createdAt: DateTime.parse(map['created_at'] as String),
color: map['color'] as String?,
);
}
}