...
Teams can propose new dates/times/surfaces for any of their games
If allowed, leagues could disable this
Depending on configuration, the required parties (other team, league, association) will be notified and required to accept the change
This is configured on a per-schedule basis, using the office settings as a defaultoffice basis
Once all required parties have accepted the proposed change, the game is automatically rescheduled and everyone is notified (as normal)
...
Out of scope
...
Change fees
OMAHA won’t use this because they require games to fill out a form and pay a fee, so we’ll need transactions to convince them to use this (or a report?)
UX
Add a Reschedule Propose Change button on the game page, if the game is allowed to be rescheduled.
This will pop up a modal to select the new time and surface. This can be toggled between a form or calendar
A comment may be provided. This would be included on the DraftGameApproval
If the game has any DraftGames, an alert card is shown on the game page to show a game change is changes are proposed
This The draft game row can be expanded to show the status of each required party (DraftGameApproval)
Clicking on Accept/Decline will open a modal to confirm and attach an optional note🚩 What if
This replaces the current Publish button when approvals are present
If the user is both the a league admin and team official and approval is required of both?they would see multiple approval requests and would have to accept both individually
Models
Reschedule requests are stored as DraftGames, similar to producing a schedule. The API will automatically create DraftGameApprovals based on settings to determine who’s required to accept the change.
...
OfficeSettings
To configure who is required to approve game changes. Property names TBD.
Property | Type | Description |
---|
league required
boolean
associations required
rescheduleRequestsEnabled | boolean |
Determine if the feature is enabled
team required
boolean
Allow teams to request changes to games | ||
requiredRescheduleApprovals | enum[] | List of approvals required for approval a draft game
If rescheduleRequestsEnabled is true, validation requires at least one value |
DraftGameApproval
To track required approvals
Property | Type | Description |
---|
draftGameId | uuid | Link to the |
DraftGame | ||
targetType | string | Office/Team |
targetId | id | |
status | string | Pending | Accepted | Declined |
comment | string | Optional notes to append with the response |
Implementation
Settings control which required parties require approval. Typical office defaults to schedule settings
Requesting a change produces a DraftGame. After save hook on DraftGame and automatically produces DraftGameApprovals based on the office settings When a DraftGameApproval is changed to Accepted, check if all others are accepted. If so, update the gameand if updatedGameId is present. Settings are based on the published game (a move to another schedule/teams requires the original schedule/teams to approve).
The DraftGame modal mentioned in UX would also apply to games produced by leagues through the draft flow. This modal should only be visible for : required parties
to be approvedusers with access to draft games (leagues, associations)for approval with permission
A new permission scope (
scheduling:approve
) to be added, which allows responding to a DraftGameApprovalFor the migration, grant it to any role that has
scheduling:manage
,scheduling:games
,scheduling:drafts
orteams:roster
A notification task that runs every 5 minutes should check for newly created DraftGameApprovals and send a notification
A new notification type for Draft Game Approvals to be created. By default (in the view) anyone with a
scheduling:approve
role has it enabledDraftGame Target → Permission Target to determine who receives the notification
When a DraftGameApproval is changed to Accepted, check if all others are accepted. If so, publish the draft game to update the game
The standard game rescheduled notification covers this case already
If an approval is declined, the league is responsible for deleting the draft game
Scheduling changes to the draft game must reset any approvals