@hed-hog/operations 0.0.303 → 0.0.305

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 (178) hide show
  1. package/README.md +200 -43
  2. package/dist/controllers/operations-approvals.controller.d.ts +9 -0
  3. package/dist/controllers/operations-approvals.controller.d.ts.map +1 -0
  4. package/dist/controllers/operations-approvals.controller.js +64 -0
  5. package/dist/controllers/operations-approvals.controller.js.map +1 -0
  6. package/dist/controllers/operations-collaborators.controller.d.ts +223 -0
  7. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -0
  8. package/dist/controllers/operations-collaborators.controller.js +96 -0
  9. package/dist/controllers/operations-collaborators.controller.js.map +1 -0
  10. package/dist/controllers/operations-contracts.controller.d.ts +683 -0
  11. package/dist/controllers/operations-contracts.controller.d.ts.map +1 -0
  12. package/dist/controllers/operations-contracts.controller.js +198 -0
  13. package/dist/controllers/operations-contracts.controller.js.map +1 -0
  14. package/dist/controllers/operations-org-structure.controller.d.ts +108 -0
  15. package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -0
  16. package/dist/controllers/operations-org-structure.controller.js +143 -0
  17. package/dist/controllers/operations-org-structure.controller.js.map +1 -0
  18. package/dist/controllers/operations-projects.controller.d.ts +184 -0
  19. package/dist/controllers/operations-projects.controller.d.ts.map +1 -0
  20. package/dist/controllers/operations-projects.controller.js +87 -0
  21. package/dist/controllers/operations-projects.controller.js.map +1 -0
  22. package/dist/controllers/operations-tasks.controller.d.ts +85 -0
  23. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -0
  24. package/dist/controllers/operations-tasks.controller.js +90 -0
  25. package/dist/controllers/operations-tasks.controller.js.map +1 -0
  26. package/dist/controllers/operations-timesheets.controller.d.ts +99 -0
  27. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -0
  28. package/dist/controllers/operations-timesheets.controller.js +154 -0
  29. package/dist/controllers/operations-timesheets.controller.js.map +1 -0
  30. package/dist/dto/create-collaborator-type.dto.d.ts +10 -0
  31. package/dist/dto/create-collaborator-type.dto.d.ts.map +1 -0
  32. package/dist/dto/create-collaborator-type.dto.js +56 -0
  33. package/dist/dto/create-collaborator-type.dto.js.map +1 -0
  34. package/dist/dto/create-collaborator.dto.d.ts +42 -0
  35. package/dist/dto/create-collaborator.dto.d.ts.map +1 -0
  36. package/dist/dto/create-collaborator.dto.js +228 -0
  37. package/dist/dto/create-collaborator.dto.js.map +1 -0
  38. package/dist/dto/create-schedule-adjustment-request.dto.d.ts +17 -0
  39. package/dist/dto/create-schedule-adjustment-request.dto.d.ts.map +1 -0
  40. package/dist/dto/create-schedule-adjustment-request.dto.js +89 -0
  41. package/dist/dto/create-schedule-adjustment-request.dto.js.map +1 -0
  42. package/dist/dto/create-task.dto.d.ts +14 -0
  43. package/dist/dto/create-task.dto.d.ts.map +1 -0
  44. package/dist/dto/create-task.dto.js +83 -0
  45. package/dist/dto/create-task.dto.js.map +1 -0
  46. package/dist/dto/create-time-off-request.dto.d.ts +9 -0
  47. package/dist/dto/create-time-off-request.dto.d.ts.map +1 -0
  48. package/dist/dto/create-time-off-request.dto.js +54 -0
  49. package/dist/dto/create-time-off-request.dto.js.map +1 -0
  50. package/dist/dto/create-timesheet-entry.dto.d.ts +12 -0
  51. package/dist/dto/create-timesheet-entry.dto.d.ts.map +1 -0
  52. package/dist/dto/create-timesheet-entry.dto.js +75 -0
  53. package/dist/dto/create-timesheet-entry.dto.js.map +1 -0
  54. package/dist/dto/list-collaborator-types.dto.d.ts +4 -0
  55. package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -0
  56. package/dist/dto/list-collaborator-types.dto.js +29 -0
  57. package/dist/dto/list-collaborator-types.dto.js.map +1 -0
  58. package/dist/dto/list-collaborators.dto.d.ts +8 -0
  59. package/dist/dto/list-collaborators.dto.d.ts.map +1 -0
  60. package/dist/dto/list-collaborators.dto.js +42 -0
  61. package/dist/dto/list-collaborators.dto.js.map +1 -0
  62. package/dist/dto/list-project-options.dto.d.ts +4 -0
  63. package/dist/dto/list-project-options.dto.d.ts.map +1 -0
  64. package/dist/dto/list-project-options.dto.js +8 -0
  65. package/dist/dto/list-project-options.dto.js.map +1 -0
  66. package/dist/dto/list-tasks.dto.d.ts +7 -0
  67. package/dist/dto/list-tasks.dto.d.ts.map +1 -0
  68. package/dist/dto/list-tasks.dto.js +38 -0
  69. package/dist/dto/list-tasks.dto.js.map +1 -0
  70. package/dist/dto/list-timesheet-entries.dto.d.ts +10 -0
  71. package/dist/dto/list-timesheet-entries.dto.d.ts.map +1 -0
  72. package/dist/dto/list-timesheet-entries.dto.js +54 -0
  73. package/dist/dto/list-timesheet-entries.dto.js.map +1 -0
  74. package/dist/dto/update-collaborator-type.dto.d.ts +4 -0
  75. package/dist/dto/update-collaborator-type.dto.d.ts.map +1 -0
  76. package/dist/dto/update-collaborator-type.dto.js +8 -0
  77. package/dist/dto/update-collaborator-type.dto.js.map +1 -0
  78. package/dist/dto/update-collaborator.dto.d.ts +4 -0
  79. package/dist/dto/update-collaborator.dto.d.ts.map +1 -0
  80. package/dist/dto/update-collaborator.dto.js +8 -0
  81. package/dist/dto/update-collaborator.dto.js.map +1 -0
  82. package/dist/dto/update-task.dto.d.ts +14 -0
  83. package/dist/dto/update-task.dto.d.ts.map +1 -0
  84. package/dist/dto/update-task.dto.js +84 -0
  85. package/dist/dto/update-task.dto.js.map +1 -0
  86. package/dist/operations.controller.d.ts +0 -1045
  87. package/dist/operations.controller.d.ts.map +1 -1
  88. package/dist/operations.controller.js +0 -429
  89. package/dist/operations.controller.js.map +1 -1
  90. package/dist/operations.module.d.ts.map +1 -1
  91. package/dist/operations.module.js +23 -2
  92. package/dist/operations.module.js.map +1 -1
  93. package/dist/operations.service.d.ts +429 -8
  94. package/dist/operations.service.d.ts.map +1 -1
  95. package/dist/operations.service.js +1931 -165
  96. package/dist/operations.service.js.map +1 -1
  97. package/dist/operations.service.spec.js +315 -1
  98. package/dist/operations.service.spec.js.map +1 -1
  99. package/dist/services/shared/operations-access.service.d.ts +16 -0
  100. package/dist/services/shared/operations-access.service.d.ts.map +1 -0
  101. package/dist/services/shared/operations-access.service.js +48 -0
  102. package/dist/services/shared/operations-access.service.js.map +1 -0
  103. package/hedhog/data/dashboard.yaml +20 -0
  104. package/hedhog/data/dashboard_component.yaml +274 -0
  105. package/hedhog/data/dashboard_component_role.yaml +174 -0
  106. package/hedhog/data/dashboard_item.yaml +299 -0
  107. package/hedhog/data/dashboard_role.yaml +20 -0
  108. package/hedhog/data/menu.yaml +30 -13
  109. package/hedhog/data/operations_collaborator_type.yaml +76 -0
  110. package/hedhog/data/route.yaml +196 -0
  111. package/hedhog/frontend/app/_components/async-options-combobox.tsx.ejs +231 -0
  112. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +125 -40
  113. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +740 -106
  114. package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +256 -256
  115. package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +7 -7
  116. package/hedhog/frontend/app/_components/contract-template-form-screen.tsx.ejs +306 -306
  117. package/hedhog/frontend/app/_components/contract-template-select-with-create.tsx.ejs +247 -247
  118. package/hedhog/frontend/app/_components/contract-wizard-sheet.tsx.ejs +3520 -3520
  119. package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +38 -16
  120. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +1504 -52
  121. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +1017 -649
  122. package/hedhog/frontend/app/_components/section-card.tsx.ejs +25 -18
  123. package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +609 -0
  124. package/hedhog/frontend/app/_components/timesheet-task-create-sheet.tsx.ejs +213 -0
  125. package/hedhog/frontend/app/_lib/api.ts.ejs +30 -1
  126. package/hedhog/frontend/app/_lib/types.ts.ejs +147 -39
  127. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +40 -9
  128. package/hedhog/frontend/app/_lib/utils/forms.ts.ejs +48 -1
  129. package/hedhog/frontend/app/approvals/page.tsx.ejs +116 -98
  130. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +502 -0
  131. package/hedhog/frontend/app/collaborators/page.tsx.ejs +116 -72
  132. package/hedhog/frontend/app/contracts/page.tsx.ejs +938 -938
  133. package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +11 -9
  134. package/hedhog/frontend/app/departments/page.tsx.ejs +1 -1
  135. package/hedhog/frontend/app/projects/[id]/edit/page.tsx.ejs +1 -1
  136. package/hedhog/frontend/app/projects/page.tsx.ejs +364 -133
  137. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +244 -120
  138. package/hedhog/frontend/app/team/page.tsx.ejs +15 -2
  139. package/hedhog/frontend/app/time-off/page.tsx.ejs +158 -82
  140. package/hedhog/frontend/app/timesheets/page.tsx.ejs +814 -357
  141. package/hedhog/frontend/messages/en.json +268 -53
  142. package/hedhog/frontend/messages/pt.json +484 -271
  143. package/hedhog/table/operations_collaborator.yaml +26 -13
  144. package/hedhog/table/operations_collaborator_equity_participation.yaml +43 -0
  145. package/hedhog/table/operations_collaborator_type.yaml +33 -0
  146. package/hedhog/table/operations_job_title.yaml +24 -0
  147. package/hedhog/table/operations_project.yaml +9 -0
  148. package/hedhog/table/operations_project_assignment.yaml +9 -0
  149. package/hedhog/table/operations_project_role.yaml +39 -0
  150. package/hedhog/table/operations_task.yaml +69 -0
  151. package/hedhog/table/operations_timesheet_entry.yaml +12 -0
  152. package/package.json +6 -6
  153. package/src/controllers/operations-approvals.controller.ts +24 -0
  154. package/src/controllers/operations-collaborators.controller.ts +60 -0
  155. package/src/controllers/operations-contracts.controller.ts +138 -0
  156. package/src/controllers/operations-org-structure.controller.ts +92 -0
  157. package/src/controllers/operations-projects.controller.ts +50 -0
  158. package/src/controllers/operations-tasks.controller.ts +63 -0
  159. package/src/controllers/operations-timesheets.controller.ts +100 -0
  160. package/src/dto/create-collaborator-type.dto.ts +43 -0
  161. package/src/dto/create-collaborator.dto.ts +223 -0
  162. package/src/dto/create-schedule-adjustment-request.dto.ts +91 -0
  163. package/src/dto/create-task.dto.ts +75 -0
  164. package/src/dto/create-time-off-request.dto.ts +53 -0
  165. package/src/dto/create-timesheet-entry.dto.ts +67 -0
  166. package/src/dto/list-collaborator-types.dto.ts +15 -0
  167. package/src/dto/list-collaborators.dto.ts +30 -0
  168. package/src/dto/list-project-options.dto.ts +3 -0
  169. package/src/dto/list-tasks.dto.ts +25 -0
  170. package/src/dto/list-timesheet-entries.dto.ts +40 -0
  171. package/src/dto/update-collaborator-type.dto.ts +3 -0
  172. package/src/dto/update-collaborator.dto.ts +3 -0
  173. package/src/dto/update-task.dto.ts +76 -0
  174. package/src/operations.controller.ts +1 -278
  175. package/src/operations.module.ts +23 -2
  176. package/src/operations.service.spec.ts +450 -0
  177. package/src/operations.service.ts +4507 -1561
  178. package/src/services/shared/operations-access.service.ts +52 -0
@@ -0,0 +1,67 @@
1
+ import { Transform } from 'class-transformer';
2
+ import {
3
+ IsDateString,
4
+ IsIn,
5
+ IsInt,
6
+ IsNumber,
7
+ IsOptional,
8
+ IsString,
9
+ MaxLength,
10
+ Min,
11
+ } from 'class-validator';
12
+
13
+ export class CreateTimesheetEntryDto {
14
+ @IsOptional()
15
+ @Transform(({ value }) =>
16
+ value === '' || value === undefined || value === null ? undefined : Number(value)
17
+ )
18
+ @IsInt({ message: 'projectId must be an integer' })
19
+ projectId?: number;
20
+
21
+ @IsOptional()
22
+ @Transform(({ value }) =>
23
+ value === '' || value === undefined || value === null ? undefined : Number(value)
24
+ )
25
+ @IsInt({ message: 'projectAssignmentId must be an integer' })
26
+ projectAssignmentId?: number;
27
+
28
+ @IsOptional()
29
+ @Transform(({ value }) =>
30
+ value === '' || value === undefined || value === null ? undefined : Number(value)
31
+ )
32
+ @IsInt({ message: 'taskId must be an integer' })
33
+ taskId?: number;
34
+
35
+ @IsOptional()
36
+ @IsString({ message: 'taskName must be a string' })
37
+ @MaxLength(180, { message: 'taskName must have at most 180 characters' })
38
+ taskName?: string;
39
+
40
+ @IsOptional()
41
+ @IsString({ message: 'activityLabel must be a string' })
42
+ @MaxLength(180, {
43
+ message: 'activityLabel must have at most 180 characters',
44
+ })
45
+ activityLabel?: string;
46
+
47
+ @IsDateString({}, { message: 'workDate must be a valid ISO date string' })
48
+ workDate!: string;
49
+
50
+ @Transform(({ value }) => Number(value))
51
+ @IsNumber({}, { message: 'duration must be a number' })
52
+ @Min(0.01, { message: 'duration must be greater than 0' })
53
+ duration!: number;
54
+
55
+ @IsOptional()
56
+ @IsIn(['hours', 'minutes'], {
57
+ message: 'unit must be either hours or minutes',
58
+ })
59
+ unit?: 'hours' | 'minutes';
60
+
61
+ @IsOptional()
62
+ @IsString({ message: 'description must be a string' })
63
+ @MaxLength(500, {
64
+ message: 'description must have at most 500 characters',
65
+ })
66
+ description?: string;
67
+ }
@@ -0,0 +1,15 @@
1
+ import { Transform } from 'class-transformer';
2
+ import { IsBoolean, IsOptional } from 'class-validator';
3
+
4
+ export class ListCollaboratorTypesDto {
5
+ @IsOptional()
6
+ @Transform(({ value }) => {
7
+ if (value === '' || value === undefined || value === null) {
8
+ return undefined;
9
+ }
10
+
11
+ return value === true || value === 'true' || value === '1';
12
+ })
13
+ @IsBoolean()
14
+ active?: boolean;
15
+ }
@@ -0,0 +1,30 @@
1
+ import { PaginationDTO } from '@hed-hog/api-pagination';
2
+ import { Transform } from 'class-transformer';
3
+ import { IsInt, IsOptional, IsString } from 'class-validator';
4
+
5
+ export class ListCollaboratorsDto extends PaginationDTO {
6
+ @IsOptional()
7
+ @IsString()
8
+ status?: string;
9
+
10
+ @IsOptional()
11
+ @Transform(({ value }) =>
12
+ value === '' || value === undefined || value === null ? undefined : Number(value)
13
+ )
14
+ @IsInt()
15
+ collaboratorTypeId?: number;
16
+
17
+ @IsOptional()
18
+ @Transform(({ value }) =>
19
+ value === '' || value === undefined || value === null ? undefined : Number(value)
20
+ )
21
+ @IsInt()
22
+ departmentId?: number;
23
+
24
+ @IsOptional()
25
+ @Transform(({ value }) =>
26
+ value === '' || value === undefined || value === null ? undefined : Number(value)
27
+ )
28
+ @IsInt()
29
+ jobTitleId?: number;
30
+ }
@@ -0,0 +1,3 @@
1
+ import { PaginationDTO } from '@hed-hog/api-pagination';
2
+
3
+ export class ListOperationsProjectOptionsDto extends PaginationDTO {}
@@ -0,0 +1,25 @@
1
+ import { PaginationDTO } from '@hed-hog/api-pagination';
2
+ import { Transform } from 'class-transformer';
3
+ import { IsIn, IsInt, IsOptional } from 'class-validator';
4
+
5
+ export class ListOperationsTasksDto extends PaginationDTO {
6
+ @IsOptional()
7
+ @Transform(({ value }) =>
8
+ value === '' || value === undefined || value === null ? undefined : Number(value)
9
+ )
10
+ @IsInt({ message: 'projectId must be an integer' })
11
+ projectId?: number;
12
+
13
+ @IsOptional()
14
+ @Transform(({ value }) =>
15
+ value === '' || value === undefined || value === null ? undefined : Number(value)
16
+ )
17
+ @IsInt({ message: 'projectAssignmentId must be an integer' })
18
+ projectAssignmentId?: number;
19
+
20
+ @IsOptional()
21
+ @IsIn(['todo', 'doing', 'review', 'done'], {
22
+ message: 'status must be todo, doing, review, or done',
23
+ })
24
+ status?: 'todo' | 'doing' | 'review' | 'done';
25
+ }
@@ -0,0 +1,40 @@
1
+ import { PaginationDTO } from '@hed-hog/api-pagination';
2
+ import { Transform } from 'class-transformer';
3
+ import { IsDateString, IsIn, IsInt, IsOptional } from 'class-validator';
4
+
5
+ export class ListTimesheetEntriesDto extends PaginationDTO {
6
+ @IsOptional()
7
+ @Transform(({ value }) =>
8
+ value === '' || value === undefined || value === null ? undefined : Number(value)
9
+ )
10
+ @IsInt({ message: 'projectId must be an integer' })
11
+ projectId?: number;
12
+
13
+ @IsOptional()
14
+ @Transform(({ value }) =>
15
+ value === '' || value === undefined || value === null ? undefined : Number(value)
16
+ )
17
+ @IsInt({ message: 'projectAssignmentId must be an integer' })
18
+ projectAssignmentId?: number;
19
+
20
+ @IsOptional()
21
+ @Transform(({ value }) =>
22
+ value === '' || value === undefined || value === null ? undefined : Number(value)
23
+ )
24
+ @IsInt({ message: 'taskId must be an integer' })
25
+ taskId?: number;
26
+
27
+ @IsOptional()
28
+ @IsIn(['draft', 'submitted', 'approved', 'rejected'], {
29
+ message: 'status must be draft, submitted, approved, or rejected',
30
+ })
31
+ status?: 'draft' | 'submitted' | 'approved' | 'rejected';
32
+
33
+ @IsOptional()
34
+ @IsDateString({}, { message: 'fromDate must be a valid ISO date string' })
35
+ fromDate?: string;
36
+
37
+ @IsOptional()
38
+ @IsDateString({}, { message: 'toDate must be a valid ISO date string' })
39
+ toDate?: string;
40
+ }
@@ -0,0 +1,3 @@
1
+ import { CreateCollaboratorTypeDto } from './create-collaborator-type.dto';
2
+
3
+ export class UpdateCollaboratorTypeDto extends CreateCollaboratorTypeDto {}
@@ -0,0 +1,3 @@
1
+ import { CreateCollaboratorDto } from './create-collaborator.dto';
2
+
3
+ export class UpdateCollaboratorDto extends CreateCollaboratorDto {}
@@ -0,0 +1,76 @@
1
+ import { Transform } from 'class-transformer';
2
+ import {
3
+ IsIn,
4
+ IsInt,
5
+ IsNumber,
6
+ IsOptional,
7
+ IsString,
8
+ MaxLength,
9
+ } from 'class-validator';
10
+
11
+ export class UpdateOperationsTaskDto {
12
+ @IsOptional()
13
+ @Transform(({ value }) =>
14
+ value === '' || value === undefined || value === null ? undefined : Number(value)
15
+ )
16
+ @IsInt({ message: 'projectId must be an integer' })
17
+ projectId?: number;
18
+
19
+ @IsOptional()
20
+ @Transform(({ value }) =>
21
+ value === '' || value === undefined || value === null ? undefined : Number(value)
22
+ )
23
+ @IsInt({ message: 'projectAssignmentId must be an integer' })
24
+ projectAssignmentId?: number;
25
+
26
+ @IsOptional()
27
+ @Transform(({ value }) =>
28
+ value === '' || value === undefined || value === null ? undefined : Number(value)
29
+ )
30
+ @IsInt({ message: 'assigneeCollaboratorId must be an integer' })
31
+ assigneeCollaboratorId?: number;
32
+
33
+ @IsOptional()
34
+ @IsString({ message: 'name must be a string' })
35
+ @MaxLength(180, { message: 'name must have at most 180 characters' })
36
+ name?: string;
37
+
38
+ @IsOptional()
39
+ @IsString({ message: 'description must be a string' })
40
+ @MaxLength(2000, { message: 'description must have at most 2000 characters' })
41
+ description?: string;
42
+
43
+ @IsOptional()
44
+ @IsIn(['low', 'medium', 'high'], {
45
+ message: 'priority must be low, medium, or high',
46
+ })
47
+ priority?: 'low' | 'medium' | 'high';
48
+
49
+ @IsOptional()
50
+ @IsIn(['todo', 'doing', 'review', 'done'], {
51
+ message: 'status must be todo, doing, review, or done',
52
+ })
53
+ status?: 'todo' | 'doing' | 'review' | 'done';
54
+
55
+ @IsOptional()
56
+ @IsString({ message: 'dueDate must be a string' })
57
+ dueDate?: string;
58
+
59
+ @IsOptional()
60
+ @Transform(({ value }) =>
61
+ value === '' || value === undefined || value === null ? undefined : Number(value)
62
+ )
63
+ @IsNumber({}, { message: 'estimateHours must be a number' })
64
+ estimateHours?: number;
65
+
66
+ @IsOptional()
67
+ @Transform(({ value }) =>
68
+ value === '' || value === undefined || value === null ? undefined : Number(value)
69
+ )
70
+ @IsInt({ message: 'position must be an integer' })
71
+ position?: number;
72
+
73
+ @IsOptional()
74
+ @IsString({ message: 'tags must be a string' })
75
+ tags?: string;
76
+ }
@@ -1,14 +1,5 @@
1
1
  import { Role, User } from '@hed-hog/api';
2
- import {
3
- Body,
4
- Controller,
5
- Delete,
6
- Get,
7
- Param,
8
- ParseIntPipe,
9
- Patch,
10
- Post,
11
- } from '@nestjs/common';
2
+ import { Body, Controller, Get, Post } from '@nestjs/common';
12
3
  import { OperationsService } from './operations.service';
13
4
 
14
5
  @Role()
@@ -21,274 +12,6 @@ export class OperationsController {
21
12
  return this.operationsService.getDashboard(Number(user?.id || 0));
22
13
  }
23
14
 
24
- @Get('collaborators')
25
- listCollaborators(@User() user) {
26
- return this.operationsService.listCollaborators(Number(user?.id || 0));
27
- }
28
-
29
- @Get('collaborators/me')
30
- getMyCollaborator(@User() user) {
31
- return this.operationsService.getMyCollaborator(Number(user?.id || 0));
32
- }
33
-
34
- @Get('collaborators/:id')
35
- getCollaborator(@User() user, @Param('id', ParseIntPipe) id: number) {
36
- return this.operationsService.getCollaboratorByIdForUser(
37
- Number(user?.id || 0),
38
- id
39
- );
40
- }
41
-
42
- @Get('collaborators/team')
43
- getTeam(@User() user) {
44
- return this.operationsService.getTeam(Number(user?.id || 0));
45
- }
46
-
47
- @Post('collaborators')
48
- createCollaborator(@User() user, @Body() data) {
49
- return this.operationsService.createCollaborator(Number(user?.id || 0), data);
50
- }
51
-
52
- @Patch('collaborators/:id')
53
- updateCollaborator(
54
- @User() user,
55
- @Param('id', ParseIntPipe) id: number,
56
- @Body() data
57
- ) {
58
- return this.operationsService.updateCollaborator(
59
- Number(user?.id || 0),
60
- id,
61
- data
62
- );
63
- }
64
-
65
- @Get('departments')
66
- listDepartments(@User() user) {
67
- return this.operationsService.listDepartments(Number(user?.id || 0));
68
- }
69
-
70
- @Post('departments')
71
- createDepartment(@User() user, @Body() data) {
72
- return this.operationsService.createDepartment(Number(user?.id || 0), data);
73
- }
74
-
75
- @Patch('departments/:id')
76
- updateDepartment(
77
- @User() user,
78
- @Param('id', ParseIntPipe) id: number,
79
- @Body() data
80
- ) {
81
- return this.operationsService.updateDepartment(Number(user?.id || 0), id, data);
82
- }
83
-
84
- @Get('projects')
85
- listProjects(@User() user) {
86
- return this.operationsService.listProjects(Number(user?.id || 0));
87
- }
88
-
89
- @Get('projects/:id')
90
- getProject(@User() user, @Param('id', ParseIntPipe) id: number) {
91
- return this.operationsService.getProjectById(Number(user?.id || 0), id);
92
- }
93
-
94
- @Post('projects')
95
- createProject(@User() user, @Body() data) {
96
- return this.operationsService.createProject(Number(user?.id || 0), data);
97
- }
98
-
99
- @Patch('projects/:id')
100
- updateProject(@User() user, @Param('id', ParseIntPipe) id: number, @Body() data) {
101
- return this.operationsService.updateProject(Number(user?.id || 0), id, data);
102
- }
103
-
104
- @Get('contract-templates')
105
- listContractTemplates(@User() user) {
106
- return this.operationsService.listContractTemplates(Number(user?.id || 0));
107
- }
108
-
109
- @Get('contract-templates/:id')
110
- getContractTemplate(@User() user, @Param('id', ParseIntPipe) id: number) {
111
- return this.operationsService.getContractTemplateById(
112
- Number(user?.id || 0),
113
- id
114
- );
115
- }
116
-
117
- @Post('contract-templates')
118
- createContractTemplate(@User() user, @Body() data) {
119
- return this.operationsService.createContractTemplate(
120
- Number(user?.id || 0),
121
- data
122
- );
123
- }
124
-
125
- @Patch('contract-templates/:id')
126
- updateContractTemplate(
127
- @User() user,
128
- @Param('id', ParseIntPipe) id: number,
129
- @Body() data
130
- ) {
131
- return this.operationsService.updateContractTemplate(
132
- Number(user?.id || 0),
133
- id,
134
- data
135
- );
136
- }
137
-
138
- @Get('contracts')
139
- listContracts(@User() user) {
140
- return this.operationsService.listContracts(Number(user?.id || 0));
141
- }
142
-
143
- @Get('contracts/:id')
144
- getContract(@User() user, @Param('id', ParseIntPipe) id: number) {
145
- return this.operationsService.getContractById(Number(user?.id || 0), id);
146
- }
147
-
148
- @Post('contracts/drafts')
149
- createContractDraft(@User() user, @Body() data) {
150
- return this.operationsService.createContractDraft(Number(user?.id || 0), data);
151
- }
152
-
153
- @Post('contracts')
154
- createContract(@User() user, @Body() data) {
155
- return this.operationsService.createContract(Number(user?.id || 0), data);
156
- }
157
-
158
- @Post('contracts/extract-draft')
159
- extractContractDraft(@User() user, @Body() data) {
160
- return this.operationsService.extractContractDraft(
161
- Number(user?.id || 0),
162
- data
163
- );
164
- }
165
-
166
- @Post('contracts/:id/extract-source')
167
- extractContractSource(
168
- @User() user,
169
- @Param('id', ParseIntPipe) id: number,
170
- @Body() data
171
- ) {
172
- return this.operationsService.extractContractSource(
173
- Number(user?.id || 0),
174
- id,
175
- data
176
- );
177
- }
178
-
179
- @Post('contracts/:id/generate-content')
180
- generateContractContent(
181
- @User() user,
182
- @Param('id', ParseIntPipe) id: number,
183
- @Body() data
184
- ) {
185
- return this.operationsService.generateContractContent(
186
- Number(user?.id || 0),
187
- id,
188
- data
189
- );
190
- }
191
-
192
- @Post('contracts/:id/legal-review')
193
- reviewContractLegally(
194
- @User() user,
195
- @Param('id', ParseIntPipe) id: number,
196
- @Body() data
197
- ) {
198
- return this.operationsService.reviewContractLegally(
199
- Number(user?.id || 0),
200
- id,
201
- data
202
- );
203
- }
204
-
205
- @Patch('contracts/:id')
206
- updateContract(
207
- @User() user,
208
- @Param('id', ParseIntPipe) id: number,
209
- @Body() data
210
- ) {
211
- return this.operationsService.updateContract(Number(user?.id || 0), id, data);
212
- }
213
-
214
- @Delete('contracts/:id')
215
- removeContract(@User() user, @Param('id', ParseIntPipe) id: number) {
216
- return this.operationsService.removeContract(Number(user?.id || 0), id);
217
- }
218
-
219
- @Post('contracts/:id/generate-pdf')
220
- generateContractPdf(
221
- @User() user,
222
- @Param('id', ParseIntPipe) id: number
223
- ) {
224
- return this.operationsService.generateContractPdf(
225
- Number(user?.id || 0),
226
- id
227
- );
228
- }
229
-
230
- @Get('timesheets')
231
- listTimesheets(@User() user) {
232
- return this.operationsService.listTimesheets(Number(user?.id || 0));
233
- }
234
-
235
- @Post('timesheets')
236
- createTimesheet(@User() user, @Body() data) {
237
- return this.operationsService.createTimesheet(Number(user?.id || 0), data);
238
- }
239
-
240
- @Patch('timesheets/:id')
241
- updateTimesheet(
242
- @User() user,
243
- @Param('id', ParseIntPipe) id: number,
244
- @Body() data
245
- ) {
246
- return this.operationsService.updateTimesheet(Number(user?.id || 0), id, data);
247
- }
248
-
249
- @Post('timesheets/:id/submit')
250
- submitTimesheet(@User() user, @Param('id', ParseIntPipe) id: number) {
251
- return this.operationsService.submitTimesheet(Number(user?.id || 0), id);
252
- }
253
-
254
- @Get('time-off')
255
- listTimeOffRequests(@User() user) {
256
- return this.operationsService.listTimeOffRequests(Number(user?.id || 0));
257
- }
258
-
259
- @Post('time-off')
260
- createTimeOffRequest(@User() user, @Body() data) {
261
- return this.operationsService.createTimeOffRequest(Number(user?.id || 0), data);
262
- }
263
-
264
- @Get('schedule-adjustments')
265
- listScheduleAdjustments(@User() user) {
266
- return this.operationsService.listScheduleAdjustments(Number(user?.id || 0));
267
- }
268
-
269
- @Post('schedule-adjustments')
270
- createScheduleAdjustmentRequest(@User() user, @Body() data) {
271
- return this.operationsService.createScheduleAdjustmentRequest(
272
- Number(user?.id || 0),
273
- data
274
- );
275
- }
276
-
277
- @Get('approvals')
278
- listApprovals(@User() user) {
279
- return this.operationsService.listApprovals(Number(user?.id || 0));
280
- }
281
-
282
- @Post('approvals/:id/approve')
283
- approve(@User() user, @Param('id', ParseIntPipe) id: number, @Body() data) {
284
- return this.operationsService.approve(Number(user?.id || 0), id, data);
285
- }
286
-
287
- @Post('approvals/:id/reject')
288
- reject(@User() user, @Param('id', ParseIntPipe) id: number, @Body() data) {
289
- return this.operationsService.reject(Number(user?.id || 0), id, data);
290
- }
291
-
292
15
  @Post('integration/examples/accounts-payable')
293
16
  publishAccountsPayableReference(@User() user, @Body() data) {
294
17
  return this.operationsService.publishAccountsPayableReference(
@@ -4,9 +4,17 @@ import { PrismaModule } from '@hed-hog/api-prisma';
4
4
  import { AiModule, FileModule, IntegrationModule, SettingModule } from '@hed-hog/core';
5
5
  import { forwardRef, Module } from '@nestjs/common';
6
6
  import { ConfigModule } from '@nestjs/config';
7
+ import { OperationsApprovalsController } from './controllers/operations-approvals.controller';
8
+ import { OperationsCollaboratorsController } from './controllers/operations-collaborators.controller';
9
+ import { OperationsContractsController } from './controllers/operations-contracts.controller';
10
+ import { OperationsOrgStructureController } from './controllers/operations-org-structure.controller';
11
+ import { OperationsProjectsController } from './controllers/operations-projects.controller';
12
+ import { OperationsTasksController } from './controllers/operations-tasks.controller';
13
+ import { OperationsTimesheetsController } from './controllers/operations-timesheets.controller';
7
14
  import { OperationsController } from './operations.controller';
8
15
  import { OperationsProposalSubscriber } from './operations.proposal.subscriber';
9
16
  import { OperationsService } from './operations.service';
17
+ import { OperationsAccessService } from './services/shared/operations-access.service';
10
18
 
11
19
  @Module({
12
20
  imports: [
@@ -19,8 +27,21 @@ import { OperationsService } from './operations.service';
19
27
  forwardRef(() => IntegrationModule),
20
28
  forwardRef(() => SettingModule),
21
29
  ],
22
- controllers: [OperationsController],
23
- providers: [OperationsService, OperationsProposalSubscriber],
30
+ controllers: [
31
+ OperationsController,
32
+ OperationsCollaboratorsController,
33
+ OperationsOrgStructureController,
34
+ OperationsProjectsController,
35
+ OperationsTasksController,
36
+ OperationsContractsController,
37
+ OperationsTimesheetsController,
38
+ OperationsApprovalsController,
39
+ ],
40
+ providers: [
41
+ OperationsService,
42
+ OperationsAccessService,
43
+ OperationsProposalSubscriber,
44
+ ],
24
45
  exports: [OperationsService],
25
46
  })
26
47
  export class OperationsModule {}