HIGH story-coordinator-activity-approval-coordinator-005 3 pts

User Story

As a Coordinator
I want to reject an activity registration that cannot be corrected or approved, providing a mandatory documented reason, optionally notifying the original submitter
So that So that invalid registrations are removed from the active reporting pipeline while retaining a documented record of why they were rejected, enabling the submitter to understand what went wrong and resubmit correctly if applicable

Acceptance Criteria

  • Given a coordinator taps 'Reject' on a pending registration, when the dialog opens, then the Rejection Reason Dialog is displayed with a mandatory text field and an optional 'Notify submitter' toggle
  • Given the rejection dialog is open, when the coordinator attempts to confirm rejection without entering a reason, then the confirm button remains disabled and a validation hint is displayed
  • Given the coordinator submits a rejection with a reason, when the transaction completes, then the registration status is set to 'rejected' and the reason, coordinator identity, and timestamp are stored in the audit record
  • Given the 'Notify submitter' toggle is enabled, when rejection is confirmed, then a push notification is sent to the original submitter informing them of the rejection
  • Given a registration is rejected, when Bufdir report data is generated, then the rejected registration is excluded from all active reporting aggregations
  • Given a rejection is saved, when the registration queue refreshes, then the rejected item is removed from the pending queue and the coordinator sees the updated count

Business Value

Without a formal rejection mechanism with documented reasons, invalid registrations either accumulate in the pending queue indefinitely or are deleted without audit trail — both outcomes are unacceptable for Bufdir grant compliance. Retaining rejected records with reasons enables coordinators to respond to auditors, prevents recurring invalid submissions from the same submitter, and maintains the integrity of the historical activity database.