Stu Mason
Stu Mason

Activity

StuMason/api.rezzy.one
Rezzy
TypeScript
Pull Request Opened

PR #76 opened: Add event invite system with lineup display (Issues 4.4, 4.5, 4.6)

Summary

  • Issue 4.5 - EventInvite Model: Created EventInvite model with pending/accepted/declined status tracking, relationships to Event, Act, and inviting User
  • Issue 4.6 - Send Invite Flow: Event admins can search public acts, send invites, and revoke pending invites via a dedicated management page
  • Issue 4.4 - Lineup Display: Event show page displays the confirmed lineup (accepted invites ordered by position), and lineup members can view private events they're performing at

New Files (15)

FilePurpose
app/Enums/EventInviteStatus.phpPending/Accepted/Declined status enum
app/Models/EventInvite.phpInvite model with HasUid trait
database/migrations/*_create_event_invites_table.phpMigration with unique constraint
database/factories/EventInviteFactory.phpFactory with status states
app/DataTransferObjects/EventInviteData.phpFull invite DTO
app/DataTransferObjects/ActSearchData.phpSearch result DTO
app/DataTransferObjects/LineupActData.phpLineup display DTO
app/Actions/Event/SendInvite.phpCreate invite action
app/Actions/Event/RevokeInvite.phpDelete pending invite action
app/Http/Requests/EventInvite/StoreEventInviteRequest.phpValidation
app/Http/Controllers/EventInviteController.phpCRUD controller
app/Policies/EventInvitePolicy.phpAuthorization
resources/js/pages/events/invites/index.tsxInvite management UI
tests/Feature/Models/EventInviteTest.php29 model tests
tests/Feature/Http/Controllers/EventInviteControllerTest.php20 controller tests

Modified Files (10)

  • app/Models/Event.php - Added invite relationships (invites(), acceptedInvites(), isOnLineup())
  • app/Models/Act.php - Added invite relationships (eventInvites(), upcomingGigs())
  • app/DataTransferObjects/EventData.php - Added lineup array property
  • app/Policies/EventPolicy.php - Lineup members can view private published events
  • app/Http/Controllers/EventController.php - Load lineup in show method
  • app/Providers/AppServiceProvider.php - Register EventInvitePolicy
  • routes/web.php - Add invite routes
  • resources/js/pages/events/edit.tsx - "Manage Lineup" button
  • resources/js/pages/events/show.tsx - Lineup section display
  • resources/js/types/generated.d.ts - TypeScript types

Test plan

  • 49 EventInvite tests pass (model + controller)
  • 38 existing EventController tests pass
  • Pint formatting passes
  • Manual: Create event, navigate to invites page, search and invite an act
  • Manual: View event page, verify lineup displays with avatars linked to profiles
  • Manual: Test private event visibility for lineup members

Stu Mason + AI [email protected]

+2078
additions
-30
deletions
31
files changed