@platform-modules/civil-aviation-authority 2.3.218 → 2.3.221

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 (78) hide show
  1. package/.env +0 -15
  2. package/dist/data-source.js +12 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.js +6 -0
  5. package/dist/models/HumanResourceAnnualPlanningRequestModel.d.ts +14 -1
  6. package/dist/models/HumanResourceAnnualPlanningRequestModel.js +67 -2
  7. package/dist/models/{SecurityAccessApprovalModel.d.ts → MultiPurposeHallApprovalModel.d.ts} +6 -7
  8. package/dist/models/{SecurityAccessApprovalModel.js → MultiPurposeHallApprovalModel.js} +31 -29
  9. package/dist/models/MultiPurposeHallAttachmentModel.d.ts +11 -0
  10. package/dist/models/{SecurityAccessAttachmentModel.js → MultiPurposeHallAttachmentModel.js} +19 -23
  11. package/dist/models/MultiPurposeHallChatModel.d.ts +18 -0
  12. package/dist/models/{SecurityAccessChatModel.js → MultiPurposeHallChatModel.js} +32 -23
  13. package/dist/models/MultiPurposeHallHistoryModel.d.ts +10 -0
  14. package/dist/models/MultiPurposeHallHistoryModel.js +48 -0
  15. package/dist/models/MultiPurposeHallRequestModel.d.ts +39 -0
  16. package/dist/models/MultiPurposeHallRequestModel.js +136 -0
  17. package/dist/models/MultiPurposeHallWorkflowModel.d.ts +17 -0
  18. package/dist/models/MultiPurposeHallWorkflowModel.js +67 -0
  19. package/package.json +1 -1
  20. package/src/data-source.ts +12 -0
  21. package/src/index.ts +470 -464
  22. package/src/models/AccessCardRequestModel.ts +135 -135
  23. package/src/models/AirportEntryPermitModel.ts +276 -276
  24. package/src/models/AnnualTrainingPlanRequestModel.ts +153 -153
  25. package/src/models/DepartmentsModel.ts +25 -25
  26. package/src/models/DocumentDriveModel.ts +28 -28
  27. package/src/models/DocumentFolderModel.ts +45 -45
  28. package/src/models/HousingContractCancelApprovalModel.ts +64 -64
  29. package/src/models/HousingContractCancelChatModel.ts +56 -56
  30. package/src/models/HousingContractRenewalApprovalModel.ts +64 -64
  31. package/src/models/HousingContractRenewalChatModel.ts +59 -59
  32. package/src/models/HumanResourceAnnualPlanningRequestModel.ts +65 -0
  33. package/src/models/ITRequestAttachmentModel.ts +73 -73
  34. package/src/models/ITRequestChatModel.ts +74 -74
  35. package/src/models/ItApprovalsModel.ts +84 -84
  36. package/src/models/ItWorkflowModel.ts +55 -55
  37. package/src/models/LegalConsultationApprovalModel.ts +65 -65
  38. package/src/models/MissionTravelPassportExpiryNotificationConfigModel.ts +36 -36
  39. package/src/models/MultiPurposeHallApprovalModel.ts +56 -0
  40. package/src/models/MultiPurposeHallAttachmentModel.ts +29 -0
  41. package/src/models/MultiPurposeHallChatModel.ts +42 -0
  42. package/src/models/MultiPurposeHallHistoryModel.ts +26 -0
  43. package/src/models/MultiPurposeHallRequestModel.ts +102 -0
  44. package/src/models/MultiPurposeHallWorkflowModel.ts +43 -0
  45. package/src/models/ResidentialUnitRentalApprovalModel.ts +143 -143
  46. package/src/models/ResidentialUnitRentalChatModel.ts +56 -56
  47. package/src/models/ResidentialUnitRentalRequestModel.ts +218 -218
  48. package/src/models/ServiceSlaApprovalModel.ts +52 -52
  49. package/src/models/ServicesNotificationConfigModel.ts +55 -55
  50. package/src/models/SlaRequestModel.ts +64 -64
  51. package/src/models/StudyLeaveRequestModel.ts +144 -144
  52. package/src/models/TrainingRequestModel.ts +164 -164
  53. package/src/models/TrainingRoomBookingRequestModel.ts +142 -142
  54. package/src/models/TrainingRoomNotificationConfigModel.ts +30 -30
  55. package/src/models/role.ts +34 -34
  56. package/src/models/user.ts +233 -233
  57. package/dist/models/DocumentMetadataModel.d.ts +0 -45
  58. package/dist/models/DocumentMetadataModel.js +0 -171
  59. package/dist/models/DocumentationDepartmentsModel.d.ts +0 -13
  60. package/dist/models/DocumentationDepartmentsModel.js +0 -53
  61. package/dist/models/FolderModel.d.ts +0 -16
  62. package/dist/models/FolderModel.js +0 -85
  63. package/dist/models/ImportExportMaterialModels.d.ts +0 -92
  64. package/dist/models/ImportExportMaterialModels.js +0 -307
  65. package/dist/models/PermissionModel.d.ts +0 -18
  66. package/dist/models/PermissionModel.js +0 -68
  67. package/dist/models/SecurityAccessAttachmentModel.d.ts +0 -12
  68. package/dist/models/SecurityAccessChatModel.d.ts +0 -12
  69. package/dist/models/SecurityAccessRequestModel.d.ts +0 -25
  70. package/dist/models/SecurityAccessRequestModel.js +0 -80
  71. package/dist/models/SecurityAccessWorkflowModel.d.ts +0 -24
  72. package/dist/models/SecurityAccessWorkflowModel.js +0 -84
  73. package/dist/models/ServiceExtensionAfterAge60Models.d.ts +0 -93
  74. package/dist/models/ServiceExtensionAfterAge60Models.js +0 -312
  75. package/dist/models/UUIDBaseModel.d.ts +0 -14
  76. package/dist/models/UUIDBaseModel.js +0 -66
  77. package/dist/models/WorkingHoursExtensionModels.d.ts +0 -88
  78. package/dist/models/WorkingHoursExtensionModels.js +0 -295
@@ -1,56 +1,56 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- export enum HousingContractCancelMessageType {
5
- text = 'text',
6
- image = 'image',
7
- video = 'video',
8
- file = 'file',
9
- link = 'link'
10
- }
11
-
12
- export enum HousingContractCancelChatStatus {
13
- Pending = 'Pending',
14
- Received = 'Received',
15
- Approved = 'Approved',
16
- Rejected = 'Rejected',
17
- InProgress = 'In Progress',
18
- }
19
-
20
- @Entity({ name: 'housing_contract_cancel_chat' })
21
- export class HousingContractCancelChat extends BaseModel {
22
-
23
- @Column({ type: 'int', nullable: false })
24
- request_id: number;
25
-
26
- @Column({ type: 'int', nullable: false })
27
- service_id: number;
28
-
29
- @Column({ type: 'int', nullable: false })
30
- sub_service_id: number;
31
-
32
- @Column({ type: 'int', nullable: false })
33
- user_id: number;
34
-
35
- @Column({ type: 'text', nullable: false })
36
- message: string;
37
-
38
- @Column({ type: 'int', nullable: true })
39
- approver_role_id: number | null;
40
-
41
- @Column({ type: 'varchar', length: 255, nullable: false, default: 'Pending' })
42
- status: string;
43
-
44
- @Column({ type: 'varchar', length: 20, nullable: false })
45
- message_type: string;
46
-
47
- @Column({ type: 'boolean', nullable: false, default: false })
48
- is_internal: boolean;
49
-
50
- @Column({ type: 'int', nullable: false })
51
- created_by: number;
52
-
53
- constructor() {
54
- super();
55
- }
56
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ export enum HousingContractCancelMessageType {
5
+ text = 'text',
6
+ image = 'image',
7
+ video = 'video',
8
+ file = 'file',
9
+ link = 'link'
10
+ }
11
+
12
+ export enum HousingContractCancelChatStatus {
13
+ Pending = 'Pending',
14
+ Received = 'Received',
15
+ Approved = 'Approved',
16
+ Rejected = 'Rejected',
17
+ InProgress = 'In Progress',
18
+ }
19
+
20
+ @Entity({ name: 'housing_contract_cancel_chat' })
21
+ export class HousingContractCancelChat extends BaseModel {
22
+
23
+ @Column({ type: 'int', nullable: false })
24
+ request_id: number;
25
+
26
+ @Column({ type: 'int', nullable: false })
27
+ service_id: number;
28
+
29
+ @Column({ type: 'int', nullable: false })
30
+ sub_service_id: number;
31
+
32
+ @Column({ type: 'int', nullable: false })
33
+ user_id: number;
34
+
35
+ @Column({ type: 'text', nullable: false })
36
+ message: string;
37
+
38
+ @Column({ type: 'int', nullable: true })
39
+ approver_role_id: number | null;
40
+
41
+ @Column({ type: 'varchar', length: 255, nullable: false, default: 'Pending' })
42
+ status: string;
43
+
44
+ @Column({ type: 'varchar', length: 20, nullable: false })
45
+ message_type: string;
46
+
47
+ @Column({ type: 'boolean', nullable: false, default: false })
48
+ is_internal: boolean;
49
+
50
+ @Column({ type: 'int', nullable: false })
51
+ created_by: number;
52
+
53
+ constructor() {
54
+ super();
55
+ }
56
+ }
@@ -1,64 +1,64 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- export enum HousingContractRenewalApprovalStatus {
5
- PENDING = "Pending",
6
- IN_PROGRESS = "In Progress",
7
- APPROVED = "Approved",
8
- REJECTED = "Rejected"
9
- }
10
-
11
- @Entity({ name: 'housing_contract_renewal_approvals' })
12
- export class HousingContractRenewalApproval extends BaseModel {
13
-
14
- @Column({ type: 'int', nullable: false })
15
- request_id: number;
16
-
17
- @Column({ type: 'int', nullable: false })
18
- service_id: number;
19
-
20
- @Column({ type: 'int', nullable: false })
21
- sub_service_id: number;
22
-
23
- @Column({ type: 'int', nullable: true })
24
- approver_role_id: number;
25
-
26
- @Column({ type: 'int', nullable: true })
27
- approver_user_id: number;
28
-
29
- @Column({ type: 'int', nullable: true })
30
- delegate_user_id: number;
31
-
32
- @Column({ type: 'int', nullable: true })
33
- approved_by: number;
34
-
35
- @Column({ type: 'int', nullable: true })
36
- department_id: number;
37
-
38
- @Column({ type: 'int', nullable: true })
39
- section_id: number;
40
-
41
- @Column({ type: 'int', nullable: false })
42
- level: number;
43
-
44
- @Column({
45
- type: 'enum',
46
- enum: HousingContractRenewalApprovalStatus,
47
- default: HousingContractRenewalApprovalStatus.PENDING,
48
- nullable: false
49
- })
50
- approval_status: HousingContractRenewalApprovalStatus;
51
-
52
- @Column({ type: 'text', nullable: true })
53
- comment: string;
54
-
55
- @Column({ type: 'boolean', default: true, nullable: false })
56
- is_allowed: boolean;
57
-
58
- @Column({ type: 'int', nullable: false })
59
- created_by: number;
60
-
61
- constructor() {
62
- super();
63
- }
64
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ export enum HousingContractRenewalApprovalStatus {
5
+ PENDING = "Pending",
6
+ IN_PROGRESS = "In Progress",
7
+ APPROVED = "Approved",
8
+ REJECTED = "Rejected"
9
+ }
10
+
11
+ @Entity({ name: 'housing_contract_renewal_approvals' })
12
+ export class HousingContractRenewalApproval extends BaseModel {
13
+
14
+ @Column({ type: 'int', nullable: false })
15
+ request_id: number;
16
+
17
+ @Column({ type: 'int', nullable: false })
18
+ service_id: number;
19
+
20
+ @Column({ type: 'int', nullable: false })
21
+ sub_service_id: number;
22
+
23
+ @Column({ type: 'int', nullable: true })
24
+ approver_role_id: number;
25
+
26
+ @Column({ type: 'int', nullable: true })
27
+ approver_user_id: number;
28
+
29
+ @Column({ type: 'int', nullable: true })
30
+ delegate_user_id: number;
31
+
32
+ @Column({ type: 'int', nullable: true })
33
+ approved_by: number;
34
+
35
+ @Column({ type: 'int', nullable: true })
36
+ department_id: number;
37
+
38
+ @Column({ type: 'int', nullable: true })
39
+ section_id: number;
40
+
41
+ @Column({ type: 'int', nullable: false })
42
+ level: number;
43
+
44
+ @Column({
45
+ type: 'enum',
46
+ enum: HousingContractRenewalApprovalStatus,
47
+ default: HousingContractRenewalApprovalStatus.PENDING,
48
+ nullable: false
49
+ })
50
+ approval_status: HousingContractRenewalApprovalStatus;
51
+
52
+ @Column({ type: 'text', nullable: true })
53
+ comment: string;
54
+
55
+ @Column({ type: 'boolean', default: true, nullable: false })
56
+ is_allowed: boolean;
57
+
58
+ @Column({ type: 'int', nullable: false })
59
+ created_by: number;
60
+
61
+ constructor() {
62
+ super();
63
+ }
64
+ }
@@ -1,59 +1,59 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- export enum HousingContractRenewalMessageType {
5
- text = 'text',
6
- image = 'image',
7
- video = 'video',
8
- file = 'file',
9
- link = 'link'
10
- }
11
-
12
- /** Aligns with request-for-coverage / accommodation chat `status` usage */
13
- export enum HousingContractRenewalChatStatus {
14
- Pending = 'Pending',
15
- Received = 'Received',
16
- Approved = 'Approved',
17
- Rejected = 'Rejected',
18
- InProgress = 'In Progress',
19
- }
20
-
21
- @Entity({ name: 'housing_contract_renewal_chat' })
22
- export class HousingContractRenewalChat extends BaseModel {
23
-
24
- @Column({ type: 'int', nullable: false })
25
- request_id: number;
26
-
27
- @Column({ type: 'int', nullable: false })
28
- service_id: number;
29
-
30
- @Column({ type: 'int', nullable: false })
31
- sub_service_id: number;
32
-
33
- /** Message author (same pattern as request_for_coverage_request_chat.user_id) */
34
- @Column({ type: 'int', nullable: false })
35
- user_id: number;
36
-
37
- @Column({ type: 'text', nullable: false })
38
- message: string;
39
-
40
- /** Role context for the chat line (e.g. active role when message was posted) */
41
- @Column({ type: 'int', nullable: true })
42
- approver_role_id: number | null;
43
-
44
- @Column({ type: 'varchar', length: 255, nullable: false, default: 'Pending' })
45
- status: string;
46
-
47
- @Column({ type: 'varchar', length: 20, nullable: false })
48
- message_type: string;
49
-
50
- @Column({ type: 'boolean', nullable: false, default: false })
51
- is_internal: boolean;
52
-
53
- @Column({ type: 'int', nullable: false })
54
- created_by: number;
55
-
56
- constructor() {
57
- super();
58
- }
59
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ export enum HousingContractRenewalMessageType {
5
+ text = 'text',
6
+ image = 'image',
7
+ video = 'video',
8
+ file = 'file',
9
+ link = 'link'
10
+ }
11
+
12
+ /** Aligns with request-for-coverage / accommodation chat `status` usage */
13
+ export enum HousingContractRenewalChatStatus {
14
+ Pending = 'Pending',
15
+ Received = 'Received',
16
+ Approved = 'Approved',
17
+ Rejected = 'Rejected',
18
+ InProgress = 'In Progress',
19
+ }
20
+
21
+ @Entity({ name: 'housing_contract_renewal_chat' })
22
+ export class HousingContractRenewalChat extends BaseModel {
23
+
24
+ @Column({ type: 'int', nullable: false })
25
+ request_id: number;
26
+
27
+ @Column({ type: 'int', nullable: false })
28
+ service_id: number;
29
+
30
+ @Column({ type: 'int', nullable: false })
31
+ sub_service_id: number;
32
+
33
+ /** Message author (same pattern as request_for_coverage_request_chat.user_id) */
34
+ @Column({ type: 'int', nullable: false })
35
+ user_id: number;
36
+
37
+ @Column({ type: 'text', nullable: false })
38
+ message: string;
39
+
40
+ /** Role context for the chat line (e.g. active role when message was posted) */
41
+ @Column({ type: 'int', nullable: true })
42
+ approver_role_id: number | null;
43
+
44
+ @Column({ type: 'varchar', length: 255, nullable: false, default: 'Pending' })
45
+ status: string;
46
+
47
+ @Column({ type: 'varchar', length: 20, nullable: false })
48
+ message_type: string;
49
+
50
+ @Column({ type: 'boolean', nullable: false, default: false })
51
+ is_internal: boolean;
52
+
53
+ @Column({ type: 'int', nullable: false })
54
+ created_by: number;
55
+
56
+ constructor() {
57
+ super();
58
+ }
59
+ }
@@ -57,6 +57,45 @@ export class HumanResourceAnnualPlanningRequest extends BaseModel {
57
57
  description: string | null;
58
58
 
59
59
  // HR Annual Planning specific fields
60
+ @Column({ type: "varchar", length: 255, nullable: true })
61
+ employee_name: string | null;
62
+
63
+ @Column({ type: "varchar", length: 100, nullable: true })
64
+ employee_id: string | null;
65
+
66
+ @Column({ type: "varchar", length: 255, nullable: true })
67
+ current_position: string | null;
68
+
69
+ @Column({ type: "text", nullable: true })
70
+ skills: string | null;
71
+
72
+ @Column({ type: "decimal", precision: 10, scale: 2, nullable: true })
73
+ work_experience: number | null;
74
+
75
+ @Column({ type: "varchar", length: 20, nullable: true })
76
+ productivity_rating: string | null;
77
+
78
+ @Column({ type: "text", nullable: true })
79
+ productivity_other: string | null;
80
+
81
+ @Column({ type: "varchar", length: 20, nullable: true })
82
+ behavior_rating: string | null;
83
+
84
+ @Column({ type: "text", nullable: true })
85
+ behavior_other: string | null;
86
+
87
+ @Column({ type: "varchar", length: 20, nullable: true })
88
+ leadership_rating: string | null;
89
+
90
+ @Column({ type: "text", nullable: true })
91
+ leadership_other: string | null;
92
+
93
+ @Column({ type: "varchar", length: 20, nullable: true })
94
+ emotional_intelligence_rating: string | null;
95
+
96
+ @Column({ type: "text", nullable: true })
97
+ emotional_intelligence_other: string | null;
98
+
60
99
  @Column({ type: "text", nullable: true })
61
100
  comment: string | null;
62
101
 
@@ -82,6 +121,19 @@ export class HumanResourceAnnualPlanningRequest extends BaseModel {
82
121
  assigned_to_user_id?: number | null,
83
122
  assigned_at?: Date | null,
84
123
  workflow_execution_id?: string | null,
124
+ employee_name?: string | null,
125
+ employee_id?: string | null,
126
+ current_position?: string | null,
127
+ skills?: string | null,
128
+ work_experience?: number | null,
129
+ productivity_rating?: string | null,
130
+ productivity_other?: string | null,
131
+ behavior_rating?: string | null,
132
+ behavior_other?: string | null,
133
+ leadership_rating?: string | null,
134
+ leadership_other?: string | null,
135
+ emotional_intelligence_rating?: string | null,
136
+ emotional_intelligence_other?: string | null,
85
137
  comment?: string | null,
86
138
  extension_number?: string | null,
87
139
  quarter?: Quarter | null,
@@ -100,6 +152,19 @@ export class HumanResourceAnnualPlanningRequest extends BaseModel {
100
152
  this.assigned_to_user_id = assigned_to_user_id || null;
101
153
  this.assigned_at = assigned_at || null;
102
154
  this.workflow_execution_id = workflow_execution_id || null;
155
+ this.employee_name = employee_name || null;
156
+ this.employee_id = employee_id || null;
157
+ this.current_position = current_position || null;
158
+ this.skills = skills || null;
159
+ this.work_experience = work_experience || null;
160
+ this.productivity_rating = productivity_rating || null;
161
+ this.productivity_other = productivity_other || null;
162
+ this.behavior_rating = behavior_rating || null;
163
+ this.behavior_other = behavior_other || null;
164
+ this.leadership_rating = leadership_rating || null;
165
+ this.leadership_other = leadership_other || null;
166
+ this.emotional_intelligence_rating = emotional_intelligence_rating || null;
167
+ this.emotional_intelligence_other = emotional_intelligence_other || null;
103
168
  this.comment = comment || null;
104
169
  this.extension_number = extension_number || null;
105
170
  this.quarter = quarter || null;
@@ -1,73 +1,73 @@
1
- import { Column, Entity, ManyToOne, JoinColumn } from "typeorm";
2
- import { BaseModel } from './BaseModel';
3
- import { ITHelpDeskRequests } from './ITHelpDeskModel';
4
- import { User } from './user';
5
-
6
- @Entity({ name: 'it_request_attachments' })
7
- export class ITRequestAttachment extends BaseModel {
8
-
9
- @Column({ type: 'integer', nullable: false })
10
- request_id: number;
11
-
12
- @ManyToOne(() => ITHelpDeskRequests)
13
- @JoinColumn({ name: 'request_id' })
14
- request: ITHelpDeskRequests;
15
-
16
- @Column({ type: 'integer', nullable: true })
17
- service_id: number | null;
18
-
19
- @Column({ type: 'integer', nullable: true })
20
- sub_service_id: number | null;
21
-
22
- /** Optional link to it_request_chat when attachment was created from a media chat message */
23
- @Column({ type: 'integer', nullable: true })
24
- chat_id: number | null;
25
-
26
- @Column({ type: 'integer', nullable: false })
27
- uploaded_by: number;
28
-
29
- @ManyToOne(() => User)
30
- @JoinColumn({ name: 'uploaded_by' })
31
- user: User;
32
-
33
- @Column({ type: 'varchar', length: 500, nullable: false })
34
- file_url: string;
35
-
36
- @Column({ type: 'varchar', length: 255, nullable: true })
37
- file_name: string;
38
-
39
- @Column({ type: 'varchar', length: 100, nullable: true })
40
- file_type: string;
41
-
42
- @Column({ type: 'bigint', nullable: true })
43
- file_size: number | null;
44
-
45
- @Column({ type: 'text', nullable: true })
46
- description: string;
47
-
48
- constructor(
49
- request_id: number,
50
- uploaded_by: number,
51
- file_url: string,
52
- file_name?: string,
53
- file_type?: string,
54
- file_size?: number,
55
- description?: string,
56
- service_id?: number | null,
57
- sub_service_id?: number | null,
58
- chat_id?: number | null
59
- ) {
60
- super();
61
- this.request_id = request_id;
62
- this.uploaded_by = uploaded_by;
63
- this.file_url = file_url;
64
- this.file_name = file_name || '';
65
- this.file_type = file_type || '';
66
- this.file_size = file_size || null;
67
- this.description = description || '';
68
- this.service_id = service_id ?? null;
69
- this.sub_service_id = sub_service_id ?? null;
70
- this.chat_id = chat_id ?? null;
71
- }
72
- }
73
-
1
+ import { Column, Entity, ManyToOne, JoinColumn } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+ import { ITHelpDeskRequests } from './ITHelpDeskModel';
4
+ import { User } from './user';
5
+
6
+ @Entity({ name: 'it_request_attachments' })
7
+ export class ITRequestAttachment extends BaseModel {
8
+
9
+ @Column({ type: 'integer', nullable: false })
10
+ request_id: number;
11
+
12
+ @ManyToOne(() => ITHelpDeskRequests)
13
+ @JoinColumn({ name: 'request_id' })
14
+ request: ITHelpDeskRequests;
15
+
16
+ @Column({ type: 'integer', nullable: true })
17
+ service_id: number | null;
18
+
19
+ @Column({ type: 'integer', nullable: true })
20
+ sub_service_id: number | null;
21
+
22
+ /** Optional link to it_request_chat when attachment was created from a media chat message */
23
+ @Column({ type: 'integer', nullable: true })
24
+ chat_id: number | null;
25
+
26
+ @Column({ type: 'integer', nullable: false })
27
+ uploaded_by: number;
28
+
29
+ @ManyToOne(() => User)
30
+ @JoinColumn({ name: 'uploaded_by' })
31
+ user: User;
32
+
33
+ @Column({ type: 'varchar', length: 500, nullable: false })
34
+ file_url: string;
35
+
36
+ @Column({ type: 'varchar', length: 255, nullable: true })
37
+ file_name: string;
38
+
39
+ @Column({ type: 'varchar', length: 100, nullable: true })
40
+ file_type: string;
41
+
42
+ @Column({ type: 'bigint', nullable: true })
43
+ file_size: number | null;
44
+
45
+ @Column({ type: 'text', nullable: true })
46
+ description: string;
47
+
48
+ constructor(
49
+ request_id: number,
50
+ uploaded_by: number,
51
+ file_url: string,
52
+ file_name?: string,
53
+ file_type?: string,
54
+ file_size?: number,
55
+ description?: string,
56
+ service_id?: number | null,
57
+ sub_service_id?: number | null,
58
+ chat_id?: number | null
59
+ ) {
60
+ super();
61
+ this.request_id = request_id;
62
+ this.uploaded_by = uploaded_by;
63
+ this.file_url = file_url;
64
+ this.file_name = file_name || '';
65
+ this.file_type = file_type || '';
66
+ this.file_size = file_size || null;
67
+ this.description = description || '';
68
+ this.service_id = service_id ?? null;
69
+ this.sub_service_id = sub_service_id ?? null;
70
+ this.chat_id = chat_id ?? null;
71
+ }
72
+ }
73
+