@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.
Files changed (74) hide show
  1. package/dist/data-source.js +12 -0
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.js +17 -1
  4. package/dist/models/DiplomaticClubCardApprovalModel.d.ts +16 -0
  5. package/dist/models/DiplomaticClubCardApprovalModel.js +58 -0
  6. package/dist/models/DiplomaticClubCardAttachmentModel.d.ts +9 -0
  7. package/dist/models/DiplomaticClubCardAttachmentModel.js +44 -0
  8. package/dist/models/DiplomaticClubCardChatModel.d.ts +7 -0
  9. package/dist/models/DiplomaticClubCardChatModel.js +36 -0
  10. package/dist/models/DiplomaticClubCardMemberModel.d.ts +13 -0
  11. package/dist/models/DiplomaticClubCardMemberModel.js +60 -0
  12. package/dist/models/DiplomaticClubCardRequestModel.d.ts +33 -0
  13. package/dist/models/DiplomaticClubCardRequestModel.js +98 -0
  14. package/dist/models/DiplomaticClubCardWorkFlowModel.d.ts +12 -0
  15. package/dist/models/DiplomaticClubCardWorkFlowModel.js +42 -0
  16. package/dist/models/DiplomaticServiceDetailsModel.d.ts +20 -0
  17. package/dist/models/DiplomaticServiceDetailsModel.js +65 -0
  18. package/dist/models/DiplomaticSettingsModel.d.ts +11 -0
  19. package/dist/models/DiplomaticSettingsModel.js +59 -0
  20. package/dist/models/DiplomaticTitleModel.d.ts +12 -0
  21. package/dist/models/DiplomaticTitleModel.js +45 -0
  22. package/dist/models/DiplomaticWorkFlowModel.d.ts +1 -0
  23. package/dist/models/DiplomaticWorkFlowModel.js +4 -0
  24. package/dist/models/GatePassApprovalsModel.d.ts +33 -0
  25. package/dist/models/GatePassApprovalsModel.js +110 -0
  26. package/dist/models/GatePassAttachmentsModel.d.ts +16 -0
  27. package/dist/models/GatePassAttachmentsModel.js +60 -0
  28. package/dist/models/GatePassChatsModel.d.ts +26 -0
  29. package/dist/models/GatePassChatsModel.js +84 -0
  30. package/dist/models/GatePassRequestsModel.d.ts +46 -0
  31. package/dist/models/GatePassRequestsModel.js +148 -0
  32. package/dist/models/GatePassVisitorsModel.d.ts +27 -0
  33. package/dist/models/GatePassVisitorsModel.js +115 -0
  34. package/dist/models/GatePassWorkFlowModel.d.ts +33 -0
  35. package/dist/models/GatePassWorkFlowModel.js +93 -0
  36. package/dist/models/PassportRequestApprovalModel.d.ts +22 -0
  37. package/dist/models/PassportRequestApprovalModel.js +91 -0
  38. package/dist/models/PassportRequestAttachmentModel.d.ts +10 -0
  39. package/dist/models/PassportRequestAttachmentModel.js +54 -0
  40. package/dist/models/PassportRequestChatModel.d.ts +8 -0
  41. package/dist/models/PassportRequestChatModel.js +44 -0
  42. package/dist/models/PassportRequestDependentModel.d.ts +20 -0
  43. package/dist/models/PassportRequestDependentModel.js +85 -0
  44. package/dist/models/PassportRequestModel.d.ts +40 -0
  45. package/dist/models/PassportRequestModel.js +128 -0
  46. package/dist/models/PassportRequestWorkFlowModel.d.ts +15 -0
  47. package/dist/models/PassportRequestWorkFlowModel.js +60 -0
  48. package/dist/models/RetiredCardRequestsModel.d.ts +2 -1
  49. package/dist/models/RetiredCardRequestsModel.js +7 -2
  50. package/dist/models/SubscriptionAmountModel.d.ts +67 -0
  51. package/dist/models/SubscriptionAmountModel.js +114 -0
  52. package/package.json +1 -1
  53. package/src/data-source.ts +12 -0
  54. package/src/index.ts +11 -0
  55. package/src/models/DiplomaticClubSubscriptionMasterModel.ts +26 -26
  56. package/src/models/DiplomaticRequestsModel.ts +157 -157
  57. package/src/models/DiplomaticWorkFlowModel.ts +3 -0
  58. package/src/models/GatePassApprovalsModel.ts +98 -0
  59. package/src/models/GatePassAttachmentsModel.ts +38 -0
  60. package/src/models/GatePassChatsModel.ts +72 -0
  61. package/src/models/GatePassRequestsModel.ts +139 -0
  62. package/src/models/GatePassVisitorsModel.ts +100 -0
  63. package/src/models/GatePassWorkFlowModel.ts +66 -0
  64. package/src/models/LeaveConfigModel.ts +71 -71
  65. package/src/models/MissionTravelApprovalModel.ts +100 -100
  66. package/src/models/MissionTravelAttachmentModel.ts +56 -56
  67. package/src/models/MissionTravelChatModel.ts +52 -52
  68. package/src/models/MissionTravelPersonModel.ts +105 -105
  69. package/src/models/MissionTravelWorkflowModel.ts +54 -54
  70. package/src/models/RetiredCardRequestsModel.ts +7 -1
  71. package/dist/models/MissionTravelClassConfigModel.d.ts +0 -10
  72. package/dist/models/MissionTravelClassConfigModel.js +0 -50
  73. package/dist/models/MissionTravelPerdiemModel.d.ts +0 -10
  74. 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
+