@platform-modules/foreign-ministry 1.3.201 → 1.3.203

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 (41) hide show
  1. package/.env +17 -3
  2. package/dist/data-source.js +10 -0
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.js +6 -0
  5. package/dist/models/HelpContentMappedCategoriesModel.d.ts +6 -0
  6. package/dist/models/HelpContentMappedCategoriesModel.js +34 -0
  7. package/dist/models/HelpContentMappedTagsModel.d.ts +6 -0
  8. package/dist/models/HelpContentMappedTagsModel.js +34 -0
  9. package/dist/models/HelpContentTagsModel.d.ts +5 -0
  10. package/dist/models/HelpContentTagsModel.js +29 -0
  11. package/dist/models/MediaApprovalModel.d.ts +23 -0
  12. package/dist/models/MediaApprovalModel.js +88 -0
  13. package/dist/models/MediaAttachmentModel.d.ts +11 -0
  14. package/dist/models/MediaAttachmentModel.js +52 -0
  15. package/dist/models/MediaChatModel.d.ts +19 -0
  16. package/dist/models/MediaChatModel.js +77 -0
  17. package/dist/models/MediaRequestModel.d.ts +75 -0
  18. package/dist/models/MediaRequestModel.js +162 -0
  19. package/dist/models/MediaWorkflowModel.d.ts +17 -0
  20. package/dist/models/MediaWorkflowModel.js +62 -0
  21. package/dist/models/questionTagsModel.d.ts +6 -0
  22. package/dist/models/questionTagsModel.js +34 -0
  23. package/package.json +1 -1
  24. package/src/data-source.ts +10 -0
  25. package/src/index.ts +6 -0
  26. package/src/models/GatePassVisitorsModel.ts +7 -7
  27. package/src/models/MediaApprovalModel.ts +59 -0
  28. package/src/models/MediaAttachmentModel.ts +29 -0
  29. package/src/models/MediaChatModel.ts +63 -0
  30. package/src/models/MediaRequestModel.ts +135 -0
  31. package/src/models/MediaWorkflowModel.ts +38 -0
  32. package/src/models/PollOptionsModel.ts +26 -26
  33. package/src/models/PollVotesModel.ts +37 -37
  34. package/src/models/PollsModel.ts +49 -49
  35. package/src/models/RegisterCandidateRequestModel.ts +183 -183
  36. package/src/models/TelephoneDirectoryModel.ts +20 -20
  37. package/dist/models/EmbassyMasterModel.d.ts +0 -16
  38. package/dist/models/EmbassyMasterModel.js +0 -75
  39. package/dist/models/UserDependentsModel.d.ts +0 -18
  40. package/dist/models/UserDependentsModel.js +0 -94
  41. /package/src/models/{LeaveConfigGradesModel.Ts → LeaveConfigGradesModel.ts} +0 -0
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MediaRequests = exports.MediaYesNo = exports.MediaNotificationType = exports.MediaClassification = exports.MediaRequestType = exports.MediaCategory = exports.MediaAuthorPublisher = exports.MediaRequestStatus = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ var MediaRequestStatus;
16
+ (function (MediaRequestStatus) {
17
+ MediaRequestStatus["DRAFT"] = "Draft";
18
+ MediaRequestStatus["PENDING_REVIEW"] = "Pending Review";
19
+ MediaRequestStatus["APPROVED"] = "Approved";
20
+ MediaRequestStatus["REJECTED"] = "Rejected";
21
+ MediaRequestStatus["PUBLISHED"] = "Published";
22
+ MediaRequestStatus["ARCHIVED"] = "Archived";
23
+ })(MediaRequestStatus || (exports.MediaRequestStatus = MediaRequestStatus = {}));
24
+ var MediaAuthorPublisher;
25
+ (function (MediaAuthorPublisher) {
26
+ MediaAuthorPublisher["MEDIA_TEAM"] = "Media Team";
27
+ MediaAuthorPublisher["HR"] = "HR";
28
+ MediaAuthorPublisher["EMBASSY"] = "Embassy";
29
+ MediaAuthorPublisher["DEPARTMENT"] = "department";
30
+ })(MediaAuthorPublisher || (exports.MediaAuthorPublisher = MediaAuthorPublisher = {}));
31
+ var MediaCategory;
32
+ (function (MediaCategory) {
33
+ MediaCategory["WORLDWIDE"] = "Worldwide";
34
+ MediaCategory["IT"] = "IT";
35
+ MediaCategory["HR"] = "HR";
36
+ MediaCategory["DIPLOMATIC_MC"] = "Diplomatic M&C's";
37
+ })(MediaCategory || (exports.MediaCategory = MediaCategory = {}));
38
+ var MediaRequestType;
39
+ (function (MediaRequestType) {
40
+ MediaRequestType["EXTERNAL_MEDIA_COVERAGE"] = "External media coverage";
41
+ MediaRequestType["EXTERNAL_ARTICLES_PUBLISH"] = "External articles publish";
42
+ MediaRequestType["INTERNAL_MEDIA_COVERAGE"] = "Internal media coverage";
43
+ MediaRequestType["INTERNAL_ARTICLES_PUBLISH"] = "Internal articles publish";
44
+ MediaRequestType["PURCHASE_ORDERS"] = "Purchase orders";
45
+ MediaRequestType["POST_ADVERTISEMENT_DIPLOMATIC_CAR"] = "Post an advertisement for selling a diplomatic car";
46
+ MediaRequestType["INTERNAL_EVENTS_NATIONAL_DAY"] = "Internal Events requirements (National Day) for Omani embassies";
47
+ MediaRequestType["MINISTRY_DEPARTMENTS_REQUESTS"] = "Ministry Departments Requests";
48
+ })(MediaRequestType || (exports.MediaRequestType = MediaRequestType = {}));
49
+ var MediaClassification;
50
+ (function (MediaClassification) {
51
+ MediaClassification["CLASSIFIED"] = "Classified, Private";
52
+ MediaClassification["PUBLIC"] = "Public";
53
+ })(MediaClassification || (exports.MediaClassification = MediaClassification = {}));
54
+ var MediaNotificationType;
55
+ (function (MediaNotificationType) {
56
+ MediaNotificationType["REGULAR_UPDATE"] = "Regular update";
57
+ MediaNotificationType["URGENT_POPUP"] = "urgent popup";
58
+ })(MediaNotificationType || (exports.MediaNotificationType = MediaNotificationType = {}));
59
+ var MediaYesNo;
60
+ (function (MediaYesNo) {
61
+ MediaYesNo["YES"] = "Yes";
62
+ MediaYesNo["NO"] = "No";
63
+ })(MediaYesNo || (exports.MediaYesNo = MediaYesNo = {}));
64
+ let MediaRequests = class MediaRequests extends BaseModel_1.BaseModel {
65
+ };
66
+ exports.MediaRequests = MediaRequests;
67
+ __decorate([
68
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
69
+ __metadata("design:type", Object)
70
+ ], MediaRequests.prototype, "req_user_department_id", void 0);
71
+ __decorate([
72
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
73
+ __metadata("design:type", Object)
74
+ ], MediaRequests.prototype, "req_user_section_id", void 0);
75
+ __decorate([
76
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
77
+ __metadata("design:type", Object)
78
+ ], MediaRequests.prototype, "service_id", void 0);
79
+ __decorate([
80
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
81
+ __metadata("design:type", Object)
82
+ ], MediaRequests.prototype, "sub_service_id", void 0);
83
+ __decorate([
84
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
85
+ __metadata("design:type", Number)
86
+ ], MediaRequests.prototype, "user_id", void 0);
87
+ __decorate([
88
+ (0, typeorm_1.Column)({
89
+ type: 'enum',
90
+ enum: MediaRequestStatus,
91
+ default: MediaRequestStatus.DRAFT,
92
+ nullable: false,
93
+ }),
94
+ __metadata("design:type", String)
95
+ ], MediaRequests.prototype, "status", void 0);
96
+ __decorate([
97
+ (0, typeorm_1.Column)({ type: 'varchar', nullable: true }),
98
+ __metadata("design:type", Object)
99
+ ], MediaRequests.prototype, "workflow_execution_id", void 0);
100
+ __decorate([
101
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: true }),
102
+ __metadata("design:type", Object)
103
+ ], MediaRequests.prototype, "title", void 0);
104
+ __decorate([
105
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
106
+ __metadata("design:type", Object)
107
+ ], MediaRequests.prototype, "summary_abstract", void 0);
108
+ __decorate([
109
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
110
+ __metadata("design:type", Object)
111
+ ], MediaRequests.prototype, "description", void 0);
112
+ __decorate([
113
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaAuthorPublisher, nullable: true }),
114
+ __metadata("design:type", Object)
115
+ ], MediaRequests.prototype, "author_publisher", void 0);
116
+ __decorate([
117
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaCategory, nullable: true }),
118
+ __metadata("design:type", Object)
119
+ ], MediaRequests.prototype, "category", void 0);
120
+ __decorate([
121
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaRequestType, nullable: true }),
122
+ __metadata("design:type", Object)
123
+ ], MediaRequests.prototype, "request_type", void 0);
124
+ __decorate([
125
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaClassification, nullable: true }),
126
+ __metadata("design:type", Object)
127
+ ], MediaRequests.prototype, "classification", void 0);
128
+ __decorate([
129
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
130
+ __metadata("design:type", Object)
131
+ ], MediaRequests.prototype, "target_audience", void 0);
132
+ __decorate([
133
+ (0, typeorm_1.Column)({ type: 'date', nullable: true }),
134
+ __metadata("design:type", Object)
135
+ ], MediaRequests.prototype, "publish_date", void 0);
136
+ __decorate([
137
+ (0, typeorm_1.Column)({ type: 'date', nullable: true }),
138
+ __metadata("design:type", Object)
139
+ ], MediaRequests.prototype, "expiry_date", void 0);
140
+ __decorate([
141
+ (0, typeorm_1.Column)({ type: 'boolean', default: false, nullable: true }),
142
+ __metadata("design:type", Object)
143
+ ], MediaRequests.prototype, "hide_flag", void 0);
144
+ __decorate([
145
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
146
+ __metadata("design:type", Object)
147
+ ], MediaRequests.prototype, "reason_for_hiding", void 0);
148
+ __decorate([
149
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaNotificationType, nullable: true }),
150
+ __metadata("design:type", Object)
151
+ ], MediaRequests.prototype, "notification_type", void 0);
152
+ __decorate([
153
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaYesNo, nullable: true }),
154
+ __metadata("design:type", Object)
155
+ ], MediaRequests.prototype, "popup_mandatory", void 0);
156
+ __decorate([
157
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: true }),
158
+ __metadata("design:type", Object)
159
+ ], MediaRequests.prototype, "popup_duration", void 0);
160
+ exports.MediaRequests = MediaRequests = __decorate([
161
+ (0, typeorm_1.Entity)({ name: 'media_requests' })
162
+ ], MediaRequests);
@@ -0,0 +1,17 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare enum MediaWorkFlowStatus {
3
+ COMPLETED = "Completed",
4
+ NOT_YET_STARTED = "Not Yet Started",
5
+ PENDING = "Pending"
6
+ }
7
+ export declare class MediaWorkFlow extends BaseModel {
8
+ request_id: number;
9
+ service_id: number | null;
10
+ sub_service_id: number | null;
11
+ content: string;
12
+ status: MediaWorkFlowStatus;
13
+ user_id: number | null;
14
+ role_id: number | null;
15
+ department_id: number | null;
16
+ section_id: number | null;
17
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MediaWorkFlow = exports.MediaWorkFlowStatus = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ var MediaWorkFlowStatus;
16
+ (function (MediaWorkFlowStatus) {
17
+ MediaWorkFlowStatus["COMPLETED"] = "Completed";
18
+ MediaWorkFlowStatus["NOT_YET_STARTED"] = "Not Yet Started";
19
+ MediaWorkFlowStatus["PENDING"] = "Pending";
20
+ })(MediaWorkFlowStatus || (exports.MediaWorkFlowStatus = MediaWorkFlowStatus = {}));
21
+ let MediaWorkFlow = class MediaWorkFlow extends BaseModel_1.BaseModel {
22
+ };
23
+ exports.MediaWorkFlow = MediaWorkFlow;
24
+ __decorate([
25
+ (0, typeorm_1.Column)({ type: 'integer', nullable: false }),
26
+ __metadata("design:type", Number)
27
+ ], MediaWorkFlow.prototype, "request_id", void 0);
28
+ __decorate([
29
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
30
+ __metadata("design:type", Object)
31
+ ], MediaWorkFlow.prototype, "service_id", void 0);
32
+ __decorate([
33
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
34
+ __metadata("design:type", Object)
35
+ ], MediaWorkFlow.prototype, "sub_service_id", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: false }),
38
+ __metadata("design:type", String)
39
+ ], MediaWorkFlow.prototype, "content", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Column)({ type: 'enum', enum: MediaWorkFlowStatus, default: MediaWorkFlowStatus.NOT_YET_STARTED, nullable: false }),
42
+ __metadata("design:type", String)
43
+ ], MediaWorkFlow.prototype, "status", void 0);
44
+ __decorate([
45
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
46
+ __metadata("design:type", Object)
47
+ ], MediaWorkFlow.prototype, "user_id", void 0);
48
+ __decorate([
49
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
50
+ __metadata("design:type", Object)
51
+ ], MediaWorkFlow.prototype, "role_id", void 0);
52
+ __decorate([
53
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
54
+ __metadata("design:type", Object)
55
+ ], MediaWorkFlow.prototype, "department_id", void 0);
56
+ __decorate([
57
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
58
+ __metadata("design:type", Object)
59
+ ], MediaWorkFlow.prototype, "section_id", void 0);
60
+ exports.MediaWorkFlow = MediaWorkFlow = __decorate([
61
+ (0, typeorm_1.Entity)({ name: 'media_workflows' })
62
+ ], MediaWorkFlow);
@@ -0,0 +1,6 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare class QuestionTags extends BaseModel {
3
+ name: string;
4
+ question_Id: number;
5
+ constructor(name: string, question_Id: number);
6
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QuestionTags = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ let QuestionTags = class QuestionTags extends BaseModel_1.BaseModel {
16
+ constructor(name, question_Id) {
17
+ super();
18
+ this.name = name,
19
+ this.question_Id = question_Id;
20
+ }
21
+ };
22
+ exports.QuestionTags = QuestionTags;
23
+ __decorate([
24
+ (0, typeorm_1.Column)({ nullable: true }),
25
+ __metadata("design:type", String)
26
+ ], QuestionTags.prototype, "name", void 0);
27
+ __decorate([
28
+ (0, typeorm_1.Column)({ nullable: true }),
29
+ __metadata("design:type", Number)
30
+ ], QuestionTags.prototype, "question_Id", void 0);
31
+ exports.QuestionTags = QuestionTags = __decorate([
32
+ (0, typeorm_1.Entity)({ name: 'question_tags' }),
33
+ __metadata("design:paramtypes", [String, Number])
34
+ ], QuestionTags);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-modules/foreign-ministry",
3
- "version": "1.3.201",
3
+ "version": "1.3.203",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -201,6 +201,11 @@ import { FoodWorkFlow } from './models/FoodWorkflowModel';
201
201
  import { FoodHistory } from './models/FoodHistoryModel';
202
202
  import { Gifts } from './models/GiftsModel';
203
203
  import { GiftAttachments } from './models/GiftAttachmentModel';
204
+ import { MediaRequests } from './models/MediaRequestModel';
205
+ import { MediaApprovalDetails } from './models/MediaApprovalModel';
206
+ import { MediaRequestAttachment } from './models/MediaAttachmentModel';
207
+ import { MediaRequestChat } from './models/MediaChatModel';
208
+ import { MediaWorkFlow } from './models/MediaWorkflowModel';
204
209
  import { Projects } from './models/ProjectModel';
205
210
  import { Templates } from './models/TemplateModel';
206
211
  import { ProjectMilestoneDocuments } from './models/ProjectMilestoneDocumentsModel';
@@ -412,6 +417,11 @@ export const AppDataSource = new DataSource({
412
417
  FoodHistory,
413
418
  Gifts,
414
419
  GiftAttachments,
420
+ MediaRequests,
421
+ MediaApprovalDetails,
422
+ MediaRequestAttachment,
423
+ MediaRequestChat,
424
+ MediaWorkFlow,
415
425
  Projects,
416
426
  Templates,
417
427
  ProjectMilestoneDocuments,
package/src/index.ts CHANGED
@@ -303,6 +303,12 @@ export * from './models/FoodWorkflowModel';
303
303
  export * from './models/FoodHistoryModel';
304
304
  export * from './models/GiftsModel';
305
305
  export * from './models/GiftAttachmentModel';
306
+ // Media Models
307
+ export * from './models/MediaRequestModel';
308
+ export * from './models/MediaApprovalModel';
309
+ export * from './models/MediaAttachmentModel';
310
+ export * from './models/MediaChatModel';
311
+ export * from './models/MediaWorkflowModel';
306
312
  export * from './models/ProjectModel';
307
313
  export * from './models/TemplateModel';
308
314
  export * from './models/ProjectScopeModel';
@@ -85,10 +85,10 @@ export class GatePassVisitors extends BaseModel {
85
85
  @Column({ type: 'varchar', length: 255, nullable: true })
86
86
  visiting_person_in_department: string | null; // زائر في القسم (Visiting Person in Department)
87
87
 
88
- @Column({ type: 'int', nullable: true, unique: true })
89
- serial_number: number | null;
90
-
91
- // QR Code for Gate Pass
88
+ @Column({ type: 'int', nullable: true, unique: true })
89
+ serial_number: number | null;
90
+
91
+ // QR Code for Gate Pass
92
92
  @Column({ type: 'text', nullable: true })
93
93
  qr_code_url: string | null; // QR code URL for this visitor (data URL can be 6000+ characters)
94
94
 
@@ -134,9 +134,9 @@ export class GatePassVisitors extends BaseModel {
134
134
  this.visitor_email_address = visitor_email_address;
135
135
  this.visitor_mobile_number = visitor_mobile_number;
136
136
  this.visitor_photo_url = visitor_photo_url;
137
- this.visitor_photo_file_name = visitor_photo_file_name;
138
- this.serial_number = null;
139
- this.gate_pass_generated = false;
137
+ this.visitor_photo_file_name = visitor_photo_file_name;
138
+ this.serial_number = null;
139
+ this.gate_pass_generated = false;
140
140
  this.email_sent = false;
141
141
  }
142
142
  }
@@ -0,0 +1,59 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum MediaApprovalStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ }
10
+
11
+ @Entity({ name: 'media_approvals' })
12
+ export class MediaApprovalDetails extends BaseModel {
13
+ @Column({ type: 'integer', nullable: false })
14
+ request_id: number;
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
+ @Column({ type: 'integer', nullable: false })
23
+ level: number;
24
+
25
+ @Column({ type: 'integer', nullable: true })
26
+ approver_role_id: number;
27
+
28
+ @Column({ type: 'integer', nullable: true })
29
+ department_id: number | null;
30
+
31
+ @Column({ type: 'integer', nullable: true })
32
+ section_id: number | null;
33
+
34
+ @Column({ type: 'integer', nullable: true })
35
+ approver_user_id: number | null;
36
+
37
+ @Column({ type: 'integer', nullable: true })
38
+ delegate_user_id: number | null;
39
+
40
+ @Column({ type: 'integer', nullable: true })
41
+ approved_by: number | null;
42
+
43
+ @Column({ type: 'varchar', length: 500, nullable: true, default: '' })
44
+ comment: string;
45
+
46
+ @Column({
47
+ type: 'enum',
48
+ enum: MediaApprovalStatus,
49
+ default: MediaApprovalStatus.PENDING,
50
+ nullable: false,
51
+ })
52
+ approval_status: MediaApprovalStatus;
53
+
54
+ @Column({ type: 'boolean', default: true, nullable: false })
55
+ is_allowed: boolean;
56
+
57
+ @Column({ type: 'varchar', nullable: true })
58
+ task_name: string;
59
+ }
@@ -0,0 +1,29 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'media_attachments' })
5
+ export class MediaRequestAttachment extends BaseModel {
6
+ @Column({ type: 'integer', nullable: false })
7
+ request_id: number;
8
+
9
+ @Column({ type: 'integer', nullable: true })
10
+ service_id: number | null;
11
+
12
+ @Column({ type: 'integer', nullable: true })
13
+ sub_service_id: number | null;
14
+
15
+ @Column({ type: 'varchar', length: 500, nullable: false })
16
+ file_url: string;
17
+
18
+ @Column({ type: 'varchar', length: 255, nullable: true })
19
+ file_name: string;
20
+
21
+ @Column({ type: 'varchar', length: 100, nullable: true })
22
+ file_type: string;
23
+
24
+ @Column({ type: 'bigint', nullable: true })
25
+ file_size: number | null;
26
+
27
+ @Column({ type: 'integer', nullable: true })
28
+ chat_id: number | null;
29
+ }
@@ -0,0 +1,63 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum MediaMessageType {
5
+ TEXT = 'text',
6
+ IMAGE = 'image',
7
+ VIDEO = 'video',
8
+ FILE = 'file',
9
+ LINK = 'link',
10
+ }
11
+
12
+ @Entity({ name: 'media_chats' })
13
+ export class MediaRequestChat extends BaseModel {
14
+ @Column({ type: 'integer', nullable: false })
15
+ request_id: number;
16
+
17
+ @Column({ type: 'integer', nullable: true })
18
+ service_id: number | null;
19
+
20
+ @Column({ type: 'integer', nullable: true })
21
+ sub_service_id: number | null;
22
+
23
+ @Column({ type: 'integer', nullable: false })
24
+ user_id: number;
25
+
26
+ @Column({ type: 'integer', nullable: true })
27
+ role_id: number;
28
+
29
+ @Column({ type: 'text', nullable: false })
30
+ message: string;
31
+
32
+ @Column({
33
+ type: 'enum',
34
+ enum: MediaMessageType,
35
+ default: MediaMessageType.TEXT,
36
+ nullable: false,
37
+ })
38
+ messageType: MediaMessageType;
39
+
40
+ @Column({ type: 'text', nullable: true })
41
+ status: string;
42
+
43
+ constructor(
44
+ request_id: number,
45
+ user_id: number,
46
+ role_id: number,
47
+ message: string,
48
+ service_id?: number,
49
+ sub_service_id?: number,
50
+ messageType?: MediaMessageType,
51
+ status?: string
52
+ ) {
53
+ super();
54
+ this.request_id = request_id;
55
+ this.service_id = service_id ?? null;
56
+ this.sub_service_id = sub_service_id ?? null;
57
+ this.user_id = user_id;
58
+ this.role_id = role_id;
59
+ this.message = message;
60
+ this.messageType = messageType ?? MediaMessageType.TEXT;
61
+ this.status = status ?? 'Pending';
62
+ }
63
+ }
@@ -0,0 +1,135 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum MediaRequestStatus {
5
+ DRAFT = 'Draft',
6
+ PENDING_REVIEW = 'Pending Review',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ PUBLISHED = 'Published',
10
+ ARCHIVED = 'Archived',
11
+ }
12
+
13
+ export enum MediaAuthorPublisher {
14
+ MEDIA_TEAM = 'Media Team',
15
+ HR = 'HR',
16
+ EMBASSY = 'Embassy',
17
+ DEPARTMENT = 'department',
18
+ }
19
+
20
+ export enum MediaCategory {
21
+ WORLDWIDE = 'Worldwide',
22
+ IT = 'IT',
23
+ HR = 'HR',
24
+ DIPLOMATIC_MC = "Diplomatic M&C's",
25
+ }
26
+
27
+ export enum MediaRequestType {
28
+ EXTERNAL_MEDIA_COVERAGE = 'External media coverage',
29
+ EXTERNAL_ARTICLES_PUBLISH = 'External articles publish',
30
+ INTERNAL_MEDIA_COVERAGE = 'Internal media coverage',
31
+ INTERNAL_ARTICLES_PUBLISH = 'Internal articles publish',
32
+ PURCHASE_ORDERS = 'Purchase orders',
33
+ POST_ADVERTISEMENT_DIPLOMATIC_CAR = 'Post an advertisement for selling a diplomatic car',
34
+ INTERNAL_EVENTS_NATIONAL_DAY = 'Internal Events requirements (National Day) for Omani embassies',
35
+ MINISTRY_DEPARTMENTS_REQUESTS = 'Ministry Departments Requests',
36
+ }
37
+
38
+ export enum MediaClassification {
39
+ CLASSIFIED = 'Classified, Private',
40
+ PUBLIC = 'Public',
41
+ }
42
+
43
+ export enum MediaNotificationType {
44
+ REGULAR_UPDATE = 'Regular update',
45
+ URGENT_POPUP = 'urgent popup',
46
+ }
47
+
48
+ export enum MediaYesNo {
49
+ YES = 'Yes',
50
+ NO = 'No',
51
+ }
52
+
53
+ @Entity({ name: 'media_requests' })
54
+ export class MediaRequests extends BaseModel {
55
+ // Common columns (from meeting_requests)
56
+ @Column({ type: 'int', nullable: true })
57
+ req_user_department_id: number | null;
58
+
59
+ @Column({ type: 'int', nullable: true })
60
+ req_user_section_id: number | null;
61
+
62
+ @Column({ type: 'int', nullable: true })
63
+ service_id: number | null;
64
+
65
+ @Column({ type: 'int', nullable: true })
66
+ sub_service_id: number | null;
67
+
68
+ @Column({ type: 'int', nullable: false })
69
+ user_id: number;
70
+
71
+ @Column({
72
+ type: 'enum',
73
+ enum: MediaRequestStatus,
74
+ default: MediaRequestStatus.DRAFT,
75
+ nullable: false,
76
+ })
77
+ status: MediaRequestStatus;
78
+
79
+ @Column({ type: 'varchar', nullable: true })
80
+ workflow_execution_id: string | null;
81
+
82
+ // New columns
83
+ /** Headline of the news / announcement */
84
+ @Column({ type: 'varchar', length: 500, nullable: true })
85
+ title: string | null;
86
+
87
+ /** Short description or teaser (Rich Text) */
88
+ @Column({ type: 'text', nullable: true })
89
+ summary_abstract: string | null;
90
+
91
+ /** Main content with formatting (text, images, embedded videos) */
92
+ @Column({ type: 'text', nullable: true })
93
+ description: string | null;
94
+
95
+ @Column({ type: 'enum', enum: MediaAuthorPublisher, nullable: true })
96
+ author_publisher: MediaAuthorPublisher | null;
97
+
98
+ @Column({ type: 'enum', enum: MediaCategory, nullable: true })
99
+ category: MediaCategory | null;
100
+
101
+ @Column({ type: 'enum', enum: MediaRequestType, nullable: true })
102
+ request_type: MediaRequestType | null;
103
+
104
+ @Column({ type: 'enum', enum: MediaClassification, nullable: true })
105
+ classification: MediaClassification | null;
106
+
107
+ /** Target Audience: Departments, Teams, Roles (stored as JSON array or comma-separated) */
108
+ @Column({ type: 'text', nullable: true })
109
+ target_audience: string | null;
110
+
111
+ /** When content goes live */
112
+ @Column({ type: 'date', nullable: true })
113
+ publish_date: string | null;
114
+
115
+ /** When content should auto-hide */
116
+ @Column({ type: 'date', nullable: true })
117
+ expiry_date: string | null;
118
+
119
+ @Column({ type: 'boolean', default: false, nullable: true })
120
+ hide_flag: boolean | null;
121
+
122
+ /** Mandatory if hidden */
123
+ @Column({ type: 'text', nullable: true })
124
+ reason_for_hiding: string | null;
125
+
126
+ @Column({ type: 'enum', enum: MediaNotificationType, nullable: true })
127
+ notification_type: MediaNotificationType | null;
128
+
129
+ @Column({ type: 'enum', enum: MediaYesNo, nullable: true })
130
+ popup_mandatory: MediaYesNo | null;
131
+
132
+ /** How long the popup remains visible (e.g. seconds or description) */
133
+ @Column({ type: 'varchar', length: 100, nullable: true })
134
+ popup_duration: string | null;
135
+ }