feat: member portal Sprint 4 — Events + RSVP
- Event + EventRsvp models + migration (RsvpStatus enum: GOING/MAYBE/NOT_GOING) - EventsModule: admin CRUD (create/update/delete/publish) + RSVP list - GET /my/events + POST /my/events/:id/rsvp in MyController/MyService - Admin BFF routes: GET/POST /api/admin/events, PATCH/DELETE /api/admin/events/[id] - Member BFF routes: GET /api/my/events, POST /api/my/events/[id]/rsvp - /my/events page: upcoming/past split, RSVP button (client component, optimistic) - Register DigestModule, OrgModule, ThreadsModule, EventsModule in AppModule - Add EVENT_CREATED/DELETED/UPDATED and DIGEST_SENT to AuditAction Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,20 @@ export class MyController {
|
||||
return this.service.getDigests(member.tenantId);
|
||||
}
|
||||
|
||||
@Get('events')
|
||||
listEvents(@CurrentMember() member: MemberJwtPayload) {
|
||||
return this.service.listEvents(member.sub, member.tenantId);
|
||||
}
|
||||
|
||||
@Post('events/:id/rsvp')
|
||||
rsvp(
|
||||
@CurrentMember() member: MemberJwtPayload,
|
||||
@Param('id') eventId: string,
|
||||
@Body() body: { status: 'GOING' | 'NOT_GOING' | 'MAYBE'; note?: string },
|
||||
) {
|
||||
return this.service.upsertRsvp(member.sub, member.tenantId, eventId, body.status, body.note);
|
||||
}
|
||||
|
||||
@Get('profile')
|
||||
profile(@CurrentMember() member: MemberJwtPayload) {
|
||||
return this.service.getProfile(member.sub, member.tenantId);
|
||||
|
||||
Reference in New Issue
Block a user