@flusys/nestjs-task-manager 5.3.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 (137) hide show
  1. package/README.md +245 -0
  2. package/cjs/config/index.js +19 -0
  3. package/cjs/config/message-keys.js +92 -0
  4. package/cjs/config/task-manager.constants.js +11 -0
  5. package/cjs/controllers/index.js +22 -0
  6. package/cjs/controllers/task-board.controller.js +219 -0
  7. package/cjs/controllers/task-comment.controller.js +103 -0
  8. package/cjs/controllers/task-label.controller.js +112 -0
  9. package/cjs/controllers/task-list.controller.js +158 -0
  10. package/cjs/controllers/task.controller.js +199 -0
  11. package/cjs/docs/index.js +18 -0
  12. package/cjs/docs/task-manager-swagger.config.js +43 -0
  13. package/cjs/dtos/index.js +22 -0
  14. package/cjs/dtos/task-board.dto.js +310 -0
  15. package/cjs/dtos/task-comment.dto.js +131 -0
  16. package/cjs/dtos/task-label.dto.js +120 -0
  17. package/cjs/dtos/task-list.dto.js +198 -0
  18. package/cjs/dtos/task.dto.js +367 -0
  19. package/cjs/entities/index.js +72 -0
  20. package/cjs/entities/task-activity.entity.js +98 -0
  21. package/cjs/entities/task-assignee.entity.js +67 -0
  22. package/cjs/entities/task-board-member.entity.js +94 -0
  23. package/cjs/entities/task-board-with-company.entity.js +57 -0
  24. package/cjs/entities/task-board.entity.js +88 -0
  25. package/cjs/entities/task-comment.entity.js +80 -0
  26. package/cjs/entities/task-label.entity.js +72 -0
  27. package/cjs/entities/task-list.entity.js +104 -0
  28. package/cjs/entities/task-task-label.entity.js +67 -0
  29. package/cjs/entities/task.entity.js +151 -0
  30. package/cjs/gateways/index.js +18 -0
  31. package/cjs/gateways/task-board.gateway.js +199 -0
  32. package/cjs/index.js +26 -0
  33. package/cjs/interfaces/index.js +19 -0
  34. package/cjs/interfaces/task-manager-module.interface.js +4 -0
  35. package/cjs/interfaces/task.interface.js +4 -0
  36. package/cjs/modules/index.js +18 -0
  37. package/cjs/modules/task-manager.module.js +131 -0
  38. package/cjs/services/index.js +25 -0
  39. package/cjs/services/task-activity.service.js +76 -0
  40. package/cjs/services/task-board.service.js +235 -0
  41. package/cjs/services/task-comment.service.js +103 -0
  42. package/cjs/services/task-label.service.js +97 -0
  43. package/cjs/services/task-list.service.js +115 -0
  44. package/cjs/services/task-manager-config.service.js +69 -0
  45. package/cjs/services/task-manager-datasource.provider.js +84 -0
  46. package/cjs/services/task.service.js +359 -0
  47. package/config/index.d.ts +2 -0
  48. package/config/message-keys.d.ts +65 -0
  49. package/config/task-manager.constants.d.ts +1 -0
  50. package/controllers/index.d.ts +5 -0
  51. package/controllers/task-board.controller.d.ts +27 -0
  52. package/controllers/task-comment.controller.d.ts +22 -0
  53. package/controllers/task-label.controller.d.ts +22 -0
  54. package/controllers/task-list.controller.d.ts +26 -0
  55. package/controllers/task.controller.d.ts +28 -0
  56. package/docs/index.d.ts +1 -0
  57. package/docs/task-manager-swagger.config.d.ts +2 -0
  58. package/dtos/index.d.ts +5 -0
  59. package/dtos/task-board.dto.d.ts +44 -0
  60. package/dtos/task-comment.dto.d.ts +16 -0
  61. package/dtos/task-label.dto.d.ts +16 -0
  62. package/dtos/task-list.dto.d.ts +26 -0
  63. package/dtos/task.dto.d.ts +48 -0
  64. package/entities/index.d.ts +22 -0
  65. package/entities/task-activity.entity.d.ts +9 -0
  66. package/entities/task-assignee.entity.d.ts +5 -0
  67. package/entities/task-board-member.entity.d.ts +12 -0
  68. package/entities/task-board-with-company.entity.d.ts +4 -0
  69. package/entities/task-board.entity.d.ts +8 -0
  70. package/entities/task-comment.entity.d.ts +7 -0
  71. package/entities/task-label.entity.d.ts +6 -0
  72. package/entities/task-list.entity.d.ts +9 -0
  73. package/entities/task-task-label.entity.d.ts +5 -0
  74. package/entities/task.entity.d.ts +23 -0
  75. package/fesm/config/index.js +2 -0
  76. package/fesm/config/message-keys.js +65 -0
  77. package/fesm/config/task-manager.constants.js +1 -0
  78. package/fesm/controllers/index.js +5 -0
  79. package/fesm/controllers/task-board.controller.js +209 -0
  80. package/fesm/controllers/task-comment.controller.js +93 -0
  81. package/fesm/controllers/task-label.controller.js +102 -0
  82. package/fesm/controllers/task-list.controller.js +148 -0
  83. package/fesm/controllers/task.controller.js +189 -0
  84. package/fesm/docs/index.js +1 -0
  85. package/fesm/docs/task-manager-swagger.config.js +33 -0
  86. package/fesm/dtos/index.js +5 -0
  87. package/fesm/dtos/task-board.dto.js +277 -0
  88. package/fesm/dtos/task-comment.dto.js +110 -0
  89. package/fesm/dtos/task-label.dto.js +99 -0
  90. package/fesm/dtos/task-list.dto.js +174 -0
  91. package/fesm/dtos/task.dto.js +337 -0
  92. package/fesm/entities/index.js +46 -0
  93. package/fesm/entities/task-activity.entity.js +88 -0
  94. package/fesm/entities/task-assignee.entity.js +57 -0
  95. package/fesm/entities/task-board-member.entity.js +76 -0
  96. package/fesm/entities/task-board-with-company.entity.js +47 -0
  97. package/fesm/entities/task-board.entity.js +78 -0
  98. package/fesm/entities/task-comment.entity.js +70 -0
  99. package/fesm/entities/task-label.entity.js +62 -0
  100. package/fesm/entities/task-list.entity.js +94 -0
  101. package/fesm/entities/task-task-label.entity.js +57 -0
  102. package/fesm/entities/task.entity.js +133 -0
  103. package/fesm/gateways/index.js +1 -0
  104. package/fesm/gateways/task-board.gateway.js +148 -0
  105. package/fesm/index.js +9 -0
  106. package/fesm/interfaces/index.js +2 -0
  107. package/fesm/interfaces/task-manager-module.interface.js +1 -0
  108. package/fesm/interfaces/task.interface.js +1 -0
  109. package/fesm/modules/index.js +1 -0
  110. package/fesm/modules/task-manager.module.js +121 -0
  111. package/fesm/services/index.js +8 -0
  112. package/fesm/services/task-activity.service.js +66 -0
  113. package/fesm/services/task-board.service.js +225 -0
  114. package/fesm/services/task-comment.service.js +93 -0
  115. package/fesm/services/task-label.service.js +87 -0
  116. package/fesm/services/task-list.service.js +105 -0
  117. package/fesm/services/task-manager-config.service.js +59 -0
  118. package/fesm/services/task-manager-datasource.provider.js +74 -0
  119. package/fesm/services/task.service.js +349 -0
  120. package/gateways/index.d.ts +1 -0
  121. package/gateways/task-board.gateway.d.ts +22 -0
  122. package/index.d.ts +9 -0
  123. package/interfaces/index.d.ts +2 -0
  124. package/interfaces/task-manager-module.interface.d.ts +19 -0
  125. package/interfaces/task.interface.d.ts +52 -0
  126. package/modules/index.d.ts +1 -0
  127. package/modules/task-manager.module.d.ts +8 -0
  128. package/package.json +91 -0
  129. package/services/index.d.ts +8 -0
  130. package/services/task-activity.service.d.ts +8 -0
  131. package/services/task-board.service.d.ts +32 -0
  132. package/services/task-comment.service.d.ts +18 -0
  133. package/services/task-label.service.d.ts +18 -0
  134. package/services/task-list.service.d.ts +19 -0
  135. package/services/task-manager-config.service.d.ts +12 -0
  136. package/services/task-manager-datasource.provider.d.ts +18 -0
  137. package/services/task.service.d.ts +44 -0
@@ -0,0 +1,209 @@
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 { TASK_BOARD_PERMISSIONS } from '@flusys/nestjs-shared';
29
+ import { createApiController } from '@flusys/nestjs-shared/classes';
30
+ import { ApiResponseDto, CurrentUser, RequirePermission } from '@flusys/nestjs-shared/decorators';
31
+ import { MessageResponseDto } from '@flusys/nestjs-shared/dtos';
32
+ import { JwtAuthGuard, PermissionGuard } from '@flusys/nestjs-shared/guards';
33
+ import { ILoggedUserInfo } from '@flusys/nestjs-shared/interfaces';
34
+ import { Body, Controller, HttpCode, HttpStatus, Inject, Post, UseGuards } from '@nestjs/common';
35
+ import { ApiBearerAuth, ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
36
+ import { plainToInstance } from 'class-transformer';
37
+ import { TASK_BOARD_MESSAGES } from '../config';
38
+ import { AddBoardMemberDto, CreateTaskBoardDto, GetBoardMembersDto, RemoveBoardMemberDto, TaskBoardMemberResponseDto, TaskBoardResponseDto, UpdateTaskBoardDto } from '../dtos';
39
+ import { TaskBoardService } from '../services/task-board.service';
40
+ export class TaskBoardController extends createApiController(CreateTaskBoardDto, UpdateTaskBoardDto, TaskBoardResponseDto, {
41
+ entityName: 'task.board',
42
+ enabledEndpoints: [
43
+ 'insert',
44
+ 'insertMany',
45
+ 'getById',
46
+ 'getAll',
47
+ 'update',
48
+ 'updateMany',
49
+ 'delete'
50
+ ],
51
+ security: {
52
+ insert: {
53
+ level: 'permission',
54
+ permissions: [
55
+ TASK_BOARD_PERMISSIONS.CREATE
56
+ ]
57
+ },
58
+ insertMany: {
59
+ level: 'permission',
60
+ permissions: [
61
+ TASK_BOARD_PERMISSIONS.CREATE
62
+ ]
63
+ },
64
+ getById: {
65
+ level: 'permission',
66
+ permissions: [
67
+ TASK_BOARD_PERMISSIONS.READ
68
+ ]
69
+ },
70
+ getAll: {
71
+ level: 'permission',
72
+ permissions: [
73
+ TASK_BOARD_PERMISSIONS.READ
74
+ ]
75
+ },
76
+ update: {
77
+ level: 'permission',
78
+ permissions: [
79
+ TASK_BOARD_PERMISSIONS.UPDATE
80
+ ]
81
+ },
82
+ updateMany: {
83
+ level: 'permission',
84
+ permissions: [
85
+ TASK_BOARD_PERMISSIONS.UPDATE
86
+ ]
87
+ },
88
+ delete: {
89
+ level: 'permission',
90
+ permissions: [
91
+ TASK_BOARD_PERMISSIONS.DELETE
92
+ ]
93
+ }
94
+ }
95
+ }) {
96
+ async addMember(dto, user) {
97
+ const member = await this.boardService.addMember(dto, user);
98
+ return {
99
+ success: true,
100
+ message: 'Member added to board',
101
+ messageKey: TASK_BOARD_MESSAGES.MEMBER_ADDED,
102
+ data: plainToInstance(TaskBoardMemberResponseDto, member, {
103
+ excludeExtraneousValues: true
104
+ })
105
+ };
106
+ }
107
+ async removeMember(dto) {
108
+ await this.boardService.removeMember(dto);
109
+ return {
110
+ success: true,
111
+ message: 'Member removed',
112
+ messageKey: TASK_BOARD_MESSAGES.MEMBER_REMOVED
113
+ };
114
+ }
115
+ async getMembers(dto) {
116
+ const members = await this.boardService.getMembers(dto.boardId);
117
+ const data = plainToInstance(TaskBoardMemberResponseDto, members, {
118
+ excludeExtraneousValues: true
119
+ });
120
+ return {
121
+ success: true,
122
+ message: 'Board members retrieved',
123
+ messageKey: TASK_BOARD_MESSAGES.MEMBER_GET_ALL_SUCCESS,
124
+ data,
125
+ meta: {
126
+ total: data.length,
127
+ page: 0,
128
+ pageSize: data.length,
129
+ count: data.length
130
+ }
131
+ };
132
+ }
133
+ constructor(boardService){
134
+ super(boardService), _define_property(this, "boardService", void 0), this.boardService = boardService;
135
+ }
136
+ }
137
+ _ts_decorate([
138
+ Post('add-member'),
139
+ UseGuards(JwtAuthGuard, PermissionGuard),
140
+ ApiBearerAuth(),
141
+ HttpCode(HttpStatus.OK),
142
+ RequirePermission(TASK_BOARD_PERMISSIONS.MANAGE_MEMBERS),
143
+ ApiOperation({
144
+ summary: 'Add user to board'
145
+ }),
146
+ ApiBody({
147
+ type: AddBoardMemberDto
148
+ }),
149
+ ApiResponseDto(TaskBoardMemberResponseDto),
150
+ _ts_param(0, Body()),
151
+ _ts_param(1, CurrentUser()),
152
+ _ts_metadata("design:type", Function),
153
+ _ts_metadata("design:paramtypes", [
154
+ typeof AddBoardMemberDto === "undefined" ? Object : AddBoardMemberDto,
155
+ typeof ILoggedUserInfo === "undefined" ? Object : ILoggedUserInfo
156
+ ]),
157
+ _ts_metadata("design:returntype", Promise)
158
+ ], TaskBoardController.prototype, "addMember", null);
159
+ _ts_decorate([
160
+ Post('remove-member'),
161
+ UseGuards(JwtAuthGuard, PermissionGuard),
162
+ ApiBearerAuth(),
163
+ HttpCode(HttpStatus.OK),
164
+ RequirePermission(TASK_BOARD_PERMISSIONS.MANAGE_MEMBERS),
165
+ ApiOperation({
166
+ summary: 'Remove user from board'
167
+ }),
168
+ ApiBody({
169
+ type: RemoveBoardMemberDto
170
+ }),
171
+ ApiResponse({
172
+ status: 200,
173
+ type: MessageResponseDto
174
+ }),
175
+ _ts_param(0, Body()),
176
+ _ts_metadata("design:type", Function),
177
+ _ts_metadata("design:paramtypes", [
178
+ typeof RemoveBoardMemberDto === "undefined" ? Object : RemoveBoardMemberDto
179
+ ]),
180
+ _ts_metadata("design:returntype", Promise)
181
+ ], TaskBoardController.prototype, "removeMember", null);
182
+ _ts_decorate([
183
+ Post('get-members'),
184
+ UseGuards(JwtAuthGuard),
185
+ ApiBearerAuth(),
186
+ HttpCode(HttpStatus.OK),
187
+ ApiOperation({
188
+ summary: 'Get all board members'
189
+ }),
190
+ ApiBody({
191
+ type: GetBoardMembersDto
192
+ }),
193
+ ApiResponseDto(TaskBoardMemberResponseDto, true),
194
+ _ts_param(0, Body()),
195
+ _ts_metadata("design:type", Function),
196
+ _ts_metadata("design:paramtypes", [
197
+ typeof GetBoardMembersDto === "undefined" ? Object : GetBoardMembersDto
198
+ ]),
199
+ _ts_metadata("design:returntype", Promise)
200
+ ], TaskBoardController.prototype, "getMembers", null);
201
+ TaskBoardController = _ts_decorate([
202
+ ApiTags('Task Manager - Boards'),
203
+ Controller('task-manager/board'),
204
+ _ts_param(0, Inject(TaskBoardService)),
205
+ _ts_metadata("design:type", Function),
206
+ _ts_metadata("design:paramtypes", [
207
+ typeof TaskBoardService === "undefined" ? Object : TaskBoardService
208
+ ])
209
+ ], TaskBoardController);
@@ -0,0 +1,93 @@
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 { createApiController } from '@flusys/nestjs-shared/classes';
29
+ import { Controller, Inject } from '@nestjs/common';
30
+ import { ApiTags } from '@nestjs/swagger';
31
+ import { TASK_COMMENT_PERMISSIONS } from '@flusys/nestjs-shared';
32
+ import { CreateTaskCommentDto, TaskCommentResponseDto, UpdateTaskCommentDto } from '../dtos';
33
+ import { TaskCommentService } from '../services/task-comment.service';
34
+ export class TaskCommentController extends createApiController(CreateTaskCommentDto, UpdateTaskCommentDto, TaskCommentResponseDto, {
35
+ entityName: 'task.comment',
36
+ enabledEndpoints: [
37
+ 'insert',
38
+ 'insertMany',
39
+ 'getById',
40
+ 'getAll',
41
+ 'update',
42
+ 'updateMany',
43
+ 'delete'
44
+ ],
45
+ security: {
46
+ insert: {
47
+ level: 'permission',
48
+ permissions: [
49
+ TASK_COMMENT_PERMISSIONS.CREATE
50
+ ]
51
+ },
52
+ insertMany: {
53
+ level: 'permission',
54
+ permissions: [
55
+ TASK_COMMENT_PERMISSIONS.CREATE
56
+ ]
57
+ },
58
+ getById: {
59
+ level: 'jwt'
60
+ },
61
+ getAll: {
62
+ level: 'permission',
63
+ permissions: [
64
+ TASK_COMMENT_PERMISSIONS.READ
65
+ ]
66
+ },
67
+ update: {
68
+ level: 'jwt'
69
+ },
70
+ updateMany: {
71
+ level: 'jwt'
72
+ },
73
+ delete: {
74
+ level: 'permission',
75
+ permissions: [
76
+ TASK_COMMENT_PERMISSIONS.DELETE
77
+ ]
78
+ }
79
+ }
80
+ }) {
81
+ constructor(commentService){
82
+ super(commentService), _define_property(this, "commentService", void 0), this.commentService = commentService;
83
+ }
84
+ }
85
+ TaskCommentController = _ts_decorate([
86
+ ApiTags('Task Manager - Comments'),
87
+ Controller('task-manager/comment'),
88
+ _ts_param(0, Inject(TaskCommentService)),
89
+ _ts_metadata("design:type", Function),
90
+ _ts_metadata("design:paramtypes", [
91
+ typeof TaskCommentService === "undefined" ? Object : TaskCommentService
92
+ ])
93
+ ], TaskCommentController);
@@ -0,0 +1,102 @@
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 { createApiController } from '@flusys/nestjs-shared/classes';
29
+ import { Controller, Inject } from '@nestjs/common';
30
+ import { ApiTags } from '@nestjs/swagger';
31
+ import { TASK_LABEL_PERMISSIONS } from '@flusys/nestjs-shared';
32
+ import { CreateTaskLabelDto, TaskLabelResponseDto, UpdateTaskLabelDto } from '../dtos';
33
+ import { TaskLabelService } from '../services/task-label.service';
34
+ export class TaskLabelController extends createApiController(CreateTaskLabelDto, UpdateTaskLabelDto, TaskLabelResponseDto, {
35
+ entityName: 'task.label',
36
+ enabledEndpoints: [
37
+ 'insert',
38
+ 'insertMany',
39
+ 'getById',
40
+ 'getAll',
41
+ 'update',
42
+ 'updateMany',
43
+ 'delete'
44
+ ],
45
+ security: {
46
+ insert: {
47
+ level: 'permission',
48
+ permissions: [
49
+ TASK_LABEL_PERMISSIONS.CREATE
50
+ ]
51
+ },
52
+ insertMany: {
53
+ level: 'permission',
54
+ permissions: [
55
+ TASK_LABEL_PERMISSIONS.CREATE
56
+ ]
57
+ },
58
+ getById: {
59
+ level: 'permission',
60
+ permissions: [
61
+ TASK_LABEL_PERMISSIONS.READ
62
+ ]
63
+ },
64
+ getAll: {
65
+ level: 'permission',
66
+ permissions: [
67
+ TASK_LABEL_PERMISSIONS.READ
68
+ ]
69
+ },
70
+ update: {
71
+ level: 'permission',
72
+ permissions: [
73
+ TASK_LABEL_PERMISSIONS.UPDATE
74
+ ]
75
+ },
76
+ updateMany: {
77
+ level: 'permission',
78
+ permissions: [
79
+ TASK_LABEL_PERMISSIONS.UPDATE
80
+ ]
81
+ },
82
+ delete: {
83
+ level: 'permission',
84
+ permissions: [
85
+ TASK_LABEL_PERMISSIONS.DELETE
86
+ ]
87
+ }
88
+ }
89
+ }) {
90
+ constructor(labelService){
91
+ super(labelService), _define_property(this, "labelService", void 0), this.labelService = labelService;
92
+ }
93
+ }
94
+ TaskLabelController = _ts_decorate([
95
+ ApiTags('Task Manager - Labels'),
96
+ Controller('task-manager/label'),
97
+ _ts_param(0, Inject(TaskLabelService)),
98
+ _ts_metadata("design:type", Function),
99
+ _ts_metadata("design:paramtypes", [
100
+ typeof TaskLabelService === "undefined" ? Object : TaskLabelService
101
+ ])
102
+ ], TaskLabelController);
@@ -0,0 +1,148 @@
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 { TASK_LIST_PERMISSIONS } from '@flusys/nestjs-shared';
29
+ import { createApiController } from '@flusys/nestjs-shared/classes';
30
+ import { RequirePermission } from '@flusys/nestjs-shared/decorators';
31
+ import { MessageResponseDto } from '@flusys/nestjs-shared/dtos';
32
+ import { JwtAuthGuard, PermissionGuard } from '@flusys/nestjs-shared/guards';
33
+ import { Body, Controller, HttpCode, HttpStatus, Inject, Optional, Post, UseGuards } from '@nestjs/common';
34
+ import { ApiBearerAuth, ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
35
+ import { TASK_LIST_MESSAGES } from '../config';
36
+ import { CreateTaskListDto, ReorderTaskListsDto, TaskListResponseDto, UpdateTaskListDto } from '../dtos';
37
+ import { TaskBoardGateway } from '../gateways/task-board.gateway';
38
+ import { TaskListService } from '../services/task-list.service';
39
+ export class TaskListController extends createApiController(CreateTaskListDto, UpdateTaskListDto, TaskListResponseDto, {
40
+ entityName: 'task.list',
41
+ enabledEndpoints: [
42
+ 'insert',
43
+ 'insertMany',
44
+ 'getById',
45
+ 'getAll',
46
+ 'update',
47
+ 'updateMany',
48
+ 'delete'
49
+ ],
50
+ security: {
51
+ insert: {
52
+ level: 'permission',
53
+ permissions: [
54
+ TASK_LIST_PERMISSIONS.CREATE
55
+ ]
56
+ },
57
+ insertMany: {
58
+ level: 'permission',
59
+ permissions: [
60
+ TASK_LIST_PERMISSIONS.CREATE
61
+ ]
62
+ },
63
+ getById: {
64
+ level: 'permission',
65
+ permissions: [
66
+ TASK_LIST_PERMISSIONS.READ
67
+ ]
68
+ },
69
+ getAll: {
70
+ level: 'permission',
71
+ permissions: [
72
+ TASK_LIST_PERMISSIONS.READ
73
+ ]
74
+ },
75
+ update: {
76
+ level: 'permission',
77
+ permissions: [
78
+ TASK_LIST_PERMISSIONS.UPDATE
79
+ ]
80
+ },
81
+ updateMany: {
82
+ level: 'permission',
83
+ permissions: [
84
+ TASK_LIST_PERMISSIONS.UPDATE
85
+ ]
86
+ },
87
+ delete: {
88
+ level: 'permission',
89
+ permissions: [
90
+ TASK_LIST_PERMISSIONS.DELETE
91
+ ]
92
+ }
93
+ }
94
+ }) {
95
+ async reorder(dto) {
96
+ await this.listService.reorderLists(dto);
97
+ this.gateway?.emitToBoardRoom(dto.boardId, {
98
+ type: 'list:reordered',
99
+ boardId: dto.boardId,
100
+ payload: {
101
+ orderedIds: dto.orderedIds
102
+ }
103
+ });
104
+ return {
105
+ success: true,
106
+ message: 'Lists reordered',
107
+ messageKey: TASK_LIST_MESSAGES.REORDER_SUCCESS
108
+ };
109
+ }
110
+ constructor(listService, gateway){
111
+ super(listService), _define_property(this, "listService", void 0), _define_property(this, "gateway", void 0), this.listService = listService, this.gateway = gateway;
112
+ }
113
+ }
114
+ _ts_decorate([
115
+ Post('reorder'),
116
+ UseGuards(JwtAuthGuard, PermissionGuard),
117
+ ApiBearerAuth(),
118
+ HttpCode(HttpStatus.OK),
119
+ RequirePermission(TASK_LIST_PERMISSIONS.UPDATE),
120
+ ApiOperation({
121
+ summary: 'Reorder lists within a board'
122
+ }),
123
+ ApiBody({
124
+ type: ReorderTaskListsDto
125
+ }),
126
+ ApiResponse({
127
+ status: 200,
128
+ type: MessageResponseDto
129
+ }),
130
+ _ts_param(0, Body()),
131
+ _ts_metadata("design:type", Function),
132
+ _ts_metadata("design:paramtypes", [
133
+ typeof ReorderTaskListsDto === "undefined" ? Object : ReorderTaskListsDto
134
+ ]),
135
+ _ts_metadata("design:returntype", Promise)
136
+ ], TaskListController.prototype, "reorder", null);
137
+ TaskListController = _ts_decorate([
138
+ ApiTags('Task Manager - Lists'),
139
+ Controller('task-manager/list'),
140
+ _ts_param(0, Inject(TaskListService)),
141
+ _ts_param(1, Optional()),
142
+ _ts_param(1, Inject(TaskBoardGateway)),
143
+ _ts_metadata("design:type", Function),
144
+ _ts_metadata("design:paramtypes", [
145
+ typeof TaskListService === "undefined" ? Object : TaskListService,
146
+ typeof TaskBoardGateway === "undefined" ? Object : TaskBoardGateway
147
+ ])
148
+ ], TaskListController);