Skip to content

feat(users): extend search to include external ID in user tables#8407

Open
LWS49 wants to merge 2 commits into
lws49/feat-add-ext-idfrom
lws49/feat-ext-id-search-update
Open

feat(users): extend search to include external ID in user tables#8407
LWS49 wants to merge 2 commits into
lws49/feat-add-ext-idfrom
lws49/feat-ext-id-search-update

Conversation

@LWS49
Copy link
Copy Markdown
Collaborator

@LWS49 LWS49 commented May 26, 2026

Update the search placeholder and filter logic in ManageUsersTable and UserInvitationsTable to match against external ID in addition to name and email. The existing shouldInclude in ManageUsersTable was refactored to pre-compute the query string and add the externalId check. UserInvitationsTable gains a search prop with a matching shouldInclude and a localised placeholder, plus sets searchable: true on the conditionally-rendered externalId column so TanStack's column-level filter also covers it.

Add a searchText translation key to user-invitations/translations.ts mirroring the wording used in the users bundle.

…itations

  Allows institutions to link Coursemology enrolments to their own student
  records or LMS identifiers. The field is stored on CourseUser and
  Course::UserInvitation and validated unique per course across both tables
  via a cross-table concern and partial DB index - a pending invitation holds
  its ext_id until confirmed, preventing collisions with direct enrolments.

  Surfaces:
  - Individual invite form: ext_id input field
  - Bulk CSV invite: ext_id column in both template variants (with and without
    Timeline column); set on new records only - existing pending invitations
    and enrolled users are read-only in this flow
  - Manage users table: inline editable ext_id column (always visible)
  - Score summary export: ext_id column included when any student has one
  - Statistics > Students table: ext_id column, sortable and searchable,
    shown only when at least one student has a non-null ext_id

  View-only tables suppress the ext_id column when no course members have
  one set, consistent with how group manager, gamification, and video columns
  are conditionally shown. Edit tables always show it.

  Also changes error responses from the invitations controller from a single
  concatenated string to an array of per-record strings, enabling the frontend
  to render overflow counts without truncating meaningful error detail.
@LWS49 LWS49 force-pushed the lws49/feat-ext-id-search-update branch from 22a2eec to 3712743 Compare May 26, 2026 08:14
Update the search placeholder and filter logic in ManageUsersTable and UserInvitationsTable to match against external ID in addition to name and email. The existing shouldInclude in ManageUsersTable was refactored to pre-compute the query string and add the externalId check. UserInvitationsTable gains a search prop with a localised placeholder, plus sets searchable: true on the conditionally-rendered externalId column so TanStack's column-level filter also covers it.

Add a searchText translation key to user-invitations/translations.ts mirroring the wording used in the users bundle.
@LWS49 LWS49 force-pushed the lws49/feat-ext-id-search-update branch from 3712743 to 31430da Compare May 26, 2026 08:27
@LWS49 LWS49 marked this pull request as ready for review May 26, 2026 08:33
@LWS49 LWS49 force-pushed the lws49/feat-add-ext-id branch 6 times, most recently from 6226857 to 9c27231 Compare June 2, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant