Attention needed overview member(ships)#545
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new “attention needed” overview for members/memberships, intended to help administrators quickly identify members with expiring memberships or missing required information (Fixes GH-544).
Changes:
- Added a new
/member/attention-neededroute + controller action and a new view to display members requiring attention. - Introduced
AttentionReasonsenum plus service/mapper logic to collect members and reasons (missing email/student ID, expiring by membership type/activity). - Updated translation catalogs with new UI strings for the new overview and adjusted button labels on the member index page.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| module/Database/view/database/member/index.phtml | Adds a button linking to the new attention-needed overview; tweaks button label capitalization. |
| module/Database/view/database/member/attention-needed.phtml | New table view rendering members requiring attention and recommended actions. |
| module/Database/src/Service/Member.php | Adds getMembersRequiringAttention() orchestration method (collect + dedupe + sort). |
| module/Database/src/Model/SubDecision/Annulment.php | Clarifies annulment semantics in doc comment. |
| module/Database/src/Model/Enums/AttentionReasons.php | New enum encapsulating attention labels/actions + UI recommendations. |
| module/Database/src/Mapper/Organ.php | Adds helper subquery to determine whether a member was active within a timeframe. |
| module/Database/src/Mapper/Member.php | Adds mapper queries to find “attention-needed” members (missing email/student ID, expiring; active vs non-active). |
| module/Database/src/Controller/MemberController.php | Adds attentionNeededAction() to serve the new overview. |
| module/Database/config/module.config.php | Registers the new attention-needed child route under /member. |
| module/Application/language/nl.po | Adds Dutch translations for newly introduced UI strings. |
| module/Application/language/en.po | Adds English translations for newly introduced UI strings. |
| module/Application/language/gewisdb.pot | Updates translation template with new msgids. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ed35037 to
4816887
Compare
|
Rebase is only VERSION.md and Dockerfile, see https://github.com/GEWIS/gewisdb/compare/ed35037d05e60b8a28a525286cd560ae66a17606..4816887013cf7613d975d0d5356b0882443293ad |
…hydrated This is required for my next commit that expands the seeders. Without it, the entity manager holds the old reference and the `OrganMember` will not be available when discharging. I made it fall back to looking up the `OrganMember` by its installation when the inverse is unavailable. Behaviour is unchanged when it is available, and the same exception is still thrown if it genuinely does not exist.
I want to move towards a seeder that covers all functionality in GEWISDB, such that it easier for everyone to test the (existing) functionality. Ideally, this would go hand in hand with proper unit tests rather than the manual testing we currently have to do every time. But that is a pull request for the future. Adds a purpose-built seed for members, with organ scaffolding for the active/non-active classifications, so the page renders real rows and each edge case. All cases were defined by me, Claude wrote the boilerplate code for the members. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Done in most places, so should be done here as well.
`Days` was used as suffix in most places, so opted to fix it for the parameters where this was note the case.
4958a41 to
3f4d777
Compare
|
I do not agree with the failure of the migration and seeder checker. It is unrelated to the changes here and something I wanted to address with GH-546 as well. |
Rink: Attention needed overview member(ships) (#545) * Introduce subquery to filter for active/non-active/inactive members * feat: Introduce page with members requiring attention * Add translations for members with attention overview * fix: address copilot-identified issues GH-545 * fix: resolve discharge OrganMember by installation when inverse is unhydrated This is required for my next commit that expands the seeders. Without it, the entity manager holds the old reference and the `OrganMember` will not be available when discharging. I made it fall back to looking up the `OrganMember` by its installation when the inverse is unavailable. Behaviour is unchanged when it is available, and the same exception is still thrown if it genuinely does not exist. * test: seed members for the requiring-attention overview I want to move towards a seeder that covers all functionality in GEWISDB, such that it easier for everyone to test the (existing) functionality. Ideally, this would go hand in hand with proper unit tests rather than the manual testing we currently have to do every time. But that is a pull request for the future. Adds a purpose-built seed for members, with organ scaffolding for the active/non-active classifications, so the page renders real rows and each edge case. All cases were defined by me, Claude wrote the boilerplate code for the members. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: remove unnecessary colons for DQL parameters * fix: escape member name in attention-needed overview Done in most places, so should be done here as well. * chore: normalise parameter names `Days` was used as suffix in most places, so opted to fix it for the parameters where this was note the case. * chore: change date handling See #545 (comment) * fix: performance when counting array of size <= 5 --------- Co-authored-by: Tom Udding <tomudding@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: tomudding <tomudding@users.noreply.github.com>
Description
Introduces an overview of members/memberships that require attention
Related issues/external references
Fixes GH-544.
Types of changes