@platform-modules/civil-aviation-authority 2.2.89 → 2.2.90

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.
@@ -0,0 +1,55 @@
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.AirportEntryPermitWorkFlow = exports.AirportEntryPermitWorkFlowStatus = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ var AirportEntryPermitWorkFlowStatus;
16
+ (function (AirportEntryPermitWorkFlowStatus) {
17
+ AirportEntryPermitWorkFlowStatus["COMPLETED"] = "Completed";
18
+ AirportEntryPermitWorkFlowStatus["NOT_YET_STARTED"] = "Not Yet Started";
19
+ AirportEntryPermitWorkFlowStatus["PENDING"] = "Pending";
20
+ })(AirportEntryPermitWorkFlowStatus || (exports.AirportEntryPermitWorkFlowStatus = AirportEntryPermitWorkFlowStatus = {}));
21
+ let AirportEntryPermitWorkFlow = class AirportEntryPermitWorkFlow extends BaseModel_1.BaseModel {
22
+ constructor(request_id, content, status, service_id, sub_service_id) {
23
+ super();
24
+ this.request_id = request_id;
25
+ this.service_id = service_id || null;
26
+ this.sub_service_id = sub_service_id || null;
27
+ this.content = content;
28
+ this.status = status;
29
+ }
30
+ };
31
+ exports.AirportEntryPermitWorkFlow = AirportEntryPermitWorkFlow;
32
+ __decorate([
33
+ (0, typeorm_1.Column)({ type: 'integer', nullable: false }),
34
+ __metadata("design:type", Number)
35
+ ], AirportEntryPermitWorkFlow.prototype, "request_id", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
38
+ __metadata("design:type", Object)
39
+ ], AirportEntryPermitWorkFlow.prototype, "service_id", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Column)({ type: 'integer', nullable: true }),
42
+ __metadata("design:type", Object)
43
+ ], AirportEntryPermitWorkFlow.prototype, "sub_service_id", void 0);
44
+ __decorate([
45
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: false }),
46
+ __metadata("design:type", String)
47
+ ], AirportEntryPermitWorkFlow.prototype, "content", void 0);
48
+ __decorate([
49
+ (0, typeorm_1.Column)({ type: 'enum', enum: AirportEntryPermitWorkFlowStatus, default: AirportEntryPermitWorkFlowStatus.NOT_YET_STARTED, nullable: false }),
50
+ __metadata("design:type", String)
51
+ ], AirportEntryPermitWorkFlow.prototype, "status", void 0);
52
+ exports.AirportEntryPermitWorkFlow = AirportEntryPermitWorkFlow = __decorate([
53
+ (0, typeorm_1.Entity)({ name: 'airport_entry_permit_workflows' }),
54
+ __metadata("design:paramtypes", [Number, String, String, Number, Number])
55
+ ], AirportEntryPermitWorkFlow);
@@ -0,0 +1,30 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare enum MealType {
3
+ BREAKFAST = "Breakfast",
4
+ LUNCH = "Lunch",
5
+ DINNER = "Dinner"
6
+ }
7
+ export declare enum ServiceTypes {
8
+ LAUNDRY = "Laundry",
9
+ TELEPHONE = "Telephone Service"
10
+ }
11
+ export declare class HotelReservation extends BaseModel {
12
+ type_of_accommodation: string;
13
+ price: number;
14
+ meal: MealType;
15
+ service: ServiceTypes;
16
+ date_of_request: Date;
17
+ hotel_name: string;
18
+ check_in_date: Date;
19
+ check_in_time: string;
20
+ check_out_date: Date;
21
+ check_out_time: string;
22
+ number_of_guests: number;
23
+ description: string;
24
+ attachment_url: string;
25
+ requested_by: string;
26
+ visitor_name: string;
27
+ hr_approval: boolean;
28
+ pr_approval: boolean;
29
+ constructor(type_of_accommodation: string, price: number, meal: MealType, service: ServiceTypes, date_of_request: Date, hotel_name: string, check_in_date: Date, check_in_time: string, check_out_date: Date, check_out_time: string, number_of_guests: number, description: string, requested_by: string, visitor_name: string, hr_approval: boolean, pr_approval: boolean);
30
+ }
@@ -0,0 +1,119 @@
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.HotelReservation = exports.ServiceTypes = exports.MealType = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ var MealType;
16
+ (function (MealType) {
17
+ MealType["BREAKFAST"] = "Breakfast";
18
+ MealType["LUNCH"] = "Lunch";
19
+ MealType["DINNER"] = "Dinner";
20
+ })(MealType || (exports.MealType = MealType = {}));
21
+ var ServiceTypes;
22
+ (function (ServiceTypes) {
23
+ ServiceTypes["LAUNDRY"] = "Laundry";
24
+ ServiceTypes["TELEPHONE"] = "Telephone Service";
25
+ })(ServiceTypes || (exports.ServiceTypes = ServiceTypes = {}));
26
+ let HotelReservation = class HotelReservation extends BaseModel_1.BaseModel {
27
+ constructor(type_of_accommodation, price, meal, service, date_of_request, hotel_name, check_in_date, check_in_time, check_out_date, check_out_time, number_of_guests, description, requested_by, visitor_name, hr_approval, pr_approval) {
28
+ super();
29
+ this.type_of_accommodation = type_of_accommodation;
30
+ this.price = price;
31
+ this.meal = meal;
32
+ this.service = service;
33
+ this.date_of_request = date_of_request;
34
+ this.hotel_name = hotel_name;
35
+ this.check_in_date = check_in_date;
36
+ this.check_in_time = check_in_time;
37
+ this.check_out_date = check_out_date;
38
+ this.check_out_time = check_out_time;
39
+ this.number_of_guests = number_of_guests;
40
+ this.description = description;
41
+ this.requested_by = requested_by;
42
+ this.visitor_name = visitor_name;
43
+ this.hr_approval = hr_approval;
44
+ this.pr_approval = pr_approval;
45
+ }
46
+ };
47
+ exports.HotelReservation = HotelReservation;
48
+ __decorate([
49
+ (0, typeorm_1.Column)({ type: 'varchar', length: 50 }),
50
+ __metadata("design:type", String)
51
+ ], HotelReservation.prototype, "type_of_accommodation", void 0);
52
+ __decorate([
53
+ (0, typeorm_1.Column)({ type: 'decimal', precision: 10, scale: 2, nullable: false }),
54
+ __metadata("design:type", Number)
55
+ ], HotelReservation.prototype, "price", void 0);
56
+ __decorate([
57
+ (0, typeorm_1.Column)({ type: 'enum', enum: MealType, nullable: false, }),
58
+ __metadata("design:type", String)
59
+ ], HotelReservation.prototype, "meal", void 0);
60
+ __decorate([
61
+ (0, typeorm_1.Column)({ type: 'enum', enum: ServiceTypes, nullable: false, }),
62
+ __metadata("design:type", String)
63
+ ], HotelReservation.prototype, "service", void 0);
64
+ __decorate([
65
+ (0, typeorm_1.Column)({ type: 'timestamptz', nullable: false }),
66
+ __metadata("design:type", Date)
67
+ ], HotelReservation.prototype, "date_of_request", void 0);
68
+ __decorate([
69
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: false }),
70
+ __metadata("design:type", String)
71
+ ], HotelReservation.prototype, "hotel_name", void 0);
72
+ __decorate([
73
+ (0, typeorm_1.Column)({ type: 'date', nullable: false }),
74
+ __metadata("design:type", Date)
75
+ ], HotelReservation.prototype, "check_in_date", void 0);
76
+ __decorate([
77
+ (0, typeorm_1.Column)({ type: 'time', nullable: false }),
78
+ __metadata("design:type", String)
79
+ ], HotelReservation.prototype, "check_in_time", void 0);
80
+ __decorate([
81
+ (0, typeorm_1.Column)({ type: 'date', nullable: false }),
82
+ __metadata("design:type", Date)
83
+ ], HotelReservation.prototype, "check_out_date", void 0);
84
+ __decorate([
85
+ (0, typeorm_1.Column)({ type: 'time', nullable: false }),
86
+ __metadata("design:type", String)
87
+ ], HotelReservation.prototype, "check_out_time", void 0);
88
+ __decorate([
89
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
90
+ __metadata("design:type", Number)
91
+ ], HotelReservation.prototype, "number_of_guests", void 0);
92
+ __decorate([
93
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
94
+ __metadata("design:type", String)
95
+ ], HotelReservation.prototype, "description", void 0);
96
+ __decorate([
97
+ (0, typeorm_1.Column)({ type: 'text', nullable: false }),
98
+ __metadata("design:type", String)
99
+ ], HotelReservation.prototype, "attachment_url", void 0);
100
+ __decorate([
101
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: false }),
102
+ __metadata("design:type", String)
103
+ ], HotelReservation.prototype, "requested_by", void 0);
104
+ __decorate([
105
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: false }),
106
+ __metadata("design:type", String)
107
+ ], HotelReservation.prototype, "visitor_name", void 0);
108
+ __decorate([
109
+ (0, typeorm_1.Column)({ type: 'boolean', default: false }),
110
+ __metadata("design:type", Boolean)
111
+ ], HotelReservation.prototype, "hr_approval", void 0);
112
+ __decorate([
113
+ (0, typeorm_1.Column)({ type: 'boolean', default: false }),
114
+ __metadata("design:type", Boolean)
115
+ ], HotelReservation.prototype, "pr_approval", void 0);
116
+ exports.HotelReservation = HotelReservation = __decorate([
117
+ (0, typeorm_1.Entity)({ name: 'hotel_reservations' }),
118
+ __metadata("design:paramtypes", [String, Number, String, String, Date, String, Date, String, Date, String, Number, String, String, String, Boolean, Boolean])
119
+ ], HotelReservation);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-modules/civil-aviation-authority",
3
- "version": "2.2.89",
3
+ "version": "2.2.90",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,79 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum AirportEntryPermitApprovalStatus {
5
+ PENDING = "Pending",
6
+ IN_PROGRESS = "In Progress",
7
+ APPROVED = "Approved",
8
+ REJECTED = "Rejected",
9
+ RFC = "Request For Change"
10
+ }
11
+
12
+ @Entity({ name: 'airport_entry_permit_approvals' })
13
+ export class AirportEntryPermitApproval 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
+ level: number;
25
+
26
+ @Column({ type: 'integer', nullable: false })
27
+ approver_role_id: number;
28
+
29
+ @Column({ type: 'integer', nullable: true })
30
+ department_id: number | null;
31
+
32
+ @Column({ type: 'integer', nullable: true })
33
+ section_id: number | null;
34
+
35
+ @Column({ type: 'integer', nullable: true })
36
+ approver_user_id: number | null;
37
+
38
+ @Column({ type: 'integer', nullable: true })
39
+ delegate_user_id: number | null;
40
+
41
+ @Column({ type: 'integer', nullable: true })
42
+ approved_by: number | null;
43
+
44
+ @Column({ type: 'varchar', length: 500, nullable: true, default: '' })
45
+ comment: string;
46
+
47
+ @Column({ type: 'enum', enum: AirportEntryPermitApprovalStatus, default: AirportEntryPermitApprovalStatus.PENDING, nullable: false })
48
+ approval_status: AirportEntryPermitApprovalStatus;
49
+
50
+ constructor(
51
+ request_id: number,
52
+ approver_role_id: number,
53
+ comment: string,
54
+ approval_status: AirportEntryPermitApprovalStatus,
55
+ level: number,
56
+ department_id?: number | null,
57
+ section_id?: number | null,
58
+ approver_user_id?: number | null,
59
+ delegate_user_id?: number | null,
60
+ approved_by?: number | null,
61
+ service_id?: number,
62
+ sub_service_id?: number
63
+ ) {
64
+ super();
65
+ this.request_id = request_id;
66
+ this.service_id = service_id || null;
67
+ this.sub_service_id = sub_service_id || null;
68
+ this.approver_role_id = approver_role_id;
69
+ this.comment = comment;
70
+ this.approval_status = approval_status;
71
+ this.level = level;
72
+ this.department_id = department_id || null;
73
+ this.section_id = section_id || null;
74
+ this.approver_user_id = approver_user_id || null;
75
+ this.delegate_user_id = delegate_user_id || null;
76
+ this.approved_by = approved_by || null;
77
+ }
78
+ }
79
+
@@ -0,0 +1,62 @@
1
+ import { Column, Entity, ManyToOne, JoinColumn } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'airport_entry_permit_attachments' })
5
+ export class AirportEntryPermitAttachment extends BaseModel {
6
+
7
+ @Column({ type: 'integer', nullable: false })
8
+ request_id: number;
9
+
10
+ @Column({ type: 'integer', nullable: true })
11
+ service_id: number | null;
12
+
13
+ @Column({ type: 'integer', nullable: true })
14
+ sub_service_id: number | null;
15
+
16
+ @Column({ type: 'varchar', length: 500, nullable: false })
17
+ file_url: string;
18
+
19
+ @Column({ type: 'varchar', length: 255, nullable: true })
20
+ file_name: string;
21
+
22
+ @Column({ type: 'varchar', length: 100, nullable: true })
23
+ file_type: string;
24
+
25
+ @Column({ type: 'bigint', nullable: true })
26
+ file_size: number | null;
27
+
28
+ @Column({ type: 'integer', nullable: true })
29
+ chat_id: number | null;
30
+
31
+ @Column({ type: "integer", nullable: false })
32
+ uploaded_by: number;
33
+
34
+ @Column({ type: "text", nullable: true })
35
+ description: string;
36
+
37
+ constructor(
38
+ request_id: number,
39
+ uploaded_by: number,
40
+ file_url: string,
41
+ file_name?: string,
42
+ file_type?: string,
43
+ file_size?: number,
44
+ service_id?: number,
45
+ sub_service_id?: number,
46
+ chat_id?: number,
47
+ description?: string
48
+ ) {
49
+ super();
50
+ this.request_id = request_id;
51
+ this.service_id = service_id || null;
52
+ this.sub_service_id = sub_service_id || null;
53
+ this.file_url = file_url;
54
+ this.file_name = file_name || '';
55
+ this.file_type = file_type || '';
56
+ this.file_size = file_size || null;
57
+ this.chat_id = chat_id || null;
58
+ this.uploaded_by = uploaded_by;
59
+ this.description = description || '';
60
+ }
61
+ }
62
+
@@ -0,0 +1,55 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum AirportEntryPermitMessageTypes {
5
+ TEXT = "text",
6
+ IMAGE = "image",
7
+ VIDEO = "video",
8
+ FILE = "file",
9
+ LINK = "link"
10
+ }
11
+
12
+ @Entity({ name: 'airport_entry_permit_chat' })
13
+ export class AirportEntryPermitChat extends BaseModel {
14
+
15
+ @Column({ type: 'integer', nullable: false })
16
+ request_id: number;
17
+
18
+ @Column({ type: 'integer', nullable: true })
19
+ service_id: number | null;
20
+
21
+ @Column({ type: 'integer', nullable: true })
22
+ sub_service_id: number | null;
23
+
24
+ @Column({ type: 'integer', nullable: false })
25
+ user_id: number;
26
+
27
+ @Column({ type: 'text', nullable: false })
28
+ message: string;
29
+
30
+ @Column({
31
+ type: 'enum',
32
+ enum: AirportEntryPermitMessageTypes,
33
+ default: AirportEntryPermitMessageTypes.TEXT,
34
+ nullable: false
35
+ })
36
+ messageType: AirportEntryPermitMessageTypes;
37
+
38
+ constructor(
39
+ request_id: number,
40
+ user_id: number,
41
+ message: string,
42
+ service_id?: number,
43
+ sub_service_id?: number,
44
+ messageType?: AirportEntryPermitMessageTypes
45
+ ) {
46
+ super();
47
+ this.request_id = request_id;
48
+ this.service_id = service_id || null;
49
+ this.sub_service_id = sub_service_id || null;
50
+ this.user_id = user_id;
51
+ this.message = message;
52
+ this.messageType = messageType || AirportEntryPermitMessageTypes.TEXT;
53
+ }
54
+ }
55
+
@@ -0,0 +1,246 @@
1
+ import { Entity, Column } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum AirportEntryPermitCategory {
5
+ ISSUING_NEW_PERMIT = "Issuing New Permit",
6
+ RENEWAL_OF_PERMIT = "Renewal of Permit",
7
+ AMENDING = "Amending",
8
+ REPLACING_LOST = "Replacing lost",
9
+ CANCELLING_AIRPORT_SECURITY_PERMITS = "Cancelling airport security permits"
10
+ }
11
+
12
+ export enum AirportEntryPermitType {
13
+ PERMANENT = "Permanent",
14
+ TEMPORARY = "Temporary"
15
+ }
16
+
17
+ export enum AirportEntryPermitLocation {
18
+ MUSCAT = "Muscat",
19
+ SALALAH = "Salalah",
20
+ MARMUL = "Marmul",
21
+ DURUM = "Durum",
22
+ SOHAR = "Sohar",
23
+ FUHUD = "Fuhud",
24
+ MUKHAZINA = "Mukhazina"
25
+ }
26
+
27
+ export enum AirportEntryPermitArea {
28
+ PURPLE = "VIP building",
29
+ HEAVENLY = "Cargo Building with import and export sections",
30
+ ORANGE = "[ Arrivals Hall] and Arrivals building",
31
+ GREEN = "[departures Hall ] and departures building",
32
+ YELLOW = "Information centre and control tower building",
33
+ BLUE = "Vehicle, Aircraft building, Aircraft parking area, fire station and fuel filling stations, repair shop",
34
+ PINK = "Baggage sorting area",
35
+ GRAY = "Supply building",
36
+ ALL_CIVIL_AIRPORTS = "All Civil Airports"
37
+ }
38
+
39
+ export enum AirportEntryPermitStatus {
40
+ PENDING = "Pending",
41
+ APPROVED = "Approved",
42
+ REJECTED = "Rejected",
43
+ IN_PROGRESS = "In Progress"
44
+ }
45
+
46
+ @Entity({ name: 'airport_entry_permits' })
47
+ export class AirportEntryPermit extends BaseModel {
48
+ // Workflow fields
49
+ @Column({ type: 'int', nullable: true })
50
+ req_user_department_id: number | null;
51
+
52
+ @Column({ type: 'int', nullable: true })
53
+ req_user_section_id: number | null;
54
+
55
+ @Column({ type: 'int', nullable: true })
56
+ service_id: number | null;
57
+
58
+ @Column({ type: 'int', nullable: true })
59
+ sub_service_id: number | null;
60
+
61
+ @Column({ type: 'varchar', length: 20, nullable: true })
62
+ service_type: string | null;
63
+
64
+ @Column({ type: 'varchar', nullable: true })
65
+ workflow_execution_id: string | null;
66
+
67
+ @Column({
68
+ type: "enum",
69
+ enum: AirportEntryPermitStatus,
70
+ default: AirportEntryPermitStatus.PENDING,
71
+ nullable: false,
72
+ })
73
+ status: AirportEntryPermitStatus;
74
+
75
+ @Column({ nullable: false })
76
+ user_id: number;
77
+
78
+ // Request ID - Auto generated
79
+ @Column({ type: 'varchar', length: 50, nullable: true, unique: true })
80
+ request_id: string | null;
81
+
82
+ // User fields from requirements
83
+ @Column({ type: 'varchar', length: 255, nullable: false })
84
+ name_full_family_name: string;
85
+
86
+ @Column({ type: 'varchar', length: 100, nullable: false })
87
+ nationality: string;
88
+
89
+ @Column({ type: 'date', nullable: false })
90
+ dob: Date;
91
+
92
+ @Column({ type: 'varchar', length: 255, nullable: false })
93
+ place: string;
94
+
95
+ @Column({ type: 'varchar', length: 50, nullable: false })
96
+ passport_id_card_no: string;
97
+
98
+ @Column({
99
+ type: "enum",
100
+ enum: AirportEntryPermitCategory,
101
+ nullable: false,
102
+ })
103
+ category_of_permit: AirportEntryPermitCategory;
104
+
105
+ @Column({ type: 'date', nullable: false })
106
+ date_of_submission: Date;
107
+
108
+ @Column({ type: 'varchar', length: 20, nullable: false })
109
+ phone_number: string;
110
+
111
+ @Column({
112
+ type: "enum",
113
+ enum: AirportEntryPermitLocation,
114
+ nullable: false,
115
+ })
116
+ location: AirportEntryPermitLocation;
117
+
118
+ @Column({
119
+ type: "enum",
120
+ enum: AirportEntryPermitType,
121
+ nullable: false,
122
+ })
123
+ type_of_permit: AirportEntryPermitType;
124
+
125
+ @Column({ type: 'time', nullable: true })
126
+ temporary_start_time: string | null;
127
+
128
+ @Column({ type: 'varchar', length: 100, nullable: true })
129
+ temporary_duration: string | null;
130
+
131
+ @Column({ type: 'text', array: true, nullable: false })
132
+ permission_to_required_areas: AirportEntryPermitArea[];
133
+
134
+ @Column({ type: 'text', nullable: true })
135
+ attachment_url: string | null;
136
+
137
+ @Column({ type: 'text', nullable: false })
138
+ details: string;
139
+
140
+ @Column({ type: 'varchar', length: 255, nullable: false })
141
+ occupation_staff: string;
142
+
143
+ // Visitor fields (optional)
144
+ @Column({ type: 'varchar', length: 50, nullable: true })
145
+ visitor_visa_type: string | null;
146
+
147
+ @Column({ type: 'varchar', length: 50, nullable: true })
148
+ visitor_visa_no: string | null;
149
+
150
+ @Column({ type: 'date', nullable: true })
151
+ visitor_visa_expiry_date: Date | null;
152
+
153
+ // Acknowledgement fields (from form checkboxes)
154
+ @Column({ type: 'boolean', default: false })
155
+ acknowledge_security_policies: boolean;
156
+
157
+ @Column({ type: 'boolean', default: false })
158
+ acknowledge_disciplinary_action: boolean;
159
+
160
+ // Consent fields (for approvers - not in create form)
161
+ @Column({ type: 'boolean', default: false })
162
+ consent_approve_to_issue_permit: boolean;
163
+
164
+ @Column({ type: 'boolean', default: false })
165
+ consent_do_not_approve_to_issue_permit: boolean;
166
+
167
+ @Column({ type: 'text', nullable: true })
168
+ consent_justification: string | null;
169
+
170
+ @Column({ type: 'varchar', length: 100, nullable: false })
171
+ requested_by: string;
172
+
173
+ constructor(
174
+ name_full_family_name: string,
175
+ nationality: string,
176
+ dob: Date,
177
+ place: string,
178
+ passport_id_card_no: string,
179
+ category_of_permit: AirportEntryPermitCategory,
180
+ date_of_submission: Date,
181
+ phone_number: string,
182
+ location: AirportEntryPermitLocation,
183
+ type_of_permit: AirportEntryPermitType,
184
+ permission_to_required_areas: AirportEntryPermitArea[],
185
+ details: string,
186
+ occupation_staff: string,
187
+ requested_by: string,
188
+ user_id: number,
189
+ status: AirportEntryPermitStatus = AirportEntryPermitStatus.PENDING,
190
+ service_id?: number | null,
191
+ sub_service_id?: number | null,
192
+ service_type?: string | null,
193
+ workflow_execution_id?: string | null,
194
+ req_user_department_id?: number | null,
195
+ req_user_section_id?: number | null,
196
+ attachment_url?: string | null,
197
+ temporary_start_time?: string | null,
198
+ temporary_duration?: string | null,
199
+ visitor_visa_type?: string | null,
200
+ visitor_visa_no?: string | null,
201
+ visitor_visa_expiry_date?: Date | null,
202
+ acknowledge_security_policies: boolean = false,
203
+ acknowledge_disciplinary_action: boolean = false,
204
+ consent_approve_to_issue_permit: boolean = false,
205
+ consent_do_not_approve_to_issue_permit: boolean = false,
206
+ consent_justification?: string | null,
207
+ request_id?: string | null
208
+ ) {
209
+ super();
210
+ this.name_full_family_name = name_full_family_name;
211
+ this.nationality = nationality;
212
+ this.dob = dob;
213
+ this.place = place;
214
+ this.passport_id_card_no = passport_id_card_no;
215
+ this.category_of_permit = category_of_permit;
216
+ this.date_of_submission = date_of_submission;
217
+ this.phone_number = phone_number;
218
+ this.location = location;
219
+ this.type_of_permit = type_of_permit;
220
+ this.permission_to_required_areas = permission_to_required_areas;
221
+ this.details = details;
222
+ this.occupation_staff = occupation_staff;
223
+ this.requested_by = requested_by;
224
+ this.user_id = user_id;
225
+ this.status = status;
226
+ this.service_id = service_id ?? null;
227
+ this.sub_service_id = sub_service_id ?? null;
228
+ this.service_type = service_type ?? null;
229
+ this.workflow_execution_id = workflow_execution_id ?? null;
230
+ this.req_user_department_id = req_user_department_id ?? null;
231
+ this.req_user_section_id = req_user_section_id ?? null;
232
+ this.attachment_url = attachment_url ?? null;
233
+ this.temporary_start_time = temporary_start_time ?? null;
234
+ this.temporary_duration = temporary_duration ?? null;
235
+ this.visitor_visa_type = visitor_visa_type ?? null;
236
+ this.visitor_visa_no = visitor_visa_no ?? null;
237
+ this.visitor_visa_expiry_date = visitor_visa_expiry_date ?? null;
238
+ this.acknowledge_security_policies = acknowledge_security_policies;
239
+ this.acknowledge_disciplinary_action = acknowledge_disciplinary_action;
240
+ this.consent_approve_to_issue_permit = consent_approve_to_issue_permit;
241
+ this.consent_do_not_approve_to_issue_permit = consent_do_not_approve_to_issue_permit;
242
+ this.consent_justification = consent_justification ?? null;
243
+ this.request_id = request_id ?? null;
244
+ }
245
+ }
246
+