@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.
- package/README.md +126 -337
- package/adapters/event-manager.adapter.d.ts +0 -2
- package/cjs/adapters/event-manager.adapter.js +1 -7
- package/cjs/config/message-keys.js +1 -31
- package/cjs/controllers/event.controller.js +10 -60
- package/cjs/controllers/index.js +0 -1
- package/cjs/docs/event-manager-swagger.config.js +19 -29
- package/cjs/docs/index.js +0 -3
- package/cjs/dtos/calendar-query.dto.js +46 -20
- package/cjs/dtos/event-participant.dto.js +0 -45
- package/cjs/dtos/event.dto.js +97 -45
- package/cjs/entities/event-participant.entity.js +1 -8
- package/cjs/entities/event.entity.js +38 -26
- package/cjs/modules/event-manager.module.js +2 -4
- package/cjs/services/event-manager-helper.service.js +15 -83
- package/cjs/services/event.service.js +143 -122
- package/cjs/services/index.js +0 -1
- package/config/message-keys.d.ts +0 -56
- package/controllers/event.controller.d.ts +2 -5
- package/controllers/index.d.ts +0 -1
- package/docs/index.d.ts +1 -1
- package/dtos/calendar-query.dto.d.ts +8 -5
- package/dtos/event-participant.dto.d.ts +0 -6
- package/dtos/event.dto.d.ts +14 -10
- package/entities/event-participant.entity.d.ts +0 -1
- package/entities/event.entity.d.ts +6 -5
- package/fesm/adapters/event-manager.adapter.js +1 -7
- package/fesm/config/message-keys.js +1 -29
- package/fesm/controllers/event.controller.js +11 -61
- package/fesm/controllers/index.js +0 -1
- package/fesm/docs/event-manager-swagger.config.js +19 -29
- package/fesm/docs/index.js +1 -1
- package/fesm/dtos/calendar-query.dto.js +47 -21
- package/fesm/dtos/event-participant.dto.js +0 -42
- package/fesm/dtos/event.dto.js +98 -46
- package/fesm/entities/event-participant.entity.js +1 -8
- package/fesm/entities/event.entity.js +38 -26
- package/fesm/modules/event-manager.module.js +4 -6
- package/fesm/services/event-manager-helper.service.js +17 -85
- package/fesm/services/event.service.js +144 -123
- package/fesm/services/index.js +0 -1
- package/interfaces/event.interface.d.ts +6 -6
- package/package.json +3 -3
- package/services/event-manager-helper.service.d.ts +1 -3
- package/services/event.service.d.ts +8 -8
- package/services/index.d.ts +0 -1
- package/cjs/controllers/event-participant.controller.js +0 -287
- package/cjs/services/event-participant.service.js +0 -198
- package/controllers/event-participant.controller.d.ts +0 -35
- package/fesm/controllers/event-participant.controller.js +0 -277
- package/fesm/services/event-participant.service.js +0 -188
- 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
|
-
|
|
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 {
|
|
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
|
|
104
|
-
const
|
|
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: '
|
|
115
|
-
messageKey:
|
|
116
|
-
data: plainToInstance(
|
|
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('
|
|
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: '
|
|
149
|
+
summary: 'Update participant status (accept/decline/tentative)'
|
|
199
150
|
}),
|
|
200
151
|
ApiBody({
|
|
201
|
-
type:
|
|
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
|
|
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, "
|
|
166
|
+
], EventController.prototype, "updateParticipantStatus", null);
|
|
217
167
|
EventController = _ts_decorate([
|
|
218
168
|
ApiTags('Events'),
|
|
219
169
|
Controller('event-manager/event'),
|
|
@@ -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
|
-
-
|
|
37
|
-
-
|
|
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 \`
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
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: \`{ "
|
|
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
|
-
###
|
|
99
|
-
- \`/event-manager/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. **
|
|
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,
|
package/fesm/docs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Re-export permissions from shared for convenience
|
|
2
|
-
export { EVENT_PERMISSIONS
|
|
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,
|
|
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-
|
|
38
|
+
description: 'Start date for calendar range (YYYY-MM-DD)',
|
|
39
|
+
example: '2024-01-01'
|
|
40
40
|
}),
|
|
41
41
|
IsNotEmpty(),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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-
|
|
50
|
+
description: 'End date for calendar range (YYYY-MM-DD)',
|
|
51
|
+
example: '2024-01-31'
|
|
50
52
|
}),
|
|
51
53
|
IsNotEmpty(),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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, "
|
|
88
|
-
_define_property(this, "
|
|
89
|
-
_define_property(this, "
|
|
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
|
-
|
|
117
|
-
_ts_metadata("design:type",
|
|
118
|
-
], CalendarEventResponseDto.prototype, "
|
|
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",
|
|
123
|
-
], CalendarEventResponseDto.prototype, "
|
|
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",
|
|
128
|
-
], CalendarEventResponseDto.prototype, "
|
|
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);
|