@platform-modules/foreign-ministry 1.3.40 → 1.3.41
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.
- package/dist/data-source.js +12 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +17 -1
- package/dist/models/DiplomaticClubCardApprovalModel.d.ts +16 -0
- package/dist/models/DiplomaticClubCardApprovalModel.js +58 -0
- package/dist/models/DiplomaticClubCardAttachmentModel.d.ts +9 -0
- package/dist/models/DiplomaticClubCardAttachmentModel.js +44 -0
- package/dist/models/DiplomaticClubCardChatModel.d.ts +7 -0
- package/dist/models/DiplomaticClubCardChatModel.js +36 -0
- package/dist/models/DiplomaticClubCardMemberModel.d.ts +13 -0
- package/dist/models/DiplomaticClubCardMemberModel.js +60 -0
- package/dist/models/DiplomaticClubCardRequestModel.d.ts +33 -0
- package/dist/models/DiplomaticClubCardRequestModel.js +98 -0
- package/dist/models/DiplomaticClubCardWorkFlowModel.d.ts +12 -0
- package/dist/models/DiplomaticClubCardWorkFlowModel.js +42 -0
- package/dist/models/DiplomaticServiceDetailsModel.d.ts +20 -0
- package/dist/models/DiplomaticServiceDetailsModel.js +65 -0
- package/dist/models/DiplomaticSettingsModel.d.ts +11 -0
- package/dist/models/DiplomaticSettingsModel.js +59 -0
- package/dist/models/DiplomaticTitleModel.d.ts +12 -0
- package/dist/models/DiplomaticTitleModel.js +45 -0
- package/dist/models/DiplomaticWorkFlowModel.d.ts +1 -0
- package/dist/models/DiplomaticWorkFlowModel.js +4 -0
- package/dist/models/GatePassApprovalsModel.d.ts +33 -0
- package/dist/models/GatePassApprovalsModel.js +110 -0
- package/dist/models/GatePassAttachmentsModel.d.ts +16 -0
- package/dist/models/GatePassAttachmentsModel.js +60 -0
- package/dist/models/GatePassChatsModel.d.ts +26 -0
- package/dist/models/GatePassChatsModel.js +84 -0
- package/dist/models/GatePassRequestsModel.d.ts +46 -0
- package/dist/models/GatePassRequestsModel.js +148 -0
- package/dist/models/GatePassVisitorsModel.d.ts +27 -0
- package/dist/models/GatePassVisitorsModel.js +115 -0
- package/dist/models/GatePassWorkFlowModel.d.ts +33 -0
- package/dist/models/GatePassWorkFlowModel.js +93 -0
- package/dist/models/PassportRequestApprovalModel.d.ts +22 -0
- package/dist/models/PassportRequestApprovalModel.js +91 -0
- package/dist/models/PassportRequestAttachmentModel.d.ts +10 -0
- package/dist/models/PassportRequestAttachmentModel.js +54 -0
- package/dist/models/PassportRequestChatModel.d.ts +8 -0
- package/dist/models/PassportRequestChatModel.js +44 -0
- package/dist/models/PassportRequestDependentModel.d.ts +20 -0
- package/dist/models/PassportRequestDependentModel.js +85 -0
- package/dist/models/PassportRequestModel.d.ts +40 -0
- package/dist/models/PassportRequestModel.js +128 -0
- package/dist/models/PassportRequestWorkFlowModel.d.ts +15 -0
- package/dist/models/PassportRequestWorkFlowModel.js +60 -0
- package/dist/models/RetiredCardRequestsModel.d.ts +2 -1
- package/dist/models/RetiredCardRequestsModel.js +7 -2
- package/dist/models/SubscriptionAmountModel.d.ts +67 -0
- package/dist/models/SubscriptionAmountModel.js +114 -0
- package/package.json +1 -1
- package/src/data-source.ts +12 -0
- package/src/index.ts +11 -0
- package/src/models/DiplomaticClubSubscriptionMasterModel.ts +26 -26
- package/src/models/DiplomaticRequestsModel.ts +157 -157
- package/src/models/DiplomaticWorkFlowModel.ts +3 -0
- package/src/models/GatePassApprovalsModel.ts +98 -0
- package/src/models/GatePassAttachmentsModel.ts +38 -0
- package/src/models/GatePassChatsModel.ts +72 -0
- package/src/models/GatePassRequestsModel.ts +139 -0
- package/src/models/GatePassVisitorsModel.ts +100 -0
- package/src/models/GatePassWorkFlowModel.ts +66 -0
- package/src/models/LeaveConfigModel.ts +71 -71
- package/src/models/MissionTravelApprovalModel.ts +100 -100
- package/src/models/MissionTravelAttachmentModel.ts +56 -56
- package/src/models/MissionTravelChatModel.ts +52 -52
- package/src/models/MissionTravelPersonModel.ts +105 -105
- package/src/models/MissionTravelWorkflowModel.ts +54 -54
- package/src/models/RetiredCardRequestsModel.ts +7 -1
- package/dist/models/MissionTravelClassConfigModel.d.ts +0 -10
- package/dist/models/MissionTravelClassConfigModel.js +0 -50
- package/dist/models/MissionTravelPerdiemModel.d.ts +0 -10
- package/dist/models/MissionTravelPerdiemModel.js +0 -54
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Column, Entity } from "typeorm";
|
|
2
|
+
import { BaseModel } from './BaseModel';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Gate Pass Request Status Enum
|
|
6
|
+
*/
|
|
7
|
+
export enum GatePassRequestStatus {
|
|
8
|
+
PENDING = "Pending",
|
|
9
|
+
APPROVED = "Approved",
|
|
10
|
+
REJECTED = "Rejected",
|
|
11
|
+
CANCELLED = "Cancelled",
|
|
12
|
+
IN_PROGRESS = "In Progress"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Gate Pass Type Enum
|
|
17
|
+
*/
|
|
18
|
+
export enum GatePassType {
|
|
19
|
+
SHORT_TERM = "Short-term",
|
|
20
|
+
LONG_TERM = "Long-term"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Main Gate Pass Request Table (FM022)
|
|
25
|
+
* This table stores the primary gate pass request data
|
|
26
|
+
* Employees request gate passes for visitors
|
|
27
|
+
*/
|
|
28
|
+
@Entity({ name: 'gate_pass_requests' })
|
|
29
|
+
export class GatePassRequests extends BaseModel {
|
|
30
|
+
|
|
31
|
+
// User and Department Information
|
|
32
|
+
@Column({ type: 'int', nullable: false })
|
|
33
|
+
user_id: number; // Employee who is requesting
|
|
34
|
+
|
|
35
|
+
@Column({ type: 'int', nullable: true })
|
|
36
|
+
req_user_department_id: number | null;
|
|
37
|
+
|
|
38
|
+
@Column({ type: 'int', nullable: true })
|
|
39
|
+
req_user_section_id: number | null;
|
|
40
|
+
|
|
41
|
+
@Column({ type: 'int', nullable: true })
|
|
42
|
+
service_id: number | null;
|
|
43
|
+
|
|
44
|
+
@Column({ type: 'int', nullable: true })
|
|
45
|
+
sub_service_id: number | null;
|
|
46
|
+
|
|
47
|
+
// Request Status and Workflow
|
|
48
|
+
@Column({ type: 'enum', enum: GatePassRequestStatus, default: GatePassRequestStatus.PENDING, nullable: false })
|
|
49
|
+
status: GatePassRequestStatus;
|
|
50
|
+
|
|
51
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
52
|
+
workflow_execution_id: string | null;
|
|
53
|
+
|
|
54
|
+
// Gate Pass Request Fields (from requirements)
|
|
55
|
+
@Column({ type: 'date', nullable: true })
|
|
56
|
+
date: Date | null; // التاريخ (Date)
|
|
57
|
+
|
|
58
|
+
@Column({ type: 'int', nullable: true })
|
|
59
|
+
department_id: number | null; // الدائرة (Department)
|
|
60
|
+
|
|
61
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
62
|
+
serial_number: string | null; // الرقم التسلسلي (Serial Number)
|
|
63
|
+
|
|
64
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
65
|
+
office_number: string | null; // رقم المكتب (Office Number)
|
|
66
|
+
|
|
67
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
68
|
+
visiting_department: string | null; // قسم الزيارة (Visiting Department) - Auto filled
|
|
69
|
+
|
|
70
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
71
|
+
person_to_be_interviewed: string | null; // الشخص المطلوب مقابلته (Person to be Interviewed)
|
|
72
|
+
|
|
73
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
74
|
+
vehicle_type_and_color: string | null; // نوع المركبة ولونها (Vehicle Type and Color)
|
|
75
|
+
|
|
76
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
77
|
+
plate_number_and_code: string | null; // رقم اللوحة والرمز (Plate Number and Code)
|
|
78
|
+
|
|
79
|
+
@Column({ type: 'text', nullable: true })
|
|
80
|
+
purpose_of_entry: string | null; // الغرض من الدخول (Purpose of Entry)
|
|
81
|
+
|
|
82
|
+
@Column({ type: 'date', nullable: true })
|
|
83
|
+
from_date: Date | null; // من (From)
|
|
84
|
+
|
|
85
|
+
@Column({ type: 'date', nullable: true })
|
|
86
|
+
to_date: Date | null; // الى (To)
|
|
87
|
+
|
|
88
|
+
@Column({ type: 'enum', enum: GatePassType, nullable: true })
|
|
89
|
+
gate_pass_type: GatePassType | null; // نوع ممر البوابة (Gate Pass Type) - Short Term / Long Term
|
|
90
|
+
|
|
91
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
92
|
+
visiting_person_in_department: string | null; // زائر في القسم (Visiting Person in Department)
|
|
93
|
+
|
|
94
|
+
constructor(
|
|
95
|
+
user_id: number,
|
|
96
|
+
req_user_department_id: number | null,
|
|
97
|
+
req_user_section_id: number | null,
|
|
98
|
+
service_id: number | null,
|
|
99
|
+
sub_service_id: number | null,
|
|
100
|
+
status: GatePassRequestStatus,
|
|
101
|
+
workflow_execution_id: string | null,
|
|
102
|
+
date: Date | null,
|
|
103
|
+
department_id: number | null,
|
|
104
|
+
serial_number: string | null,
|
|
105
|
+
office_number: string | null,
|
|
106
|
+
visiting_department: string | null,
|
|
107
|
+
person_to_be_interviewed: string | null,
|
|
108
|
+
vehicle_type_and_color: string | null,
|
|
109
|
+
plate_number_and_code: string | null,
|
|
110
|
+
purpose_of_entry: string | null,
|
|
111
|
+
from_date: Date | null,
|
|
112
|
+
to_date: Date | null,
|
|
113
|
+
gate_pass_type: GatePassType | null,
|
|
114
|
+
visiting_person_in_department: string | null
|
|
115
|
+
) {
|
|
116
|
+
super();
|
|
117
|
+
this.user_id = user_id;
|
|
118
|
+
this.req_user_department_id = req_user_department_id;
|
|
119
|
+
this.req_user_section_id = req_user_section_id;
|
|
120
|
+
this.service_id = service_id;
|
|
121
|
+
this.sub_service_id = sub_service_id;
|
|
122
|
+
this.status = status;
|
|
123
|
+
this.workflow_execution_id = workflow_execution_id;
|
|
124
|
+
this.date = date;
|
|
125
|
+
this.department_id = department_id;
|
|
126
|
+
this.serial_number = serial_number;
|
|
127
|
+
this.office_number = office_number;
|
|
128
|
+
this.visiting_department = visiting_department;
|
|
129
|
+
this.person_to_be_interviewed = person_to_be_interviewed;
|
|
130
|
+
this.vehicle_type_and_color = vehicle_type_and_color;
|
|
131
|
+
this.plate_number_and_code = plate_number_and_code;
|
|
132
|
+
this.purpose_of_entry = purpose_of_entry;
|
|
133
|
+
this.from_date = from_date;
|
|
134
|
+
this.to_date = to_date;
|
|
135
|
+
this.gate_pass_type = gate_pass_type;
|
|
136
|
+
this.visiting_person_in_department = visiting_person_in_department;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Column, Entity } from "typeorm";
|
|
2
|
+
import { BaseModel } from './BaseModel';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Gate Pass Visitors Table
|
|
6
|
+
* Stores visitor information for each gate pass request
|
|
7
|
+
* One request can have multiple visitors
|
|
8
|
+
*/
|
|
9
|
+
@Entity({ name: 'gate_pass_visitors' })
|
|
10
|
+
export class GatePassVisitors extends BaseModel {
|
|
11
|
+
|
|
12
|
+
@Column({ type: 'int', nullable: false })
|
|
13
|
+
gate_pass_request_id: number; // Foreign key to gate_pass_requests
|
|
14
|
+
|
|
15
|
+
@Column({ type: 'int', nullable: true })
|
|
16
|
+
service_id: number | null;
|
|
17
|
+
|
|
18
|
+
@Column({ type: 'int', nullable: true })
|
|
19
|
+
sub_service_id: number | null;
|
|
20
|
+
|
|
21
|
+
// Visitor Information Fields (from requirements)
|
|
22
|
+
@Column({ type: 'varchar', length: 255, nullable: false })
|
|
23
|
+
visitor_name: string; // اسم الزائر (Visitor Name)
|
|
24
|
+
|
|
25
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
26
|
+
visitor_id_passport_no: string | null; // رقم هوية الزائر / جواز السفر (Visitor ID / Passport No)
|
|
27
|
+
|
|
28
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
29
|
+
nationality: string | null; // الجنسية (Nationality)
|
|
30
|
+
|
|
31
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
32
|
+
job_title: string | null; // الوظيفة (The Job)
|
|
33
|
+
|
|
34
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
35
|
+
represented_entity: string | null; // الجهة التي يمثلها (The Represented Entity)
|
|
36
|
+
|
|
37
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
38
|
+
visitor_email_address: string | null; // عنوان البريد الإلكتروني للزائر (Visitor email Address)
|
|
39
|
+
|
|
40
|
+
@Column({ type: 'varchar', length: 50, nullable: true })
|
|
41
|
+
visitor_mobile_number: string | null; // رقم هاتف الزائر (Visitor Mobile Number)
|
|
42
|
+
|
|
43
|
+
@Column({ type: 'varchar', length: 500, nullable: true })
|
|
44
|
+
visitor_photo_url: string | null; // صورة الزائر (Visitor Photo) - Required for Long Term Gate pass
|
|
45
|
+
|
|
46
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
47
|
+
visitor_photo_file_name: string | null;
|
|
48
|
+
|
|
49
|
+
// QR Code for Gate Pass
|
|
50
|
+
@Column({ type: 'text', nullable: true })
|
|
51
|
+
qr_code_url: string | null; // QR code URL for this visitor (data URL can be 6000+ characters)
|
|
52
|
+
|
|
53
|
+
@Column({ type: 'text', nullable: true })
|
|
54
|
+
qr_code_data: string | null; // QR code data (JSON string)
|
|
55
|
+
|
|
56
|
+
// Gate Pass Generation
|
|
57
|
+
@Column({ type: 'boolean', default: false, nullable: false })
|
|
58
|
+
gate_pass_generated: boolean; // Whether gate pass has been generated
|
|
59
|
+
|
|
60
|
+
@Column({ type: 'timestamptz', nullable: true })
|
|
61
|
+
gate_pass_generated_at: Date | null; // When gate pass was generated
|
|
62
|
+
|
|
63
|
+
@Column({ type: 'boolean', default: false, nullable: false })
|
|
64
|
+
email_sent: boolean; // Whether email has been sent to visitor
|
|
65
|
+
|
|
66
|
+
@Column({ type: 'timestamptz', nullable: true })
|
|
67
|
+
email_sent_at: Date | null; // When email was sent
|
|
68
|
+
|
|
69
|
+
constructor(
|
|
70
|
+
gate_pass_request_id: number,
|
|
71
|
+
visitor_name: string,
|
|
72
|
+
service_id: number | null,
|
|
73
|
+
sub_service_id: number | null,
|
|
74
|
+
visitor_id_passport_no: string | null,
|
|
75
|
+
nationality: string | null,
|
|
76
|
+
job_title: string | null,
|
|
77
|
+
represented_entity: string | null,
|
|
78
|
+
visitor_email_address: string | null,
|
|
79
|
+
visitor_mobile_number: string | null,
|
|
80
|
+
visitor_photo_url: string | null,
|
|
81
|
+
visitor_photo_file_name: string | null
|
|
82
|
+
) {
|
|
83
|
+
super();
|
|
84
|
+
this.gate_pass_request_id = gate_pass_request_id;
|
|
85
|
+
this.service_id = service_id;
|
|
86
|
+
this.sub_service_id = sub_service_id;
|
|
87
|
+
this.visitor_name = visitor_name;
|
|
88
|
+
this.visitor_id_passport_no = visitor_id_passport_no;
|
|
89
|
+
this.nationality = nationality;
|
|
90
|
+
this.job_title = job_title;
|
|
91
|
+
this.represented_entity = represented_entity;
|
|
92
|
+
this.visitor_email_address = visitor_email_address;
|
|
93
|
+
this.visitor_mobile_number = visitor_mobile_number;
|
|
94
|
+
this.visitor_photo_url = visitor_photo_url;
|
|
95
|
+
this.visitor_photo_file_name = visitor_photo_file_name;
|
|
96
|
+
this.gate_pass_generated = false;
|
|
97
|
+
this.email_sent = false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Column, Entity } from "typeorm";
|
|
2
|
+
import { BaseModel } from './BaseModel';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Gate Pass Workflow Status Enum
|
|
6
|
+
*/
|
|
7
|
+
export enum GatePassWorkFlowStatus {
|
|
8
|
+
COMPLETED = "Completed",
|
|
9
|
+
NOT_YET_STARTED = "Not Yet Started",
|
|
10
|
+
PENDING = "Pending",
|
|
11
|
+
IN_PROGRESS = "In Progress"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Gate Pass Workflow Table
|
|
16
|
+
* Tracks the progress of the request through different workflow stages
|
|
17
|
+
* Provides a timeline/audit trail of the process
|
|
18
|
+
*
|
|
19
|
+
* Workflow: Employee → Department Admin Office → Security Department
|
|
20
|
+
*/
|
|
21
|
+
@Entity({ name: 'gate_pass_workflows' })
|
|
22
|
+
export class GatePassWorkFlow extends BaseModel {
|
|
23
|
+
|
|
24
|
+
@Column({ type: 'int', nullable: false })
|
|
25
|
+
gate_pass_request_id: number; // Foreign key to gate_pass_requests
|
|
26
|
+
|
|
27
|
+
@Column({ type: 'int', nullable: false, default: 0 })
|
|
28
|
+
gate_pass_approval_details_id: number; // Foreign key to gate_pass_approvals
|
|
29
|
+
|
|
30
|
+
@Column({ type: 'varchar', length: 255, nullable: false })
|
|
31
|
+
content: string; // Description of the workflow step
|
|
32
|
+
|
|
33
|
+
@Column({ type: 'enum', enum: GatePassWorkFlowStatus, default: GatePassWorkFlowStatus.NOT_YET_STARTED, nullable: false })
|
|
34
|
+
status: GatePassWorkFlowStatus; // Current status of this workflow step
|
|
35
|
+
|
|
36
|
+
@Column({ type: 'integer', nullable: true })
|
|
37
|
+
user_id: number | null; // User responsible for this step
|
|
38
|
+
|
|
39
|
+
@Column({ type: 'integer', nullable: true })
|
|
40
|
+
role_id: number | null; // Role responsible for this step
|
|
41
|
+
|
|
42
|
+
@Column({ type: 'integer', nullable: true })
|
|
43
|
+
department_id: number | null; // Department involved in this step
|
|
44
|
+
|
|
45
|
+
@Column({ type: 'integer', nullable: true })
|
|
46
|
+
section_id: number | null; // Section involved in this step
|
|
47
|
+
|
|
48
|
+
@Column({ type: 'integer', nullable: false, default: 1 })
|
|
49
|
+
level: number; // Workflow level
|
|
50
|
+
|
|
51
|
+
@Column({ type: 'varchar', length: 50, nullable: true })
|
|
52
|
+
access_type: string | null; // Normal - to track workflow path
|
|
53
|
+
|
|
54
|
+
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
55
|
+
action_taken: string | null; // Action taken
|
|
56
|
+
|
|
57
|
+
@Column({ type: 'timestamptz', nullable: true })
|
|
58
|
+
action_date: Date | null; // Date when action was taken
|
|
59
|
+
|
|
60
|
+
@Column({ type: 'integer', nullable: true })
|
|
61
|
+
service_id: number | null;
|
|
62
|
+
|
|
63
|
+
@Column({ type: 'integer', nullable: true })
|
|
64
|
+
sub_service_id: number | null;
|
|
65
|
+
}
|
|
66
|
+
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Column, Entity } from "typeorm";
|
|
2
|
-
import { BaseModel } from './BaseModel';
|
|
3
|
-
|
|
4
|
-
export enum enumFrequency {
|
|
5
|
-
Monthly = 'Monthly',
|
|
6
|
-
Yearly = 'Yearly',
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
//This model is used to store the Financial Grade declaration on the Admin Side
|
|
10
|
-
@Entity({ name: 'leave_configuration' })
|
|
11
|
-
export class LeaveConfiguration extends BaseModel {
|
|
12
|
-
|
|
13
|
-
@Column({ type: 'varchar', nullable: true })
|
|
14
|
-
category: string;
|
|
15
|
-
|
|
16
|
-
@Column({ type: 'int', nullable: true })
|
|
17
|
-
MandC_id: number;
|
|
18
|
-
|
|
19
|
-
@Column({ type: 'int', nullable: true })
|
|
20
|
-
leave_type_id: number;
|
|
21
|
-
|
|
22
|
-
@Column({ type: 'varchar', nullable: true })
|
|
23
|
-
frequency: enumFrequency;
|
|
24
|
-
|
|
25
|
-
@Column({ type: 'varchar', nullable: true })
|
|
26
|
-
region: string;
|
|
27
|
-
|
|
28
|
-
@Column({ type: 'varchar', nullable: true })
|
|
29
|
-
country: string;
|
|
30
|
-
|
|
31
|
-
@Column({ type: 'varchar', nullable: true })
|
|
32
|
-
location: string;
|
|
33
|
-
|
|
34
|
-
@Column({ nullable: true, default: false })
|
|
35
|
-
is_carryforward: boolean;
|
|
36
|
-
|
|
37
|
-
@Column({ type: 'int', nullable: true, default: 0 })
|
|
38
|
-
carryforward_limit: number;
|
|
39
|
-
|
|
40
|
-
@Column({ type: 'date', nullable: true })
|
|
41
|
-
from_date: Date;
|
|
42
|
-
|
|
43
|
-
@Column({ type: 'date', nullable: true })
|
|
44
|
-
to_date: Date;
|
|
45
|
-
|
|
46
|
-
@Column({ type: 'varchar', nullable: true })
|
|
47
|
-
reason: string;
|
|
48
|
-
|
|
49
|
-
@Column({ type: 'int', nullable: true })
|
|
50
|
-
emergency_balance_days: number | null;
|
|
51
|
-
|
|
52
|
-
@Column({ type: 'date', nullable: true })
|
|
53
|
-
last_credited: Date | null;
|
|
54
|
-
|
|
55
|
-
constructor(category: string, MandC_id: number, leave_type_id: number, frequency: enumFrequency, region: string, country: string, location: string, is_carryforward: boolean, carryforward_limit: number, from_date: Date, to_date: Date, reason: string, emergency_balance_days?: number|null, last_credited?: Date|null) {
|
|
56
|
-
super();
|
|
57
|
-
this.category = category;
|
|
58
|
-
this.MandC_id = MandC_id;
|
|
59
|
-
this.leave_type_id = leave_type_id;
|
|
60
|
-
this.frequency = frequency;
|
|
61
|
-
this.region = region;
|
|
62
|
-
this.country = country;
|
|
63
|
-
this.location = location;
|
|
64
|
-
this.is_carryforward = is_carryforward;
|
|
65
|
-
this.carryforward_limit = carryforward_limit;
|
|
66
|
-
this.from_date = from_date;
|
|
67
|
-
this.to_date = to_date;
|
|
68
|
-
this.reason = reason;
|
|
69
|
-
this.emergency_balance_days = emergency_balance_days ?? null;
|
|
70
|
-
this.last_credited = last_credited ?? null;
|
|
71
|
-
}
|
|
1
|
+
import { Column, Entity } from "typeorm";
|
|
2
|
+
import { BaseModel } from './BaseModel';
|
|
3
|
+
|
|
4
|
+
export enum enumFrequency {
|
|
5
|
+
Monthly = 'Monthly',
|
|
6
|
+
Yearly = 'Yearly',
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
//This model is used to store the Financial Grade declaration on the Admin Side
|
|
10
|
+
@Entity({ name: 'leave_configuration' })
|
|
11
|
+
export class LeaveConfiguration extends BaseModel {
|
|
12
|
+
|
|
13
|
+
@Column({ type: 'varchar', nullable: true })
|
|
14
|
+
category: string;
|
|
15
|
+
|
|
16
|
+
@Column({ type: 'int', nullable: true })
|
|
17
|
+
MandC_id: number;
|
|
18
|
+
|
|
19
|
+
@Column({ type: 'int', nullable: true })
|
|
20
|
+
leave_type_id: number;
|
|
21
|
+
|
|
22
|
+
@Column({ type: 'varchar', nullable: true })
|
|
23
|
+
frequency: enumFrequency;
|
|
24
|
+
|
|
25
|
+
@Column({ type: 'varchar', nullable: true })
|
|
26
|
+
region: string;
|
|
27
|
+
|
|
28
|
+
@Column({ type: 'varchar', nullable: true })
|
|
29
|
+
country: string;
|
|
30
|
+
|
|
31
|
+
@Column({ type: 'varchar', nullable: true })
|
|
32
|
+
location: string;
|
|
33
|
+
|
|
34
|
+
@Column({ nullable: true, default: false })
|
|
35
|
+
is_carryforward: boolean;
|
|
36
|
+
|
|
37
|
+
@Column({ type: 'int', nullable: true, default: 0 })
|
|
38
|
+
carryforward_limit: number;
|
|
39
|
+
|
|
40
|
+
@Column({ type: 'date', nullable: true })
|
|
41
|
+
from_date: Date;
|
|
42
|
+
|
|
43
|
+
@Column({ type: 'date', nullable: true })
|
|
44
|
+
to_date: Date;
|
|
45
|
+
|
|
46
|
+
@Column({ type: 'varchar', nullable: true })
|
|
47
|
+
reason: string;
|
|
48
|
+
|
|
49
|
+
@Column({ type: 'int', nullable: true })
|
|
50
|
+
emergency_balance_days: number | null;
|
|
51
|
+
|
|
52
|
+
@Column({ type: 'date', nullable: true })
|
|
53
|
+
last_credited: Date | null;
|
|
54
|
+
|
|
55
|
+
constructor(category: string, MandC_id: number, leave_type_id: number, frequency: enumFrequency, region: string, country: string, location: string, is_carryforward: boolean, carryforward_limit: number, from_date: Date, to_date: Date, reason: string, emergency_balance_days?: number|null, last_credited?: Date|null) {
|
|
56
|
+
super();
|
|
57
|
+
this.category = category;
|
|
58
|
+
this.MandC_id = MandC_id;
|
|
59
|
+
this.leave_type_id = leave_type_id;
|
|
60
|
+
this.frequency = frequency;
|
|
61
|
+
this.region = region;
|
|
62
|
+
this.country = country;
|
|
63
|
+
this.location = location;
|
|
64
|
+
this.is_carryforward = is_carryforward;
|
|
65
|
+
this.carryforward_limit = carryforward_limit;
|
|
66
|
+
this.from_date = from_date;
|
|
67
|
+
this.to_date = to_date;
|
|
68
|
+
this.reason = reason;
|
|
69
|
+
this.emergency_balance_days = emergency_balance_days ?? null;
|
|
70
|
+
this.last_credited = last_credited ?? null;
|
|
71
|
+
}
|
|
72
72
|
}
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import { Column, Entity } from "typeorm";
|
|
2
|
-
import { BaseModel } from './BaseModel';
|
|
3
|
-
|
|
4
|
-
export enum MissionTravelApprovalStatus {
|
|
5
|
-
PENDING = "Pending",
|
|
6
|
-
APPROVED = "Approved",
|
|
7
|
-
REJECTED = "Rejected",
|
|
8
|
-
RFC = "RFC", // Request for Change
|
|
9
|
-
IN_PROGRESS = "In Progress"
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@Entity({ name: 'mission_travel_approvals' })
|
|
13
|
-
export class MissionTravelApprovalDetails 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: true })
|
|
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: MissionTravelApprovalStatus, default: MissionTravelApprovalStatus.PENDING, nullable: false })
|
|
48
|
-
approval_status: MissionTravelApprovalStatus;
|
|
49
|
-
|
|
50
|
-
@Column({ type: 'boolean', default: true, nullable: false })
|
|
51
|
-
is_allowed: boolean;
|
|
52
|
-
|
|
53
|
-
@Column({ type: 'boolean', default: false, nullable: false })
|
|
54
|
-
is_reassign: boolean;
|
|
55
|
-
|
|
56
|
-
@Column({ type: 'boolean', default: true, nullable: false })
|
|
57
|
-
is_approval: boolean;
|
|
58
|
-
|
|
59
|
-
@Column({ type: 'boolean', default: false, nullable: false })
|
|
60
|
-
is_review: boolean;
|
|
61
|
-
|
|
62
|
-
constructor(
|
|
63
|
-
request_id: number,
|
|
64
|
-
service_id: number | null,
|
|
65
|
-
sub_service_id: number | null,
|
|
66
|
-
level: number,
|
|
67
|
-
approver_role_id: number,
|
|
68
|
-
department_id: number | null,
|
|
69
|
-
section_id: number | null,
|
|
70
|
-
approver_user_id: number | null,
|
|
71
|
-
delegate_user_id: number | null,
|
|
72
|
-
approved_by: number | null,
|
|
73
|
-
comment: string,
|
|
74
|
-
approval_status: MissionTravelApprovalStatus,
|
|
75
|
-
is_allowed: boolean,
|
|
76
|
-
is_reassign: boolean,
|
|
77
|
-
is_approval: boolean,
|
|
78
|
-
is_review?: boolean
|
|
79
|
-
) {
|
|
80
|
-
super();
|
|
81
|
-
this.request_id = request_id;
|
|
82
|
-
this.service_id = service_id;
|
|
83
|
-
this.sub_service_id = sub_service_id;
|
|
84
|
-
this.level = level;
|
|
85
|
-
this.approver_role_id = approver_role_id;
|
|
86
|
-
this.department_id = department_id;
|
|
87
|
-
this.section_id = section_id;
|
|
88
|
-
this.approver_user_id = approver_user_id;
|
|
89
|
-
this.delegate_user_id = delegate_user_id;
|
|
90
|
-
this.approved_by = approved_by;
|
|
91
|
-
this.comment = comment;
|
|
92
|
-
this.approval_status = approval_status;
|
|
93
|
-
this.is_allowed = is_allowed;
|
|
94
|
-
this.is_reassign = is_reassign;
|
|
95
|
-
this.is_approval = is_approval;
|
|
96
|
-
this.is_review = is_review ?? false;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
1
|
+
import { Column, Entity } from "typeorm";
|
|
2
|
+
import { BaseModel } from './BaseModel';
|
|
3
|
+
|
|
4
|
+
export enum MissionTravelApprovalStatus {
|
|
5
|
+
PENDING = "Pending",
|
|
6
|
+
APPROVED = "Approved",
|
|
7
|
+
REJECTED = "Rejected",
|
|
8
|
+
RFC = "RFC", // Request for Change
|
|
9
|
+
IN_PROGRESS = "In Progress"
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@Entity({ name: 'mission_travel_approvals' })
|
|
13
|
+
export class MissionTravelApprovalDetails 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: true })
|
|
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: MissionTravelApprovalStatus, default: MissionTravelApprovalStatus.PENDING, nullable: false })
|
|
48
|
+
approval_status: MissionTravelApprovalStatus;
|
|
49
|
+
|
|
50
|
+
@Column({ type: 'boolean', default: true, nullable: false })
|
|
51
|
+
is_allowed: boolean;
|
|
52
|
+
|
|
53
|
+
@Column({ type: 'boolean', default: false, nullable: false })
|
|
54
|
+
is_reassign: boolean;
|
|
55
|
+
|
|
56
|
+
@Column({ type: 'boolean', default: true, nullable: false })
|
|
57
|
+
is_approval: boolean;
|
|
58
|
+
|
|
59
|
+
@Column({ type: 'boolean', default: false, nullable: false })
|
|
60
|
+
is_review: boolean;
|
|
61
|
+
|
|
62
|
+
constructor(
|
|
63
|
+
request_id: number,
|
|
64
|
+
service_id: number | null,
|
|
65
|
+
sub_service_id: number | null,
|
|
66
|
+
level: number,
|
|
67
|
+
approver_role_id: number,
|
|
68
|
+
department_id: number | null,
|
|
69
|
+
section_id: number | null,
|
|
70
|
+
approver_user_id: number | null,
|
|
71
|
+
delegate_user_id: number | null,
|
|
72
|
+
approved_by: number | null,
|
|
73
|
+
comment: string,
|
|
74
|
+
approval_status: MissionTravelApprovalStatus,
|
|
75
|
+
is_allowed: boolean,
|
|
76
|
+
is_reassign: boolean,
|
|
77
|
+
is_approval: boolean,
|
|
78
|
+
is_review?: boolean
|
|
79
|
+
) {
|
|
80
|
+
super();
|
|
81
|
+
this.request_id = request_id;
|
|
82
|
+
this.service_id = service_id;
|
|
83
|
+
this.sub_service_id = sub_service_id;
|
|
84
|
+
this.level = level;
|
|
85
|
+
this.approver_role_id = approver_role_id;
|
|
86
|
+
this.department_id = department_id;
|
|
87
|
+
this.section_id = section_id;
|
|
88
|
+
this.approver_user_id = approver_user_id;
|
|
89
|
+
this.delegate_user_id = delegate_user_id;
|
|
90
|
+
this.approved_by = approved_by;
|
|
91
|
+
this.comment = comment;
|
|
92
|
+
this.approval_status = approval_status;
|
|
93
|
+
this.is_allowed = is_allowed;
|
|
94
|
+
this.is_reassign = is_reassign;
|
|
95
|
+
this.is_approval = is_approval;
|
|
96
|
+
this.is_review = is_review ?? false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|