Files
Mitgliederverwaltung/.plans/open/issue-208-member-controller-method-bloat.md
shahondin1624 b29a268b1d Restructure .plans/ into done/ and open/ subdirectories
- Move completed plan files to .plans/done/
- Move 18 open plan files to .plans/open/
- Update .gitignore to exclude .verified_plans temp file
- Verified all 18 open plans still describe unimplemented issues
2026-04-28 20:30:55 +02:00

2.3 KiB

Issue #208: MemberController Has Too Many Responsibilities

Problem

MemberController handles:

  • Member CRUD (index, show, create, update, destroy)
  • Sub-entity CRUD (addresses, phones, emails)
  • Admin-only operations (revealAllergies, archive)
  • Search (search, fullTextSearch)

This violates Single Responsibility Principle. The controller is 500+ lines with 20+ methods.

Current Structure

MemberController
├── search()                    # Full-text search
├── index()                     # List with filters
├── show()                      # Single member
├── create()                    # Create member
├── update()                    # Update member
├── destroy()                   # Delete member
├── revealAllergies()           # Admin-only
├── archive()                   # Admin-only
├── createAddress()             # Sub-entity
├── updateAddress()             # Sub-entity
├── destroyAddress()            # Sub-entity
├── createPhone()               # Sub-entity
├── updatePhone()               # Sub-entity
├── destroyPhone()              # Sub-entity
├── createEmail()               # Sub-entity
├── updateEmail()               # Sub-entity
├── destroyEmail()              # Sub-entity

Solution

Split into focused controllers:

Controllers/
├── MemberController           # Member CRUD only
├── MemberAddressController    # Address CRUD
├── MemberPhoneController      # Phone CRUD
├── MemberEmailController      # Email CRUD
├── MemberSearchController     # Search operations
├── MemberAdminController      # Admin-only operations

Each controller has 3-5 methods, making them easier to understand and test.

Tasks

  • Create MemberAddressController for address CRUD
  • Create MemberPhoneController for phone CRUD
  • Create MemberEmailController for email CRUD
  • Create MemberSearchController for search operations
  • Create MemberAdminController for admin operations
  • Move sub-entity and admin methods from MemberController
  • Update routes in AppInfo/Application.php
  • Update frontend API calls to use new endpoints
  • Remove old methods from MemberController

Labels

  • refactoring
  • backend
  • priority:medium
  • architecture