@flusys/nestjs-event-manager 3.0.1

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 (89) hide show
  1. package/README.md +1328 -0
  2. package/adapters/event-manager.adapter.d.ts +12 -0
  3. package/adapters/index.d.ts +1 -0
  4. package/cjs/adapters/event-manager.adapter.js +71 -0
  5. package/cjs/adapters/index.js +18 -0
  6. package/cjs/config/event-manager.constants.js +13 -0
  7. package/cjs/config/index.js +18 -0
  8. package/cjs/controllers/event-participant.controller.js +271 -0
  9. package/cjs/controllers/event.controller.js +229 -0
  10. package/cjs/controllers/index.js +19 -0
  11. package/cjs/docs/event-manager-swagger.config.js +135 -0
  12. package/cjs/docs/index.js +24 -0
  13. package/cjs/dtos/calendar-query.dto.js +186 -0
  14. package/cjs/dtos/event-participant.dto.js +226 -0
  15. package/cjs/dtos/event.dto.js +291 -0
  16. package/cjs/dtos/index.js +20 -0
  17. package/cjs/entities/event-participant.entity.js +96 -0
  18. package/cjs/entities/event-with-company.entity.js +56 -0
  19. package/cjs/entities/event.entity.js +143 -0
  20. package/cjs/entities/index.js +55 -0
  21. package/cjs/index.js +27 -0
  22. package/cjs/interfaces/event-manager-module.interface.js +4 -0
  23. package/cjs/interfaces/event.interface.js +4 -0
  24. package/cjs/interfaces/index.js +19 -0
  25. package/cjs/modules/event-manager.module.js +133 -0
  26. package/cjs/modules/index.js +18 -0
  27. package/cjs/services/event-manager-config.service.js +76 -0
  28. package/cjs/services/event-manager-datasource.provider.js +181 -0
  29. package/cjs/services/event-manager-helper.service.js +253 -0
  30. package/cjs/services/event-participant.service.js +164 -0
  31. package/cjs/services/event.service.js +421 -0
  32. package/cjs/services/index.js +22 -0
  33. package/config/event-manager.constants.d.ts +1 -0
  34. package/config/index.d.ts +1 -0
  35. package/controllers/event-participant.controller.d.ts +31 -0
  36. package/controllers/event.controller.d.ts +24 -0
  37. package/controllers/index.d.ts +2 -0
  38. package/docs/event-manager-swagger.config.d.ts +3 -0
  39. package/docs/index.d.ts +2 -0
  40. package/dtos/calendar-query.dto.d.ts +23 -0
  41. package/dtos/event-participant.dto.d.ts +31 -0
  42. package/dtos/event.dto.d.ts +37 -0
  43. package/dtos/index.d.ts +3 -0
  44. package/entities/event-participant.entity.d.ts +8 -0
  45. package/entities/event-with-company.entity.d.ts +4 -0
  46. package/entities/event.entity.d.ts +14 -0
  47. package/entities/index.d.ts +11 -0
  48. package/fesm/adapters/event-manager.adapter.js +61 -0
  49. package/fesm/adapters/index.js +1 -0
  50. package/fesm/config/event-manager.constants.js +3 -0
  51. package/fesm/config/index.js +1 -0
  52. package/fesm/controllers/event-participant.controller.js +261 -0
  53. package/fesm/controllers/event.controller.js +219 -0
  54. package/fesm/controllers/index.js +2 -0
  55. package/fesm/docs/event-manager-swagger.config.js +128 -0
  56. package/fesm/docs/index.js +4 -0
  57. package/fesm/dtos/calendar-query.dto.js +168 -0
  58. package/fesm/dtos/event-participant.dto.js +199 -0
  59. package/fesm/dtos/event.dto.js +270 -0
  60. package/fesm/dtos/index.js +3 -0
  61. package/fesm/entities/event-participant.entity.js +86 -0
  62. package/fesm/entities/event-with-company.entity.js +46 -0
  63. package/fesm/entities/event.entity.js +133 -0
  64. package/fesm/entities/index.js +24 -0
  65. package/fesm/index.js +10 -0
  66. package/fesm/interfaces/event-manager-module.interface.js +3 -0
  67. package/fesm/interfaces/event.interface.js +1 -0
  68. package/fesm/interfaces/index.js +2 -0
  69. package/fesm/modules/event-manager.module.js +123 -0
  70. package/fesm/modules/index.js +1 -0
  71. package/fesm/services/event-manager-config.service.js +66 -0
  72. package/fesm/services/event-manager-datasource.provider.js +130 -0
  73. package/fesm/services/event-manager-helper.service.js +243 -0
  74. package/fesm/services/event-participant.service.js +154 -0
  75. package/fesm/services/event.service.js +411 -0
  76. package/fesm/services/index.js +5 -0
  77. package/index.d.ts +9 -0
  78. package/interfaces/event-manager-module.interface.d.ts +20 -0
  79. package/interfaces/event.interface.d.ts +28 -0
  80. package/interfaces/index.d.ts +2 -0
  81. package/modules/event-manager.module.d.ts +8 -0
  82. package/modules/index.d.ts +1 -0
  83. package/package.json +89 -0
  84. package/services/event-manager-config.service.d.ts +13 -0
  85. package/services/event-manager-datasource.provider.d.ts +23 -0
  86. package/services/event-manager-helper.service.d.ts +27 -0
  87. package/services/event-participant.service.d.ts +27 -0
  88. package/services/event.service.d.ts +49 -0
  89. package/services/index.d.ts +5 -0
@@ -0,0 +1,219 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ }
20
+ function _ts_metadata(k, v) {
21
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
+ }
23
+ function _ts_param(paramIndex, decorator) {
24
+ return function(target, key) {
25
+ decorator(target, key, paramIndex);
26
+ };
27
+ }
28
+ import { Body, Controller, HttpCode, HttpStatus, Inject, Post, UseGuards } from '@nestjs/common';
29
+ import { ApiBearerAuth, ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
30
+ import { createApiController } from '@flusys/nestjs-shared/classes';
31
+ import { CurrentUser, RequirePermission } from '@flusys/nestjs-shared/decorators';
32
+ import { ListResponseDto, SingleResponseDto } from '@flusys/nestjs-shared/dtos';
33
+ import { JwtAuthGuard } from '@flusys/nestjs-shared/guards';
34
+ import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
35
+ import { plainToInstance } from 'class-transformer';
36
+ import { BulkAddParticipantsDto, CalendarQueryDto, CalendarEventResponseDto, CreateEventDto, EventParticipantResponseDto, EventResponseDto, UpdateEventDto } from '../dtos';
37
+ import { EVENT_PERMISSIONS } from '../docs';
38
+ import { EventService } from '../services/event.service';
39
+ export class EventController extends createApiController(CreateEventDto, UpdateEventDto, EventResponseDto, {
40
+ security: {
41
+ insert: {
42
+ level: 'permission',
43
+ permissions: [
44
+ EVENT_PERMISSIONS.CREATE
45
+ ]
46
+ },
47
+ insertMany: {
48
+ level: 'permission',
49
+ permissions: [
50
+ EVENT_PERMISSIONS.CREATE
51
+ ]
52
+ },
53
+ getById: {
54
+ level: 'permission',
55
+ permissions: [
56
+ EVENT_PERMISSIONS.READ
57
+ ]
58
+ },
59
+ getAll: {
60
+ level: 'permission',
61
+ permissions: [
62
+ EVENT_PERMISSIONS.READ
63
+ ]
64
+ },
65
+ update: {
66
+ level: 'permission',
67
+ permissions: [
68
+ EVENT_PERMISSIONS.UPDATE
69
+ ]
70
+ },
71
+ updateMany: {
72
+ level: 'permission',
73
+ permissions: [
74
+ EVENT_PERMISSIONS.UPDATE
75
+ ]
76
+ },
77
+ delete: {
78
+ level: 'permission',
79
+ permissions: [
80
+ EVENT_PERMISSIONS.DELETE
81
+ ]
82
+ }
83
+ }
84
+ }) {
85
+ async getCalendarEvents(dto, user) {
86
+ const events = await this.eventService.getEventsForCalendarRange(dto, user);
87
+ const data = plainToInstance(CalendarEventResponseDto, events);
88
+ return {
89
+ success: true,
90
+ message: 'Calendar events retrieved successfully',
91
+ data,
92
+ meta: {
93
+ total: data.length,
94
+ page: 0,
95
+ pageSize: data.length,
96
+ count: data.length
97
+ }
98
+ };
99
+ }
100
+ async getEventWithParticipants(body, user) {
101
+ const event = await this.eventService.getEventWithParticipants(body.id, user);
102
+ if (!event) {
103
+ return {
104
+ success: false,
105
+ message: 'Event not found'
106
+ };
107
+ }
108
+ return {
109
+ success: true,
110
+ message: 'Event retrieved successfully',
111
+ data: plainToInstance(EventResponseDto, event)
112
+ };
113
+ }
114
+ async addParticipants(dto, user) {
115
+ const participants = await this.eventService.addParticipants(dto.eventId, dto.userIds, user);
116
+ return {
117
+ success: true,
118
+ message: 'Participants added successfully',
119
+ data: plainToInstance(EventParticipantResponseDto, participants)
120
+ };
121
+ }
122
+ constructor(eventService){
123
+ super(eventService), _define_property(this, "eventService", void 0), this.eventService = eventService;
124
+ }
125
+ }
126
+ _ts_decorate([
127
+ Post('calendar'),
128
+ UseGuards(JwtAuthGuard),
129
+ ApiBearerAuth(),
130
+ HttpCode(HttpStatus.OK),
131
+ RequirePermission(EVENT_PERMISSIONS.READ),
132
+ ApiOperation({
133
+ summary: 'Get events for calendar range with recurrence expansion'
134
+ }),
135
+ ApiBody({
136
+ type: CalendarQueryDto
137
+ }),
138
+ ApiResponse({
139
+ status: 200,
140
+ description: 'Calendar events retrieved successfully',
141
+ type: ListResponseDto
142
+ }),
143
+ _ts_param(0, Body()),
144
+ _ts_param(1, CurrentUser()),
145
+ _ts_metadata("design:type", Function),
146
+ _ts_metadata("design:paramtypes", [
147
+ typeof CalendarQueryDto === "undefined" ? Object : CalendarQueryDto,
148
+ typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
149
+ ]),
150
+ _ts_metadata("design:returntype", Promise)
151
+ ], EventController.prototype, "getCalendarEvents", null);
152
+ _ts_decorate([
153
+ Post('get-with-participants'),
154
+ UseGuards(JwtAuthGuard),
155
+ ApiBearerAuth(),
156
+ HttpCode(HttpStatus.OK),
157
+ RequirePermission(EVENT_PERMISSIONS.READ),
158
+ ApiOperation({
159
+ summary: 'Get event with participants'
160
+ }),
161
+ ApiBody({
162
+ schema: {
163
+ properties: {
164
+ id: {
165
+ type: 'string',
166
+ format: 'uuid'
167
+ }
168
+ }
169
+ }
170
+ }),
171
+ ApiResponse({
172
+ status: 200,
173
+ description: 'Event retrieved successfully',
174
+ type: SingleResponseDto
175
+ }),
176
+ _ts_param(0, Body()),
177
+ _ts_param(1, CurrentUser()),
178
+ _ts_metadata("design:type", Function),
179
+ _ts_metadata("design:paramtypes", [
180
+ Object,
181
+ typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
182
+ ]),
183
+ _ts_metadata("design:returntype", Promise)
184
+ ], EventController.prototype, "getEventWithParticipants", null);
185
+ _ts_decorate([
186
+ Post('add-participants'),
187
+ UseGuards(JwtAuthGuard),
188
+ ApiBearerAuth(),
189
+ HttpCode(HttpStatus.OK),
190
+ RequirePermission(EVENT_PERMISSIONS.UPDATE),
191
+ ApiOperation({
192
+ summary: 'Add participants to an event'
193
+ }),
194
+ ApiBody({
195
+ type: BulkAddParticipantsDto
196
+ }),
197
+ ApiResponse({
198
+ status: 200,
199
+ description: 'Participants added successfully',
200
+ type: SingleResponseDto
201
+ }),
202
+ _ts_param(0, Body()),
203
+ _ts_param(1, CurrentUser()),
204
+ _ts_metadata("design:type", Function),
205
+ _ts_metadata("design:paramtypes", [
206
+ typeof BulkAddParticipantsDto === "undefined" ? Object : BulkAddParticipantsDto,
207
+ typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
208
+ ]),
209
+ _ts_metadata("design:returntype", Promise)
210
+ ], EventController.prototype, "addParticipants", null);
211
+ EventController = _ts_decorate([
212
+ ApiTags('Events'),
213
+ Controller('event-manager/event'),
214
+ _ts_param(0, Inject(EventService)),
215
+ _ts_metadata("design:type", Function),
216
+ _ts_metadata("design:paramtypes", [
217
+ typeof EventService === "undefined" ? Object : EventService
218
+ ])
219
+ ], EventController);
@@ -0,0 +1,2 @@
1
+ export * from './event.controller';
2
+ export * from './event-participant.controller';
@@ -0,0 +1,128 @@
1
+ /** Schema properties to exclude when company feature is disabled */ const COMPANY_SCHEMA_EXCLUSIONS = [
2
+ {
3
+ schemaName: 'EventResponseDto',
4
+ properties: [
5
+ 'companyId'
6
+ ]
7
+ },
8
+ {
9
+ schemaName: 'CalendarEventResponseDto',
10
+ properties: [
11
+ 'companyId'
12
+ ]
13
+ }
14
+ ];
15
+ function buildDescription(enableCompanyFeature) {
16
+ const companyFeatures = enableCompanyFeature ? '\n- **Company-scoped events**' : '';
17
+ const companyIsolation = enableCompanyFeature ? '\n- **Company isolation**' : '';
18
+ const multiTenantSection = enableCompanyFeature ? `
19
+ ## Multi-Tenant Support
20
+
21
+ Events are automatically isolated by:
22
+ - **Company ID**: Events belong to specific companies
23
+ - **User Context**: Participants are company members
24
+
25
+ All queries automatically filter by current user's company context.
26
+ ` : '';
27
+ return `
28
+ # Event Manager API
29
+
30
+ Calendar event management with recurrence support${enableCompanyFeature ? ' and multi-tenant capabilities' : ''}.
31
+
32
+ ## Features
33
+
34
+ ### 📅 Event Management
35
+ - Create, read, update, delete events
36
+ - Rich metadata support
37
+ - Meeting link integration
38
+ - Color-coded events${companyFeatures}
39
+
40
+ ### 🔄 Recurrence Support
41
+ - **None**: Single occurrence
42
+ - **Daily**: Every day
43
+ - **Weekly**: Specific days of the week
44
+ - **Biweekly**: Every two weeks
45
+ - **Monthly**: Same day each month
46
+
47
+ ### 👥 Participant Management
48
+ - Add/remove participants
49
+ - Status tracking (pending, accepted, declined, tentative)
50
+ - Organizer designation
51
+ - Bulk participant operations
52
+
53
+ ### 📆 Calendar Queries
54
+ - Date range queries
55
+ - Automatic recurrence expansion
56
+ - Filter by user participation
57
+ - Include/exclude participants in response
58
+
59
+ ### 🔒 Security
60
+ - JWT authentication required
61
+ - Permission-based access control${companyIsolation}
62
+
63
+ ## Recurrence Patterns
64
+
65
+ ### 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
74
+
75
+ Example: \`{ "recurrenceDays": [1, 3, 5] }\` = Monday, Wednesday, Friday
76
+
77
+ ### Recurrence Expansion
78
+ Calendar queries automatically expand recurring events into individual instances.
79
+ Each instance includes:
80
+ - \`isRecurrenceInstance: true\`
81
+ - \`originalEventId\`: Reference to parent event
82
+ - \`recurrenceInstanceDate\`: Specific occurrence date
83
+ ${multiTenantSection}
84
+ ## API Endpoints
85
+
86
+ All endpoints use POST method (RPC style):
87
+
88
+ ### Events
89
+ - \`/event-manager/event/insert\` - Create event
90
+ - \`/event-manager/event/get/:id\` - Get by ID
91
+ - \`/event-manager/event/get-all\` - List with pagination
92
+ - \`/event-manager/event/update\` - Update event
93
+ - \`/event-manager/event/delete\` - Soft delete
94
+ - \`/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
+
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
105
+
106
+ ## Getting Started
107
+
108
+ 1. **Authenticate**: Obtain JWT token from /auth/login
109
+ 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
112
+ `;
113
+ }
114
+ /**
115
+ * Event Manager Module Swagger Configuration
116
+ * Use this with setupSwaggerDocs() from @flusys/nestjs-core
117
+ */ export function eventManagerSwaggerConfig(bootstrapConfig) {
118
+ const enableCompanyFeature = bootstrapConfig?.enableCompanyFeature ?? true;
119
+ return {
120
+ title: 'Event Manager API',
121
+ description: buildDescription(enableCompanyFeature),
122
+ version: '1.0',
123
+ path: 'api/docs/event-manager',
124
+ bearerAuth: true,
125
+ excludeTags: [],
126
+ excludeSchemaProperties: enableCompanyFeature ? undefined : COMPANY_SCHEMA_EXCLUSIONS
127
+ };
128
+ }
@@ -0,0 +1,4 @@
1
+ // Re-export permissions from shared for convenience
2
+ export { EVENT_PERMISSIONS, EVENT_PARTICIPANT_PERMISSIONS } from '@flusys/nestjs-shared';
3
+ // Swagger configuration
4
+ export { eventManagerSwaggerConfig } from './event-manager-swagger.config';
@@ -0,0 +1,168 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ }
20
+ function _ts_metadata(k, v) {
21
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
+ }
23
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
24
+ import { Expose, Type } from 'class-transformer';
25
+ import { IsBoolean, IsDate, IsNotEmpty, IsOptional, IsUUID } from 'class-validator';
26
+ import { EventParticipantResponseDto } from './event-participant.dto';
27
+ export class CalendarQueryDto {
28
+ constructor(){
29
+ _define_property(this, "startDate", void 0);
30
+ _define_property(this, "endDate", void 0);
31
+ _define_property(this, "includeParticipants", void 0);
32
+ _define_property(this, "userId", void 0);
33
+ _define_property(this, "activeOnly", void 0);
34
+ }
35
+ }
36
+ _ts_decorate([
37
+ ApiProperty({
38
+ description: 'Start date for calendar range',
39
+ example: '2024-01-01T00:00:00Z'
40
+ }),
41
+ IsNotEmpty(),
42
+ IsDate(),
43
+ Type(()=>Date),
44
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
45
+ ], CalendarQueryDto.prototype, "startDate", void 0);
46
+ _ts_decorate([
47
+ ApiProperty({
48
+ description: 'End date for calendar range',
49
+ example: '2024-01-31T23:59:59Z'
50
+ }),
51
+ IsNotEmpty(),
52
+ IsDate(),
53
+ Type(()=>Date),
54
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
55
+ ], CalendarQueryDto.prototype, "endDate", void 0);
56
+ _ts_decorate([
57
+ ApiPropertyOptional({
58
+ description: 'Include participant details',
59
+ default: false
60
+ }),
61
+ IsOptional(),
62
+ IsBoolean(),
63
+ _ts_metadata("design:type", Boolean)
64
+ ], CalendarQueryDto.prototype, "includeParticipants", void 0);
65
+ _ts_decorate([
66
+ ApiPropertyOptional({
67
+ description: 'Filter by specific user ID'
68
+ }),
69
+ IsOptional(),
70
+ IsUUID(),
71
+ _ts_metadata("design:type", String)
72
+ ], CalendarQueryDto.prototype, "userId", void 0);
73
+ _ts_decorate([
74
+ ApiPropertyOptional({
75
+ description: 'Include only active events',
76
+ default: true
77
+ }),
78
+ IsOptional(),
79
+ IsBoolean(),
80
+ _ts_metadata("design:type", Boolean)
81
+ ], CalendarQueryDto.prototype, "activeOnly", void 0);
82
+ export class CalendarEventResponseDto {
83
+ constructor(){
84
+ _define_property(this, "id", void 0);
85
+ _define_property(this, "title", void 0);
86
+ _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);
90
+ _define_property(this, "isAllDay", void 0);
91
+ _define_property(this, "recurrenceType", void 0);
92
+ _define_property(this, "color", void 0);
93
+ _define_property(this, "isActive", void 0);
94
+ _define_property(this, "originalEventId", void 0);
95
+ _define_property(this, "isRecurrenceInstance", void 0);
96
+ _define_property(this, "participants", void 0);
97
+ }
98
+ }
99
+ _ts_decorate([
100
+ Expose(),
101
+ ApiProperty(),
102
+ _ts_metadata("design:type", String)
103
+ ], CalendarEventResponseDto.prototype, "id", void 0);
104
+ _ts_decorate([
105
+ Expose(),
106
+ ApiProperty(),
107
+ _ts_metadata("design:type", String)
108
+ ], CalendarEventResponseDto.prototype, "title", void 0);
109
+ _ts_decorate([
110
+ Expose(),
111
+ ApiPropertyOptional(),
112
+ _ts_metadata("design:type", Object)
113
+ ], CalendarEventResponseDto.prototype, "description", void 0);
114
+ _ts_decorate([
115
+ Expose(),
116
+ ApiPropertyOptional(),
117
+ _ts_metadata("design:type", Object)
118
+ ], CalendarEventResponseDto.prototype, "meetingLink", void 0);
119
+ _ts_decorate([
120
+ Expose(),
121
+ ApiProperty(),
122
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
123
+ ], CalendarEventResponseDto.prototype, "startDateTime", void 0);
124
+ _ts_decorate([
125
+ Expose(),
126
+ ApiProperty(),
127
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
128
+ ], CalendarEventResponseDto.prototype, "endDateTime", void 0);
129
+ _ts_decorate([
130
+ Expose(),
131
+ ApiProperty(),
132
+ _ts_metadata("design:type", Boolean)
133
+ ], CalendarEventResponseDto.prototype, "isAllDay", void 0);
134
+ _ts_decorate([
135
+ Expose(),
136
+ ApiProperty(),
137
+ _ts_metadata("design:type", String)
138
+ ], CalendarEventResponseDto.prototype, "recurrenceType", void 0);
139
+ _ts_decorate([
140
+ Expose(),
141
+ ApiProperty(),
142
+ _ts_metadata("design:type", String)
143
+ ], CalendarEventResponseDto.prototype, "color", void 0);
144
+ _ts_decorate([
145
+ Expose(),
146
+ ApiProperty(),
147
+ _ts_metadata("design:type", Boolean)
148
+ ], CalendarEventResponseDto.prototype, "isActive", void 0);
149
+ _ts_decorate([
150
+ Expose(),
151
+ ApiPropertyOptional(),
152
+ _ts_metadata("design:type", String)
153
+ ], CalendarEventResponseDto.prototype, "originalEventId", void 0);
154
+ _ts_decorate([
155
+ Expose(),
156
+ ApiPropertyOptional(),
157
+ _ts_metadata("design:type", Boolean)
158
+ ], CalendarEventResponseDto.prototype, "isRecurrenceInstance", void 0);
159
+ _ts_decorate([
160
+ Expose(),
161
+ ApiPropertyOptional({
162
+ type: ()=>[
163
+ EventParticipantResponseDto
164
+ ]
165
+ }),
166
+ Type(()=>EventParticipantResponseDto),
167
+ _ts_metadata("design:type", Array)
168
+ ], CalendarEventResponseDto.prototype, "participants", void 0);