Implement endpoints to support joining working groups as an existing member
To align with #510 (closed), we will need to define an actual workflow and finalize the look and feel for the existing members working groups flow. As defined in the previous issue, the UI for the end user will use the existing look and feel of the application form for consistency, but will post to a different endpoint, as the standard application flow can't be reused, as there is a ton of checks and steps to get through to validate properly that would break.
The initial plan for this has the new workflow being placed within the membership portal for convenience, rather than be part of the application front end. This new form will be placed under a new sidebar item available only to users with a CR, CRA, or DE relation to a member organization. This page would contain the new form, with the ability to submit a form containing the working group, level, and a contact to be associated with the new working group association. This form would post to the application API rather than the portal, as that is where our current application logic lives.
Within the application API, a new workflow will be created, as the current application workflow has a lot of validation logic that would be unsuited to this use case. This new workflow would need a new table to store information about the Working Group request, see fig 1 for the table definition. This API would check that the user has the right to request this update through Foundation DB.
Once a request is validated and stored, an email will be sent to the membership team indicating that a member wishes to join a working group. This email format will need to be defined at a later date. We will want to make a quick and dirty dashboard for membership coordination to be able to view active requests and set them to complete when necessary. This will be a basic page requiring Zahra (or whoever has rights) to login and access the page in the browser.
Appendix
Figure 1
Column | Type | Nullable? | Description |
---|---|---|---|
id | serial | N | Unique ID for the request, used for better targeting |
user | varchar | N | The username of the member representative requesting the new membership |
varchar | N | The email associated with the user requesting the update | |
orgId | int | N | The organization that is applying for a new working group membership |
wgAlias | varchar | N | The targeted alias of the working group. Not perfect, but it's the best we have in this case |
wgLevel | varchar | N | The relation code for the level the member wishes to join as |
created | datetime | N | The time the request was created |
state | varchar | N | State of the request, whether it is completed, in progress, or cancelled. |