getAssignmentsForUser method
Implementation
Future<List<CurriculumAssignmentModel>> getAssignmentsForUser() async {
// Direct assignments to this user
final directResponse = await _client
.from('curriculum_assignments')
.select('*, domains(name)')
.eq('user_id', _userId);
final direct = (directResponse as List<dynamic>)
.map(
(row) =>
CurriculumAssignmentModel.fromJson(row as Map<String, dynamic>),
)
.toList();
// Team-based assignments
final teamRows = await _client
.from('team_members')
.select('team_id')
.eq('user_id', _userId);
final teamIds = (teamRows as List<dynamic>)
.map((row) => (row as Map<String, dynamic>)['team_id'] as String)
.toList();
final all = [...direct];
if (teamIds.isNotEmpty) {
final teamResponse = await _client
.from('curriculum_assignments')
.select('*, domains(name)')
.inFilter('team_id', teamIds);
all.addAll(
(teamResponse as List<dynamic>).map(
(row) =>
CurriculumAssignmentModel.fromJson(row as Map<String, dynamic>),
),
);
}
await _resolveMissingDomainNames(all);
return all;
}