User Interface high complexity mobile
4
Dependencies
0
Dependents
0
Entities
0
Integrations

Description

Screen for coordinators to register the same recurring activity (e.g. weekly training session) for multiple peer mentors in a single operation. Pre-fills date and activity type with coordinator-overridable defaults and presents a participant list with add/remove controls.

Feature: Proxy & Bulk Activity Registration

bulk-registration-screen

Summaries

The Bulk Registration Screen delivers a significant efficiency gain for coordinators managing recurring group activities such as weekly training sessions or monthly meetings. Instead of submitting N individual registrations, a coordinator selects all participants in a single operation and submits the entire batch atomically — drastically reducing time spent on administrative data entry and eliminating the risk of partial registrations that leave some participants unrecorded. Pre-filled defaults for date and activity type further reduce friction for recurring workflows. The per-participant duplicate detection surface means data quality issues are surfaced and resolved before submission, not discovered later during audits, protecting the integrity of Bufdir reporting data.

This is the highest-complexity UI component in the proxy registration feature set, with four component dependencies — bulk-participant-list, proxy-activity-form, duplicate-warning-dialog, and coordinator-role-guard — and a complex multi-state submission flow that includes dynamic participant management, defaults override, and per-participant conflict resolution. Budget additional QA time compared to the single-proxy screen: the participant list add/remove interactions, transactional batch submission failure handling, and the BulkDuplicateSummary presentation all need explicit test coverage. Integration tests must simulate at least three scenarios: clean batch submission, batch with some conflicting participants confirmed, and batch cancellation after conflict review. Dependency on bulk-participant-list is the most likely scheduling bottleneck.

This Flutter mobile screen maintains two primary state concerns: a BulkRegistrationDefaults object (date, activity type, overridable by the coordinator) and a dynamic List of selected mentorIds managed through onParticipantAdded and onParticipantRemoved callbacks from the bulk-participant-list widget. The ProxyActivityForm should be initialized with the current defaults and emit changes upward so the BulkRegistrationDraft stays synchronized. Before submission, the screen must run duplicate detection across all selected participants and surface conflicts through showBulkDuplicateSummary — rendering a per-participant conflict indicator list rather than a single dialog. The onBatchSubmit call should pass a BulkRegistrationDraft containing the full participant list and resolved defaults to the upstream service, which is responsible for transactional commit-or-rollback semantics.

State restoration after a failed batch submission (network error) is a required edge case: the participant list and defaults must remain intact so the coordinator can retry without re-entering data.

Responsibilities

  • Pre-fill date and activity type with sensible defaults for recurring activities
  • Allow coordinators to override any pre-filled default value
  • Manage a dynamic list of selected peer mentor participants
  • Show per-participant duplicate conflict indicators before submission
  • Submit all registrations as a transactional batch

Interfaces

build(BuildContext)
onParticipantAdded(String mentorId)
onParticipantRemoved(String mentorId)
onDefaultsOverridden(BulkRegistrationDefaults defaults)
onBatchSubmit(BulkRegistrationDraft draft)
showBulkDuplicateSummary(List<DuplicateConflict> conflicts)
onConfirmBatchWithConflicts()
onCancel()