@flusys/nestjs-event-manager 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +126 -337
  2. package/adapters/event-manager.adapter.d.ts +0 -2
  3. package/cjs/adapters/event-manager.adapter.js +1 -7
  4. package/cjs/config/message-keys.js +1 -31
  5. package/cjs/controllers/event.controller.js +10 -60
  6. package/cjs/controllers/index.js +0 -1
  7. package/cjs/docs/event-manager-swagger.config.js +19 -29
  8. package/cjs/docs/index.js +0 -3
  9. package/cjs/dtos/calendar-query.dto.js +46 -20
  10. package/cjs/dtos/event-participant.dto.js +0 -45
  11. package/cjs/dtos/event.dto.js +97 -45
  12. package/cjs/entities/event-participant.entity.js +1 -8
  13. package/cjs/entities/event.entity.js +38 -26
  14. package/cjs/modules/event-manager.module.js +2 -4
  15. package/cjs/services/event-manager-helper.service.js +15 -83
  16. package/cjs/services/event.service.js +143 -122
  17. package/cjs/services/index.js +0 -1
  18. package/config/message-keys.d.ts +0 -56
  19. package/controllers/event.controller.d.ts +2 -5
  20. package/controllers/index.d.ts +0 -1
  21. package/docs/index.d.ts +1 -1
  22. package/dtos/calendar-query.dto.d.ts +8 -5
  23. package/dtos/event-participant.dto.d.ts +0 -6
  24. package/dtos/event.dto.d.ts +14 -10
  25. package/entities/event-participant.entity.d.ts +0 -1
  26. package/entities/event.entity.d.ts +6 -5
  27. package/fesm/adapters/event-manager.adapter.js +1 -7
  28. package/fesm/config/message-keys.js +1 -29
  29. package/fesm/controllers/event.controller.js +11 -61
  30. package/fesm/controllers/index.js +0 -1
  31. package/fesm/docs/event-manager-swagger.config.js +19 -29
  32. package/fesm/docs/index.js +1 -1
  33. package/fesm/dtos/calendar-query.dto.js +47 -21
  34. package/fesm/dtos/event-participant.dto.js +0 -42
  35. package/fesm/dtos/event.dto.js +98 -46
  36. package/fesm/entities/event-participant.entity.js +1 -8
  37. package/fesm/entities/event.entity.js +38 -26
  38. package/fesm/modules/event-manager.module.js +4 -6
  39. package/fesm/services/event-manager-helper.service.js +17 -85
  40. package/fesm/services/event.service.js +144 -123
  41. package/fesm/services/index.js +0 -1
  42. package/interfaces/event.interface.d.ts +6 -6
  43. package/package.json +3 -3
  44. package/services/event-manager-helper.service.d.ts +1 -3
  45. package/services/event.service.d.ts +8 -8
  46. package/services/index.d.ts +0 -1
  47. package/cjs/controllers/event-participant.controller.js +0 -287
  48. package/cjs/services/event-participant.service.js +0 -198
  49. package/controllers/event-participant.controller.d.ts +0 -35
  50. package/fesm/controllers/event-participant.controller.js +0 -277
  51. package/fesm/services/event-participant.service.js +0 -188
  52. package/services/event-participant.service.d.ts +0 -27
@@ -31,17 +31,11 @@ export class EventManagerAdapter {
31
31
  async createEvent(options) {
32
32
  return this.eventManagerHelper.createEvent(options);
33
33
  }
34
- async addParticipants(eventId, userIds, companyId) {
35
- await this.eventManagerHelper.addParticipants(eventId, userIds, companyId);
36
- }
37
- async removeParticipant(eventId, userId) {
38
- await this.eventManagerHelper.removeParticipant(eventId, userId);
39
- }
40
34
  async updateParticipantStatus(participantId, status) {
41
35
  await this.eventManagerHelper.updateParticipantStatus(participantId, status);
42
36
  }
43
37
  async getEventsForUser(userId, startDate, endDate, companyId) {
44
- return this.eventManagerHelper.getEventsForUser(userId, startDate, endDate, companyId);
38
+ return this.eventManagerHelper.getEventsForUser(userId, startDate.toISOString().split('T')[0], endDate.toISOString().split('T')[0], companyId);
45
39
  }
46
40
  async getEventById(eventId) {
47
41
  return this.eventManagerHelper.getEventById(eventId);
@@ -1,37 +1,9 @@
1
1
  // ==================== EVENT MANAGER MODULE MESSAGE KEYS ====================
2
2
  export const EVENT_MESSAGES = {
3
- CREATE_SUCCESS: 'event.create.success',
4
- CREATE_MANY_SUCCESS: 'event.create.many.success',
5
- GET_SUCCESS: 'event.get.success',
6
3
  GET_ALL_SUCCESS: 'event.get.all.success',
7
- UPDATE_SUCCESS: 'event.update.success',
8
- UPDATE_MANY_SUCCESS: 'event.update.many.success',
9
- DELETE_SUCCESS: 'event.delete.success',
10
- RESTORE_SUCCESS: 'event.restore.success',
11
- NOT_FOUND: 'event.not.found',
12
- PUBLISH_SUCCESS: 'event.publish.success',
13
- UNPUBLISH_SUCCESS: 'event.unpublish.success',
14
- CANCEL_SUCCESS: 'event.cancel.success',
15
- UPCOMING_SUCCESS: 'event.upcoming.success',
16
- MY_EVENTS_SUCCESS: 'event.my.events.success'
4
+ NOT_FOUND: 'event.not.found'
17
5
  };
18
6
  export const EVENT_PARTICIPANT_MESSAGES = {
19
- CREATE_SUCCESS: 'event.participant.create.success',
20
- CREATE_MANY_SUCCESS: 'event.participant.create.many.success',
21
- GET_SUCCESS: 'event.participant.get.success',
22
- GET_ALL_SUCCESS: 'event.participant.get.all.success',
23
- UPDATE_SUCCESS: 'event.participant.update.success',
24
- UPDATE_MANY_SUCCESS: 'event.participant.update.many.success',
25
- DELETE_SUCCESS: 'event.participant.delete.success',
26
- RESTORE_SUCCESS: 'event.participant.restore.success',
27
7
  NOT_FOUND: 'event.participant.not.found',
28
- REGISTER_SUCCESS: 'event.participant.register.success',
29
- UNREGISTER_SUCCESS: 'event.participant.unregister.success',
30
- CHECKIN_SUCCESS: 'event.participant.checkin.success',
31
8
  STATUS_UPDATE_SUCCESS: 'event.participant.status.update.success'
32
9
  };
33
- // Aggregated export for backward compatibility
34
- export const EVENT_MANAGER_MODULE_MESSAGES = {
35
- EVENT: EVENT_MESSAGES,
36
- EVENT_PARTICIPANT: EVENT_PARTICIPANT_MESSAGES
37
- };
@@ -34,7 +34,7 @@ import { ListResponseDto, SingleResponseDto } from '@flusys/nestjs-shared/dtos';
34
34
  import { JwtAuthGuard } from '@flusys/nestjs-shared/guards';
35
35
  import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
36
36
  import { plainToInstance } from 'class-transformer';
37
- import { BulkAddParticipantsDto, CalendarQueryDto, CalendarEventResponseDto, CreateEventDto, EventParticipantResponseDto, EventResponseDto, UpdateEventDto } from '../dtos';
37
+ import { CalendarQueryDto, CalendarEventResponseDto, CreateEventDto, EventParticipantResponseDto, EventResponseDto, UpdateEventDto, UpdateParticipantStatusDto } from '../dtos';
38
38
  import { EVENT_PERMISSIONS } from '../docs';
39
39
  import { EventService } from '../services/event.service';
40
40
  export class EventController extends createApiController(CreateEventDto, UpdateEventDto, EventResponseDto, {
@@ -100,29 +100,13 @@ export class EventController extends createApiController(CreateEventDto, UpdateE
100
100
  }
101
101
  };
102
102
  }
103
- async getEventWithParticipants(body, user) {
104
- const event = await this.eventService.getEventWithParticipants(body.id, user);
105
- if (!event) {
106
- return {
107
- success: false,
108
- message: 'Event not found',
109
- messageKey: EVENT_MESSAGES.NOT_FOUND
110
- };
111
- }
103
+ async updateParticipantStatus(dto, user) {
104
+ const participant = await this.eventService.updateParticipantStatus(dto, user);
112
105
  return {
113
106
  success: true,
114
- message: 'Event retrieved successfully',
115
- messageKey: EVENT_MESSAGES.GET_SUCCESS,
116
- data: plainToInstance(EventResponseDto, event)
117
- };
118
- }
119
- async addParticipants(dto, user) {
120
- const participants = await this.eventService.addParticipants(dto.eventId, dto.userIds, user);
121
- return {
122
- success: true,
123
- message: 'Participants added successfully',
124
- messageKey: EVENT_PARTICIPANT_MESSAGES.CREATE_SUCCESS,
125
- data: plainToInstance(EventParticipantResponseDto, participants)
107
+ message: 'Participant status updated successfully',
108
+ messageKey: EVENT_PARTICIPANT_MESSAGES.STATUS_UPDATE_SUCCESS,
109
+ data: plainToInstance(EventParticipantResponseDto, participant)
126
110
  };
127
111
  }
128
112
  constructor(eventService){
@@ -156,64 +140,30 @@ _ts_decorate([
156
140
  _ts_metadata("design:returntype", Promise)
157
141
  ], EventController.prototype, "getCalendarEvents", null);
158
142
  _ts_decorate([
159
- Post('get-with-participants'),
160
- UseGuards(JwtAuthGuard),
161
- ApiBearerAuth(),
162
- HttpCode(HttpStatus.OK),
163
- RequirePermission(EVENT_PERMISSIONS.READ),
164
- ApiOperation({
165
- summary: 'Get event with participants'
166
- }),
167
- ApiBody({
168
- schema: {
169
- properties: {
170
- id: {
171
- type: 'string',
172
- format: 'uuid'
173
- }
174
- }
175
- }
176
- }),
177
- ApiResponse({
178
- status: 200,
179
- description: 'Event retrieved successfully',
180
- type: SingleResponseDto
181
- }),
182
- _ts_param(0, Body()),
183
- _ts_param(1, CurrentUser()),
184
- _ts_metadata("design:type", Function),
185
- _ts_metadata("design:paramtypes", [
186
- Object,
187
- typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
188
- ]),
189
- _ts_metadata("design:returntype", Promise)
190
- ], EventController.prototype, "getEventWithParticipants", null);
191
- _ts_decorate([
192
- Post('add-participants'),
143
+ Post('update-participant-status'),
193
144
  UseGuards(JwtAuthGuard),
194
145
  ApiBearerAuth(),
195
146
  HttpCode(HttpStatus.OK),
196
147
  RequirePermission(EVENT_PERMISSIONS.UPDATE),
197
148
  ApiOperation({
198
- summary: 'Add participants to an event'
149
+ summary: 'Update participant status (accept/decline/tentative)'
199
150
  }),
200
151
  ApiBody({
201
- type: BulkAddParticipantsDto
152
+ type: UpdateParticipantStatusDto
202
153
  }),
203
154
  ApiResponse({
204
155
  status: 200,
205
- description: 'Participants added successfully',
206
156
  type: SingleResponseDto
207
157
  }),
208
158
  _ts_param(0, Body()),
209
159
  _ts_param(1, CurrentUser()),
210
160
  _ts_metadata("design:type", Function),
211
161
  _ts_metadata("design:paramtypes", [
212
- typeof BulkAddParticipantsDto === "undefined" ? Object : BulkAddParticipantsDto,
162
+ typeof UpdateParticipantStatusDto === "undefined" ? Object : UpdateParticipantStatusDto,
213
163
  typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
214
164
  ]),
215
165
  _ts_metadata("design:returntype", Promise)
216
- ], EventController.prototype, "addParticipants", null);
166
+ ], EventController.prototype, "updateParticipantStatus", null);
217
167
  EventController = _ts_decorate([
218
168
  ApiTags('Events'),
219
169
  Controller('event-manager/event'),
@@ -1,2 +1 @@
1
1
  export * from './event.controller';
2
- export * from './event-participant.controller';
@@ -12,7 +12,8 @@
12
12
  ]
13
13
  }
14
14
  ];
15
- function buildDescription(enableCompanyFeature) {
15
+ function buildDescription(enableCompanyFeature, isMultiTenant) {
16
+ const multiTenantNote = isMultiTenant ? `\n> **Multi-Tenant Mode**: Include \`x-tenant-id\` header to target a specific tenant database.\n` : '';
16
17
  const companyFeatures = enableCompanyFeature ? '\n- **Company-scoped events**' : '';
17
18
  const companyIsolation = enableCompanyFeature ? '\n- **Company isolation**' : '';
18
19
  const multiTenantSection = enableCompanyFeature ? `
@@ -26,16 +27,15 @@ All queries automatically filter by current user's company context.
26
27
  ` : '';
27
28
  return `
28
29
  # Event Manager API
29
-
30
+ ${multiTenantNote}
30
31
  Calendar event management with recurrence support${enableCompanyFeature ? ' and multi-tenant capabilities' : ''}.
31
32
 
32
33
  ## Features
33
34
 
34
35
  ### 📅 Event Management
35
36
  - Create, read, update, delete events
36
- - Rich metadata support
37
- - Meeting link integration
38
- - Color-coded events${companyFeatures}
37
+ - Color-coded events
38
+ - All-day event support${companyFeatures}
39
39
 
40
40
  ### 🔄 Recurrence Support
41
41
  - **None**: Single occurrence
@@ -45,10 +45,8 @@ Calendar event management with recurrence support${enableCompanyFeature ? ' and
45
45
  - **Monthly**: Same day each month
46
46
 
47
47
  ### 👥 Participant Management
48
- - Add/remove participants
49
48
  - Status tracking (pending, accepted, declined, tentative)
50
49
  - Organizer designation
51
- - Bulk participant operations
52
50
 
53
51
  ### 📆 Calendar Queries
54
52
  - Date range queries
@@ -63,23 +61,22 @@ Calendar event management with recurrence support${enableCompanyFeature ? ' and
63
61
  ## Recurrence Patterns
64
62
 
65
63
  ### Weekly Recurrence
66
- Use \`metadata.recurrenceDays\` array to specify days:
67
- - 0 = Sunday
68
- - 1 = Monday
69
- - 2 = Tuesday
70
- - 3 = Wednesday
71
- - 4 = Thursday
72
- - 5 = Friday
73
- - 6 = Saturday
64
+ Use the \`weekDays\` array to specify which days repeat:
65
+ - \`"SUN"\` = Sunday
66
+ - \`"MON"\` = Monday
67
+ - \`"TUE"\` = Tuesday
68
+ - \`"WED"\` = Wednesday
69
+ - \`"THU"\` = Thursday
70
+ - \`"FRI"\` = Friday
71
+ - \`"SAT"\` = Saturday
74
72
 
75
- Example: \`{ "recurrenceDays": [1, 3, 5] }\` = Monday, Wednesday, Friday
73
+ Example: \`{ "weekDays": ["MON", "WED", "FRI"] }\` = Monday, Wednesday, Friday
76
74
 
77
75
  ### Recurrence Expansion
78
76
  Calendar queries automatically expand recurring events into individual instances.
79
77
  Each instance includes:
80
78
  - \`isRecurrenceInstance: true\`
81
79
  - \`originalEventId\`: Reference to parent event
82
- - \`recurrenceInstanceDate\`: Specific occurrence date
83
80
  ${multiTenantSection}
84
81
  ## API Endpoints
85
82
 
@@ -92,23 +89,15 @@ All endpoints use POST method (RPC style):
92
89
  - \`/event-manager/event/update\` - Update event
93
90
  - \`/event-manager/event/delete\` - Soft delete
94
91
  - \`/event-manager/event/calendar\` - Calendar query with expansion
95
- - \`/event-manager/event/get-with-participants\` - Get with participant list
96
- - \`/event-manager/event/add-participants\` - Add participants
97
92
 
98
- ### Participants
99
- - \`/event-manager/participant/insert\` - Create participant
100
- - \`/event-manager/participant/get-all\` - List participants
101
- - \`/event-manager/participant/update-status\` - Update status
102
- - \`/event-manager/participant/get-by-event\` - Get by event
103
- - \`/event-manager/participant/get-by-user\` - Get by user
104
- - \`/event-manager/participant/remove\` - Remove from event
93
+ ### Participant Operations (via Event endpoints)
94
+ - \`/event-manager/event/update-participant-status\` - Update status
105
95
 
106
96
  ## Getting Started
107
97
 
108
98
  1. **Authenticate**: Obtain JWT token from /auth/login
109
99
  2. **Create Event**: POST to /event-manager/event/insert
110
- 3. **Add Participants**: POST to /event-manager/event/add-participants
111
- 4. **Query Calendar**: POST to /event-manager/event/calendar with date range
100
+ 3. **Query Calendar**: POST to /event-manager/event/calendar with date range
112
101
  `;
113
102
  }
114
103
  /**
@@ -116,9 +105,10 @@ All endpoints use POST method (RPC style):
116
105
  * Use this with setupSwaggerDocs() from @flusys/nestjs-core
117
106
  */ export function eventManagerSwaggerConfig(bootstrapConfig) {
118
107
  const enableCompanyFeature = bootstrapConfig?.enableCompanyFeature ?? true;
108
+ const isMultiTenant = bootstrapConfig?.databaseMode === 'multi-tenant';
119
109
  return {
120
110
  title: 'Event Manager API',
121
- description: buildDescription(enableCompanyFeature),
111
+ description: buildDescription(enableCompanyFeature, isMultiTenant),
122
112
  version: '1.0',
123
113
  path: 'api/docs/event-manager',
124
114
  bearerAuth: true,
@@ -1,4 +1,4 @@
1
1
  // Re-export permissions from shared for convenience
2
- export { EVENT_PERMISSIONS, EVENT_PARTICIPANT_PERMISSIONS } from '@flusys/nestjs-shared';
2
+ export { EVENT_PERMISSIONS } from '@flusys/nestjs-shared';
3
3
  // Swagger configuration
4
4
  export { eventManagerSwaggerConfig } from './event-manager-swagger.config';
@@ -22,7 +22,7 @@ function _ts_metadata(k, v) {
22
22
  }
23
23
  import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
24
24
  import { Expose, Type } from 'class-transformer';
25
- import { IsBoolean, IsDate, IsNotEmpty, IsOptional, IsUUID } from 'class-validator';
25
+ import { IsBoolean, IsNotEmpty, IsOptional, IsString, IsUUID, Matches } from 'class-validator';
26
26
  import { EventParticipantResponseDto } from './event-participant.dto';
27
27
  export class CalendarQueryDto {
28
28
  constructor(){
@@ -35,23 +35,27 @@ export class CalendarQueryDto {
35
35
  }
36
36
  _ts_decorate([
37
37
  ApiProperty({
38
- description: 'Start date for calendar range',
39
- example: '2024-01-01T00:00:00Z'
38
+ description: 'Start date for calendar range (YYYY-MM-DD)',
39
+ example: '2024-01-01'
40
40
  }),
41
41
  IsNotEmpty(),
42
- IsDate(),
43
- Type(()=>Date),
44
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
42
+ IsString(),
43
+ Matches(/^\d{4}-\d{2}-\d{2}$/, {
44
+ message: 'startDate must be in YYYY-MM-DD format'
45
+ }),
46
+ _ts_metadata("design:type", String)
45
47
  ], CalendarQueryDto.prototype, "startDate", void 0);
46
48
  _ts_decorate([
47
49
  ApiProperty({
48
- description: 'End date for calendar range',
49
- example: '2024-01-31T23:59:59Z'
50
+ description: 'End date for calendar range (YYYY-MM-DD)',
51
+ example: '2024-01-31'
50
52
  }),
51
53
  IsNotEmpty(),
52
- IsDate(),
53
- Type(()=>Date),
54
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
54
+ IsString(),
55
+ Matches(/^\d{4}-\d{2}-\d{2}$/, {
56
+ message: 'endDate must be in YYYY-MM-DD format'
57
+ }),
58
+ _ts_metadata("design:type", String)
55
59
  ], CalendarQueryDto.prototype, "endDate", void 0);
56
60
  _ts_decorate([
57
61
  ApiPropertyOptional({
@@ -84,12 +88,15 @@ export class CalendarEventResponseDto {
84
88
  _define_property(this, "id", void 0);
85
89
  _define_property(this, "title", void 0);
86
90
  _define_property(this, "description", void 0);
87
- _define_property(this, "meetingLink", void 0);
88
- _define_property(this, "startDateTime", void 0);
89
- _define_property(this, "endDateTime", void 0);
91
+ _define_property(this, "eventDate", void 0);
92
+ _define_property(this, "startTime", void 0);
93
+ _define_property(this, "endTime", void 0);
90
94
  _define_property(this, "isAllDay", void 0);
91
95
  _define_property(this, "recurrenceType", void 0);
96
+ _define_property(this, "recurrenceEndDate", void 0);
97
+ _define_property(this, "weekDays", void 0);
92
98
  _define_property(this, "color", void 0);
99
+ _define_property(this, "meetingLink", void 0);
93
100
  _define_property(this, "isActive", void 0);
94
101
  _define_property(this, "originalEventId", void 0);
95
102
  _define_property(this, "isRecurrenceInstance", void 0);
@@ -113,19 +120,19 @@ _ts_decorate([
113
120
  ], CalendarEventResponseDto.prototype, "description", void 0);
114
121
  _ts_decorate([
115
122
  Expose(),
116
- ApiPropertyOptional(),
117
- _ts_metadata("design:type", Object)
118
- ], CalendarEventResponseDto.prototype, "meetingLink", void 0);
123
+ ApiProperty(),
124
+ _ts_metadata("design:type", String)
125
+ ], CalendarEventResponseDto.prototype, "eventDate", void 0);
119
126
  _ts_decorate([
120
127
  Expose(),
121
128
  ApiProperty(),
122
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
123
- ], CalendarEventResponseDto.prototype, "startDateTime", void 0);
129
+ _ts_metadata("design:type", String)
130
+ ], CalendarEventResponseDto.prototype, "startTime", void 0);
124
131
  _ts_decorate([
125
132
  Expose(),
126
133
  ApiProperty(),
127
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
128
- ], CalendarEventResponseDto.prototype, "endDateTime", void 0);
134
+ _ts_metadata("design:type", String)
135
+ ], CalendarEventResponseDto.prototype, "endTime", void 0);
129
136
  _ts_decorate([
130
137
  Expose(),
131
138
  ApiProperty(),
@@ -136,11 +143,30 @@ _ts_decorate([
136
143
  ApiProperty(),
137
144
  _ts_metadata("design:type", String)
138
145
  ], CalendarEventResponseDto.prototype, "recurrenceType", void 0);
146
+ _ts_decorate([
147
+ Expose(),
148
+ ApiPropertyOptional(),
149
+ _ts_metadata("design:type", Object)
150
+ ], CalendarEventResponseDto.prototype, "recurrenceEndDate", void 0);
151
+ _ts_decorate([
152
+ Expose(),
153
+ ApiPropertyOptional({
154
+ type: [
155
+ String
156
+ ]
157
+ }),
158
+ _ts_metadata("design:type", Object)
159
+ ], CalendarEventResponseDto.prototype, "weekDays", void 0);
139
160
  _ts_decorate([
140
161
  Expose(),
141
162
  ApiProperty(),
142
163
  _ts_metadata("design:type", String)
143
164
  ], CalendarEventResponseDto.prototype, "color", void 0);
165
+ _ts_decorate([
166
+ Expose(),
167
+ ApiPropertyOptional(),
168
+ _ts_metadata("design:type", Object)
169
+ ], CalendarEventResponseDto.prototype, "meetingLink", void 0);
144
170
  _ts_decorate([
145
171
  Expose(),
146
172
  ApiProperty(),
@@ -30,7 +30,6 @@ export class CreateEventParticipantDto {
30
30
  _define_property(this, "userId", void 0);
31
31
  _define_property(this, "status", void 0);
32
32
  _define_property(this, "isOrganizer", void 0);
33
- _define_property(this, "metadata", void 0);
34
33
  }
35
34
  }
36
35
  _ts_decorate([
@@ -70,13 +69,6 @@ _ts_decorate([
70
69
  IsBoolean(),
71
70
  _ts_metadata("design:type", Boolean)
72
71
  ], CreateEventParticipantDto.prototype, "isOrganizer", void 0);
73
- _ts_decorate([
74
- ApiPropertyOptional({
75
- description: 'Additional metadata'
76
- }),
77
- IsOptional(),
78
- _ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
79
- ], CreateEventParticipantDto.prototype, "metadata", void 0);
80
72
  export class UpdateEventParticipantDto extends PartialType(CreateEventParticipantDto) {
81
73
  constructor(...args){
82
74
  super(...args), _define_property(this, "id", void 0);
@@ -98,7 +90,6 @@ export class EventParticipantResponseDto {
98
90
  _define_property(this, "userId", void 0);
99
91
  _define_property(this, "status", void 0);
100
92
  _define_property(this, "isOrganizer", void 0);
101
- _define_property(this, "metadata", void 0);
102
93
  _define_property(this, "createdAt", void 0);
103
94
  _define_property(this, "updatedAt", void 0);
104
95
  }
@@ -130,11 +121,6 @@ _ts_decorate([
130
121
  ApiProperty(),
131
122
  _ts_metadata("design:type", Boolean)
132
123
  ], EventParticipantResponseDto.prototype, "isOrganizer", void 0);
133
- _ts_decorate([
134
- Expose(),
135
- ApiPropertyOptional(),
136
- _ts_metadata("design:type", Object)
137
- ], EventParticipantResponseDto.prototype, "metadata", void 0);
138
124
  _ts_decorate([
139
125
  Expose(),
140
126
  ApiProperty(),
@@ -169,31 +155,3 @@ _ts_decorate([
169
155
  IsEnum(ParticipantStatus),
170
156
  _ts_metadata("design:type", typeof ParticipantStatus === "undefined" ? Object : ParticipantStatus)
171
157
  ], UpdateParticipantStatusDto.prototype, "status", void 0);
172
- export class BulkAddParticipantsDto {
173
- constructor(){
174
- _define_property(this, "eventId", void 0);
175
- _define_property(this, "userIds", void 0);
176
- }
177
- }
178
- _ts_decorate([
179
- ApiProperty({
180
- description: 'Event ID',
181
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
182
- }),
183
- IsNotEmpty(),
184
- IsUUID(),
185
- _ts_metadata("design:type", String)
186
- ], BulkAddParticipantsDto.prototype, "eventId", void 0);
187
- _ts_decorate([
188
- ApiProperty({
189
- description: 'User IDs to add as participants',
190
- type: [
191
- String
192
- ]
193
- }),
194
- IsNotEmpty(),
195
- IsUUID('4', {
196
- each: true
197
- }),
198
- _ts_metadata("design:type", Array)
199
- ], BulkAddParticipantsDto.prototype, "userIds", void 0);