getAssignmentsForUser method

Future<List<CurriculumAssignmentModel>> getAssignmentsForUser()

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;
}