@platform-modules/foreign-ministry 1.1.80 → 1.1.82

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 (136) hide show
  1. package/dist/data-source.js +33 -15
  2. package/dist/index.d.ts +25 -7
  3. package/dist/index.js +40 -7
  4. package/dist/models/DiplomaticTitlesMasterModel.d.ts +3 -7
  5. package/dist/models/DiplomaticTitlesMasterModel.js +9 -16
  6. package/dist/models/EarlyCheckoutBalanceModel.d.ts +7 -0
  7. package/dist/models/{DiplomaticClubCardChatModel.js → EarlyCheckoutBalanceModel.js} +21 -18
  8. package/dist/models/EarlyCheckoutConfigModel.d.ts +18 -0
  9. package/dist/models/EarlyCheckoutConfigModel.js +80 -0
  10. package/dist/models/EarlyCheckoutTransactionModel.d.ts +19 -0
  11. package/dist/models/EarlyCheckoutTransactionModel.js +66 -0
  12. package/dist/models/FinancialApprovalsModel.d.ts +1 -0
  13. package/dist/models/FinancialApprovalsModel.js +4 -0
  14. package/dist/models/FinancialGradeModel.d.ts +4 -3
  15. package/dist/models/FinancialGradeModel.js +12 -7
  16. package/dist/models/GeneralServiceApprovalsModel.d.ts +4 -1
  17. package/dist/models/GeneralServiceApprovalsModel.js +9 -0
  18. package/dist/models/LeaveApprovalsModel.d.ts +2 -1
  19. package/dist/models/LeaveApprovalsModel.js +7 -2
  20. package/dist/models/LeaveBalanceModel.d.ts +8 -0
  21. package/dist/models/{PassportRequestChatModel.js → LeaveBalanceModel.js} +23 -23
  22. package/dist/models/LeaveConfigGradesModel.d.ts +19 -0
  23. package/dist/models/LeaveConfigGradesModel.js +100 -0
  24. package/dist/models/LeaveConfigModel.d.ts +20 -0
  25. package/dist/models/LeaveConfigModel.js +90 -0
  26. package/dist/models/LeaveTransactionModel.d.ts +20 -0
  27. package/dist/models/LeaveTransactionModel.js +71 -0
  28. package/dist/models/LeaveTypesModel.d.ts +7 -1
  29. package/dist/models/LeaveTypesModel.js +20 -5
  30. package/dist/models/M&CMasterModel.d.ts +9 -0
  31. package/dist/models/M&CMasterModel.js +49 -0
  32. package/dist/models/ProfileUpdateRequestsModel.d.ts +106 -0
  33. package/dist/models/ProfileUpdateRequestsModel.js +409 -0
  34. package/dist/models/StationeryMaterialMasterModel.d.ts +11 -0
  35. package/dist/models/StationeryMaterialMasterModel.js +56 -0
  36. package/dist/models/StationeryRequestsModel.d.ts +27 -0
  37. package/dist/models/StationeryRequestsModel.js +93 -0
  38. package/dist/models/StayAfterHoursBalanceModel.d.ts +7 -0
  39. package/dist/models/StayAfterHoursBalanceModel.js +39 -0
  40. package/dist/models/StayAfterHoursTransactionModel.d.ts +19 -0
  41. package/dist/models/StayAfterHoursTransactionModel.js +66 -0
  42. package/dist/models/TelephoneDirectoryModel.d.ts +3 -2
  43. package/dist/models/TelephoneDirectoryModel.js +11 -6
  44. package/dist/models/TransferMissionApprovalModel.d.ts +1 -0
  45. package/dist/models/TransferMissionApprovalModel.js +4 -0
  46. package/dist/models/UpdateAttendanceApprovalModel.d.ts +1 -0
  47. package/dist/models/UpdateAttendanceApprovalModel.js +4 -0
  48. package/dist/models/UserEducationDetailsModel.d.ts +12 -0
  49. package/dist/models/UserEducationDetailsModel.js +44 -0
  50. package/dist/models/UserEmploymentDetailsModel.d.ts +50 -0
  51. package/dist/models/UserEmploymentDetailsModel.js +193 -0
  52. package/dist/models/UserPersonalDetailsModel.d.ts +48 -0
  53. package/dist/models/UserPersonalDetailsModel.js +185 -0
  54. package/dist/models/user.d.ts +2 -1
  55. package/dist/models/user.js +7 -2
  56. package/package.json +1 -1
  57. package/src/data-source.ts +37 -17
  58. package/src/index.ts +25 -7
  59. package/src/models/DiplomaticTitlesMasterModel.ts +9 -20
  60. package/src/models/EarlyCheckoutBalanceModel.ts +22 -0
  61. package/src/models/EarlyCheckoutConfigModel.ts +57 -0
  62. package/src/models/EarlyCheckoutTransactionModel.ts +53 -0
  63. package/src/models/FinancialApprovalsModel.ts +4 -0
  64. package/src/models/FinancialGradeModel.ts +13 -8
  65. package/src/models/GeneralServiceApprovalsModel.ts +10 -1
  66. package/src/models/LeaveApprovalsModel.ts +5 -1
  67. package/src/models/LeaveBalanceModel.ts +26 -0
  68. package/src/models/LeaveConfigGradesModel.Ts +72 -0
  69. package/src/models/LeaveConfigModel.ts +64 -0
  70. package/src/models/LeaveTransactionModel.ts +58 -0
  71. package/src/models/LeaveTypesModel.ts +27 -11
  72. package/src/models/M&CMasterModel.ts +37 -0
  73. package/src/models/ProfileUpdateRequestsModel.ts +317 -0
  74. package/src/models/StationeryMaterialMasterModel.ts +35 -0
  75. package/src/models/StationeryRequestsModel.ts +65 -0
  76. package/src/models/StayAfterHoursBalanceModel.ts +22 -0
  77. package/src/models/StayAfterHoursTransactionModel.ts +53 -0
  78. package/src/models/TelephoneDirectoryModel.ts +8 -4
  79. package/src/models/TransferMissionApprovalModel.ts +3 -0
  80. package/src/models/TransferMissionRequestModel.ts +1 -0
  81. package/src/models/UpdateAttendanceApprovalModel.ts +3 -0
  82. package/src/models/UserEducationDetailsModel.ts +26 -0
  83. package/src/models/UserEmploymentDetailsModel.ts +141 -0
  84. package/src/models/UserPersonalDetailsModel.ts +137 -0
  85. package/src/models/user.ts +5 -0
  86. package/dist/models/DiplomaticApprovalsModel.d.ts +0 -24
  87. package/dist/models/DiplomaticApprovalsModel.js +0 -94
  88. package/dist/models/DiplomaticAttachmentsModel.d.ts +0 -11
  89. package/dist/models/DiplomaticAttachmentsModel.js +0 -53
  90. package/dist/models/DiplomaticChatsModel.d.ts +0 -20
  91. package/dist/models/DiplomaticChatsModel.js +0 -70
  92. package/dist/models/DiplomaticClubCardApprovalModel.d.ts +0 -16
  93. package/dist/models/DiplomaticClubCardApprovalModel.js +0 -58
  94. package/dist/models/DiplomaticClubCardAttachmentModel.d.ts +0 -9
  95. package/dist/models/DiplomaticClubCardAttachmentModel.js +0 -44
  96. package/dist/models/DiplomaticClubCardChatModel.d.ts +0 -7
  97. package/dist/models/DiplomaticClubCardMemberModel.d.ts +0 -13
  98. package/dist/models/DiplomaticClubCardMemberModel.js +0 -60
  99. package/dist/models/DiplomaticClubCardMembersModel.d.ts +0 -26
  100. package/dist/models/DiplomaticClubCardMembersModel.js +0 -85
  101. package/dist/models/DiplomaticClubCardRequestModel.d.ts +0 -33
  102. package/dist/models/DiplomaticClubCardRequestModel.js +0 -98
  103. package/dist/models/DiplomaticClubCardWorkFlowModel.d.ts +0 -12
  104. package/dist/models/DiplomaticClubCardWorkFlowModel.js +0 -42
  105. package/dist/models/DiplomaticClubSubscriptionMasterModel.d.ts +0 -12
  106. package/dist/models/DiplomaticClubSubscriptionMasterModel.js +0 -64
  107. package/dist/models/DiplomaticRequestsModel.d.ts +0 -54
  108. package/dist/models/DiplomaticRequestsModel.js +0 -186
  109. package/dist/models/DiplomaticServiceDetailsModel.d.ts +0 -20
  110. package/dist/models/DiplomaticServiceDetailsModel.js +0 -65
  111. package/dist/models/DiplomaticSettingsModel.d.ts +0 -11
  112. package/dist/models/DiplomaticSettingsModel.js +0 -59
  113. package/dist/models/DiplomaticTitleModel.d.ts +0 -12
  114. package/dist/models/DiplomaticTitleModel.js +0 -45
  115. package/dist/models/DiplomaticWorkFlowModel.d.ts +0 -18
  116. package/dist/models/DiplomaticWorkFlowModel.js +0 -69
  117. package/dist/models/PassportRequestApprovalModel.d.ts +0 -22
  118. package/dist/models/PassportRequestApprovalModel.js +0 -91
  119. package/dist/models/PassportRequestAttachmentModel.d.ts +0 -10
  120. package/dist/models/PassportRequestAttachmentModel.js +0 -54
  121. package/dist/models/PassportRequestChatModel.d.ts +0 -8
  122. package/dist/models/PassportRequestDependentModel.d.ts +0 -20
  123. package/dist/models/PassportRequestDependentModel.js +0 -85
  124. package/dist/models/PassportRequestModel.d.ts +0 -40
  125. package/dist/models/PassportRequestModel.js +0 -128
  126. package/dist/models/PassportRequestWorkFlowModel.d.ts +0 -15
  127. package/dist/models/PassportRequestWorkFlowModel.js +0 -60
  128. package/dist/models/SubscriptionAmountModel.d.ts +0 -67
  129. package/dist/models/SubscriptionAmountModel.js +0 -114
  130. package/src/models/DiplomaticApprovalsModel.ts +0 -77
  131. package/src/models/DiplomaticAttachmentsModel.ts +0 -37
  132. package/src/models/DiplomaticChatsModel.ts +0 -53
  133. package/src/models/DiplomaticClubCardMembersModel.ts +0 -71
  134. package/src/models/DiplomaticClubSubscriptionMasterModel.ts +0 -50
  135. package/src/models/DiplomaticRequestsModel.ts +0 -154
  136. package/src/models/DiplomaticWorkFlowModel.ts +0 -53
@@ -0,0 +1,65 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum StationeryRequestStatus {
5
+ PENDING = "Pending",
6
+ ASSIGNED = "Assigned",
7
+ IN_PROGRESS = "In Progress",
8
+ APPROVED = "Approved",
9
+ REJECTED = "Rejected",
10
+ COMPLETED = "Completed"
11
+ }
12
+
13
+
14
+ @Entity({ name: 'stationery_requests' })
15
+ export class StationeryRequests extends BaseModel {
16
+ @Column({ type: 'int', nullable: true })
17
+ req_user_department_id: number | null;
18
+
19
+ @Column({ type: 'int', nullable: true })
20
+ req_user_section_id: number | null;
21
+
22
+ @Column({ type: 'int', nullable: true })
23
+ service_id: number | null;
24
+
25
+ @Column({ type: 'int', nullable: true })
26
+ sub_service_id: number | null;
27
+
28
+ @Column({ type: 'int', nullable: false })
29
+ user_id: number;
30
+
31
+ @Column({ type: 'date', nullable: false })
32
+ date_of_request_preparation: Date;
33
+
34
+ @Column({ type: 'varchar', length: 255, nullable: false })
35
+ office: string;
36
+
37
+ @Column({ type: 'varchar', length: 255, nullable: false })
38
+ material_type: string;
39
+
40
+ @Column({ type: 'varchar', length: 255, nullable: false })
41
+ material_name: string;
42
+
43
+ @Column({ type: 'int', nullable: false })
44
+ quantity_required: number;
45
+
46
+ @Column({ type: 'varchar', length: 500, nullable: true })
47
+ comments: string | null;
48
+
49
+ @Column({ type: 'enum', enum: StationeryRequestStatus, default: StationeryRequestStatus.PENDING, nullable: false })
50
+ status: StationeryRequestStatus;
51
+
52
+ @Column({ type: 'varchar', nullable: true })
53
+ workflow_execution_id: string | null;
54
+
55
+ // Business logic fields
56
+ @Column({ type: 'boolean', default: false, nullable: true })
57
+ stock_available: boolean | null; // Whether stock is available in Stores Office
58
+
59
+ @Column({ type: 'varchar', length: 100, nullable: true })
60
+ po_number: string | null; // Purchase Order number from Finance
61
+
62
+ @Column({ type: 'date', nullable: true })
63
+ stock_available_date: Date | null; // When stock becomes available
64
+ }
65
+
@@ -0,0 +1,22 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'stay_after_hours_balance' })
5
+ export class StayAfterHoursBalance extends BaseModel {
6
+
7
+ @Column({ nullable: true })
8
+ user_id: string;
9
+
10
+ @Column({ nullable: true })
11
+ balance: number;
12
+
13
+ @Column({ nullable: true })
14
+ total_balance: number;
15
+
16
+ constructor(user_id: string, balance: number, total_balance: number) {
17
+ super();
18
+ this.user_id = user_id;
19
+ this.balance = balance;
20
+ this.total_balance = total_balance;
21
+ }
22
+ }
@@ -0,0 +1,53 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum StayAfterHoursTransactionStatus {
5
+ GRANTED = 'GRANTED',
6
+ TAKEN = 'TAKEN',
7
+ ADJUSTMENT = 'ADJUSTMENT',
8
+ CARRY_FORWARD = 'CARRY_FORWARD',
9
+ ENCASHMENT = 'ENCASHMENT',
10
+ AVAILED = 'AVAILED',
11
+ ELAPSED = 'ELAPSED'
12
+ }
13
+
14
+ //This model is used to store early checkout transactions for users
15
+ @Entity({ name: 'stay_after_hours_transactions' })
16
+ export class StayAfterHoursTransaction extends BaseModel {
17
+
18
+ @Column({ type: 'int', nullable: false })
19
+ user_id: number;
20
+
21
+ @Column({ type: 'varchar', nullable: true })
22
+ hours_count: string;
23
+
24
+ @Column({ type: 'date', nullable: true })
25
+ from_date: Date;
26
+
27
+ @Column({ type: 'date', nullable: true })
28
+ to_date: Date;
29
+
30
+ @Column({ type: 'int', nullable: true })
31
+ year: number;
32
+
33
+ @Column({ type: 'varchar', nullable: false })
34
+ status: StayAfterHoursTransactionStatus;
35
+
36
+ constructor(
37
+ user_id: number,
38
+ hours_count: string,
39
+ from_date: Date,
40
+ to_date: Date,
41
+ year: number,
42
+ status: StayAfterHoursTransactionStatus
43
+ ) {
44
+ super();
45
+ this.user_id = user_id;
46
+ this.hours_count = hours_count;
47
+ this.from_date = from_date;
48
+ this.to_date = to_date;
49
+ this.year = year;
50
+ this.status = status;
51
+ }
52
+ }
53
+
@@ -19,8 +19,11 @@ export class TelephoneDirectory extends BaseModel {
19
19
  @Column({ type: "varchar", length: 255, nullable: true })
20
20
  diplomatic_title: string; // Diplomatic Title
21
21
 
22
- @Column({ type: "varchar", length: 255, nullable: true })
23
- embassy_name: string; // Embassy name for M&C wise search (for Embassy category)
22
+ @Column({ type: "int", nullable: true })
23
+ embassy_id: number | null; // Embassy ID reference (for Embassy category)
24
+
25
+ @Column({ type: "text", nullable: true })
26
+ contextual_search: string | null; // Contextual search field for direct searching across multiple fields
24
27
 
25
28
  // Email & Contact Information
26
29
  @Column({ type: "varchar", length: 255, nullable: false })
@@ -60,13 +63,14 @@ export class TelephoneDirectory extends BaseModel {
60
63
  @Column({ type: "varchar", length: 500, nullable: true })
61
64
  photo_url: string;
62
65
 
63
- constructor(category?: "FM" | "Embassy", name?: string, position?: string, diplomatic_title?: string, embassy_name?: string, email?: string, contact_number?: string, extension_number?: string, location?: string, department_id?: number, employee_id?: number, city?: string, state?: string, zip_code?: string, country?: string, photo_url?: string) {
66
+ constructor(category?: "FM" | "Embassy", name?: string, position?: string, diplomatic_title?: string, embassy_id?: number | null, contextual_search?: string | null, email?: string, contact_number?: string, extension_number?: string, location?: string, department_id?: number, employee_id?: number, city?: string, state?: string, zip_code?: string, country?: string, photo_url?: string) {
64
67
  super();
65
68
  this.category = category || "FM";
66
69
  this.name = name || "";
67
70
  this.position = position || "";
68
71
  this.diplomatic_title = diplomatic_title || "";
69
- this.embassy_name = embassy_name || "";
72
+ this.embassy_id = embassy_id || null;
73
+ this.contextual_search = contextual_search || null;
70
74
  this.email = email || "";
71
75
  this.contact_number = contact_number || "";
72
76
  this.extension_number = extension_number || "";
@@ -37,6 +37,9 @@ export class TransferMissionApprovalDetails extends BaseModel {
37
37
  @Column({ type: 'integer', nullable: true })
38
38
  delegate_user_id: number | null;
39
39
 
40
+ @Column({ type: 'integer', nullable: true })
41
+ group_id: number | null;
42
+
40
43
  @Column({ type: 'integer', nullable: true })
41
44
  approved_by: number | null;
42
45
 
@@ -90,5 +90,6 @@ export class TransferMissionRequests extends BaseModel {
90
90
 
91
91
  @Column({ type: 'text', nullable: true })
92
92
  missions_you_would_like_to_work_in: string | null;
93
+
93
94
  }
94
95
 
@@ -45,6 +45,9 @@ export class UpdateAttendanceApprovalDetails extends BaseModel {
45
45
 
46
46
  @Column({ type: 'enum', enum: UpdateAttendanceApprovalStatus, default: UpdateAttendanceApprovalStatus.PENDING, nullable: false })
47
47
  approval_status: UpdateAttendanceApprovalStatus;
48
+
49
+ @Column({ type: 'boolean', default: true, nullable: false })
50
+ is_allowed: boolean;
48
51
  }
49
52
 
50
53
 
@@ -0,0 +1,26 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ /**
5
+ * User Education Details - only fields from business requirements
6
+ * Linked by user_id (not request_id)
7
+ */
8
+ @Entity({ name: 'user_education_details' })
9
+ export class UserEducationDetails extends BaseModel {
10
+ @Column({ type: 'int', nullable: false })
11
+ user_id: number; // Foreign key to users table
12
+
13
+ // Education Information
14
+ @Column({ type: 'date', nullable: true })
15
+ study_start_date: Date | null;
16
+
17
+ @Column({ type: 'date', nullable: true })
18
+ study_end_date: Date | null;
19
+
20
+ // Training Information
21
+ @Column({ type: 'date', nullable: true })
22
+ training_course_start_date: Date | null;
23
+
24
+ @Column({ type: 'date', nullable: true })
25
+ training_course_end_date: Date | null;
26
+ }
@@ -0,0 +1,141 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ /**
5
+ * User Employment Details - only fields from business requirements
6
+ * Linked by user_id (not request_id)
7
+ * When profile update is approved, data from this table updates users table
8
+ */
9
+ @Entity({ name: 'user_employment_details' })
10
+ export class UserEmploymentDetails extends BaseModel {
11
+ @Column({ type: 'int', nullable: false })
12
+ user_id: number; // Foreign key to users table
13
+
14
+ // Job Information
15
+ @Column({ type: 'varchar', length: 255, nullable: true })
16
+ job_title: string | null;
17
+
18
+ @Column({ type: 'date', nullable: true })
19
+ date_of_decree_issuance: Date | null;
20
+
21
+ @Column({ type: 'varchar', length: 100, nullable: true })
22
+ civil_service_number: string | null;
23
+
24
+ @Column({ type: 'varchar', length: 100, nullable: true })
25
+ information_number: string | null;
26
+
27
+ @Column({ type: 'varchar', length: 100, nullable: true })
28
+ manpower_number: string | null;
29
+
30
+ @Column({ type: 'varchar', length: 100, nullable: true })
31
+ computer_number: string | null;
32
+
33
+ @Column({ type: 'boolean', nullable: true })
34
+ contract_employee: boolean | null;
35
+
36
+ @Column({ type: 'varchar', length: 255, nullable: true })
37
+ nature_of_work: string | null;
38
+
39
+ @Column({ type: 'date', nullable: true })
40
+ retirement_date: Date | null;
41
+
42
+ @Column({ type: 'varchar', length: 255, nullable: true })
43
+ proposed_position: string | null;
44
+
45
+ @Column({ type: 'varchar', length: 100, nullable: true })
46
+ proposed_financial_grade: string | null;
47
+
48
+ @Column({ type: 'date', nullable: true })
49
+ secondment_start_date: Date | null;
50
+
51
+ @Column({ type: 'date', nullable: true })
52
+ secondment_end_date: Date | null;
53
+
54
+ @Column({ type: 'varchar', length: 100, nullable: true })
55
+ disability_type: string | null;
56
+
57
+ @Column({ type: 'date', nullable: true })
58
+ retirement_start_date: Date | null;
59
+
60
+ @Column({ type: 'date', nullable: true })
61
+ contract_end_date: Date | null;
62
+
63
+ @Column({ type: 'varchar', length: 255, nullable: true })
64
+ job_type_group: string | null;
65
+
66
+ // Transfer Information
67
+ @Column({ type: 'varchar', length: 255, nullable: true })
68
+ entity_transferred_from: string | null;
69
+
70
+ @Column({ type: 'date', nullable: true })
71
+ date_of_transfer: Date | null; // Date of Transfer (from)
72
+
73
+ @Column({ type: 'varchar', length: 255, nullable: true })
74
+ entity_transferred_to: string | null;
75
+
76
+ @Column({ type: 'date', nullable: true })
77
+ date_of_transfer_to: Date | null; // Date of Transfer (to)
78
+
79
+ @Column({ type: 'text', nullable: true })
80
+ job_description: string | null;
81
+
82
+ // Appointment Information
83
+ @Column({ type: 'varchar', length: 255, nullable: true })
84
+ country_appointment: string | null;
85
+
86
+ @Column({ type: 'date', nullable: true })
87
+ date_of_appointment: Date | null;
88
+
89
+ @Column({ type: 'varchar', length: 100, nullable: true })
90
+ appointment_grade: string | null;
91
+
92
+ @Column({ type: 'varchar', length: 100, nullable: true })
93
+ type_of_appointment: string | null;
94
+
95
+ @Column({ type: 'varchar', length: 100, nullable: true })
96
+ unit_code: string | null;
97
+
98
+ @Column({ type: 'boolean', nullable: true })
99
+ mc_work: boolean | null; // M&C Work
100
+
101
+ @Column({ type: 'varchar', length: 255, nullable: true })
102
+ office: string | null;
103
+
104
+ @Column({ type: 'varchar', length: 255, nullable: true })
105
+ governorate_name: string | null;
106
+
107
+ @Column({ type: 'varchar', length: 255, nullable: true })
108
+ department: string | null;
109
+
110
+ @Column({ type: 'varchar', length: 255, nullable: true })
111
+ works_in_department: string | null;
112
+
113
+ // Mission Information
114
+ @Column({ type: 'varchar', length: 255, nullable: true })
115
+ full_name_of_mission: string | null;
116
+
117
+ @Column({ type: 'varchar', length: 255, nullable: true })
118
+ mission: string | null;
119
+
120
+ @Column({ type: 'text', nullable: true })
121
+ description_of_mission: string | null;
122
+
123
+ @Column({ type: 'date', nullable: true })
124
+ date_of_last_transfer_to_mission: Date | null;
125
+
126
+ @Column({ type: 'date', nullable: true })
127
+ date_of_last_transfer_from_mission: Date | null;
128
+
129
+ @Column({ type: 'boolean', nullable: true })
130
+ diplomat: boolean | null;
131
+
132
+ // Performance and Termination
133
+ @Column({ type: 'varchar', length: 100, nullable: true })
134
+ efficiency_rating_for_the_year_month: string | null; // Efficiency rating for the year/month
135
+
136
+ @Column({ type: 'date', nullable: true })
137
+ retirement_termination_of_service_date: Date | null; // Retirement/Termination of Service Date
138
+
139
+ @Column({ type: 'text', nullable: true })
140
+ reason_for_leaving_service: string | null;
141
+ }
@@ -0,0 +1,137 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ /**
5
+ * User Personal Details - only fields from business requirements
6
+ * Linked by user_id (not request_id)
7
+ * When profile update is approved, data from this table updates users table
8
+ */
9
+ @Entity({ name: 'user_personal_details' })
10
+ export class UserPersonalDetails extends BaseModel {
11
+ @Column({ type: 'int', nullable: false })
12
+ user_id: number; // Foreign key to users table
13
+
14
+ // Name fields
15
+ @Column({ type: 'varchar', length: 255, nullable: true })
16
+ title: string | null;
17
+
18
+ @Column({ type: 'varchar', length: 255, nullable: true })
19
+ first_name: string | null;
20
+
21
+ @Column({ type: 'varchar', length: 255, nullable: true })
22
+ second_name: string | null;
23
+
24
+ @Column({ type: 'varchar', length: 255, nullable: true })
25
+ third_name: string | null;
26
+
27
+ @Column({ type: 'varchar', length: 255, nullable: true })
28
+ fourth_name: string | null;
29
+
30
+ @Column({ type: 'varchar', length: 255, nullable: true })
31
+ family_name_tribe: string | null;
32
+
33
+ @Column({ type: 'varchar', length: 255, nullable: true })
34
+ previous_name: string | null;
35
+
36
+ // Personal Information
37
+ @Column({ type: 'varchar', length: 100, nullable: true })
38
+ religion: string | null;
39
+
40
+ @Column({ type: 'varchar', length: 100, nullable: true })
41
+ sect: string | null;
42
+
43
+ @Column({ type: 'date', nullable: true })
44
+ date_of_birth: Date | null;
45
+
46
+ @Column({ type: 'varchar', length: 255, nullable: true })
47
+ place_of_birth: string | null;
48
+
49
+ @Column({ type: 'varchar', length: 100, nullable: true })
50
+ nationality: string | null;
51
+
52
+ @Column({ type: 'varchar', length: 50, nullable: true })
53
+ gender: string | null;
54
+
55
+ @Column({ type: 'varchar', length: 50, nullable: true })
56
+ marital_status: string | null;
57
+
58
+ @Column({ type: 'int', nullable: true })
59
+ number_of_dependents: number | null;
60
+
61
+ // Passport Information
62
+ @Column({ type: 'varchar', length: 100, nullable: true })
63
+ passport_number: string | null;
64
+
65
+ @Column({ type: 'varchar', length: 50, nullable: true })
66
+ passport_type: string | null;
67
+
68
+ @Column({ type: 'date', nullable: true })
69
+ issue_date: Date | null; // Passport Issue Date
70
+
71
+ @Column({ type: 'varchar', length: 255, nullable: true })
72
+ place_of_issue: string | null; // Passport Place of Issue
73
+
74
+ @Column({ type: 'date', nullable: true })
75
+ expiry_date: Date | null; // Passport Expiry Date
76
+
77
+ // ID Card Information
78
+ @Column({ type: 'varchar', length: 100, nullable: true })
79
+ id_card_number: string | null;
80
+
81
+ @Column({ type: 'varchar', length: 255, nullable: true })
82
+ id_card_place_of_issue: string | null;
83
+
84
+ @Column({ type: 'date', nullable: true })
85
+ id_card_expiry_date: Date | null;
86
+
87
+ // Address Information
88
+ @Column({ type: 'text', nullable: true })
89
+ permanent_address: string | null;
90
+
91
+ @Column({ type: 'varchar', length: 255, nullable: true })
92
+ governorate_wilaya: string | null;
93
+
94
+ @Column({ type: 'varchar', length: 100, nullable: true })
95
+ po_box: string | null; // P.O. Box
96
+
97
+ @Column({ type: 'varchar', length: 50, nullable: true })
98
+ zip_code: string | null;
99
+
100
+ @Column({ type: 'varchar', length: 100, nullable: true })
101
+ house_number: string | null;
102
+
103
+ @Column({ type: 'varchar', length: 100, nullable: true })
104
+ railway_number: string | null;
105
+
106
+ @Column({ type: 'varchar', length: 255, nullable: true })
107
+ governorate: string | null;
108
+
109
+ @Column({ type: 'varchar', length: 255, nullable: true })
110
+ wilayat: string | null;
111
+
112
+ @Column({ type: 'varchar', length: 255, nullable: true })
113
+ locality: string | null;
114
+
115
+ @Column({ type: 'varchar', length: 100, nullable: true })
116
+ country: string | null;
117
+
118
+ // Contact Information
119
+ @Column({ type: 'varchar', length: 50, nullable: true })
120
+ phone_number: string | null;
121
+
122
+ @Column({ type: 'varchar', length: 50, nullable: true })
123
+ fax_number: string | null;
124
+
125
+ @Column({ type: 'varchar', length: 255, nullable: true })
126
+ email: string | null;
127
+
128
+ @Column({ type: 'varchar', length: 255, nullable: true })
129
+ email_address_personal: string | null; // Email Address (Personal)
130
+
131
+ // Additional Personal Information
132
+ @Column({ type: 'varchar', length: 255, nullable: true })
133
+ sheikh_name: string | null; // Sheikh's Name
134
+
135
+ @Column({ type: 'varchar', length: 500, nullable: true })
136
+ photo: string | null;
137
+ }
@@ -132,6 +132,9 @@ export class User extends BaseModel {
132
132
  @Column({ type: "enum", enum: ["FM", "Embassy"], nullable: false, default: "FM" })
133
133
  category: "FM" | "Embassy"; // Mandatory
134
134
 
135
+ @Column({ type: "int", nullable: true , default: 0})
136
+ mandc_number: number;
137
+
135
138
  constructor(
136
139
  employee_id?: number,
137
140
  employee_name?: string,
@@ -175,6 +178,7 @@ export class User extends BaseModel {
175
178
  children2_name?: string,
176
179
  language_preferences?: string,
177
180
  category?: "FM" | "Embassy",
181
+ mandc_number?: number,
178
182
  ) {
179
183
  super();
180
184
  this.employee_id = employee_id;
@@ -219,5 +223,6 @@ export class User extends BaseModel {
219
223
  this.children2_name = children2_name;
220
224
  this.language_preferences = language_preferences;
221
225
  this.category = category || "FM";
226
+ this.mandc_number = mandc_number || 0;
222
227
  }
223
228
  }
@@ -1,24 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- import { DiplomaticRequests } from "./DiplomaticRequestsModel";
3
- export declare enum DiplomaticApprovalStatus {
4
- PENDING = "Pending",
5
- APPROVED = "Approved",
6
- REJECTED = "Rejected",
7
- IN_PROGRESS = "In Progress"
8
- }
9
- export declare class DiplomaticApprovals extends BaseModel {
10
- diplomatic_request_id: number;
11
- level: number;
12
- approver_user_id: number | null;
13
- approver_role_id: number;
14
- comment: string | null;
15
- approval_status: DiplomaticApprovalStatus;
16
- action_date: Date;
17
- department_id: number | null;
18
- section_id: number | null;
19
- approved_by: number | null;
20
- delegate_user_id: number | null;
21
- is_allowed: boolean;
22
- diplomaticRequest?: DiplomaticRequests;
23
- constructor(diplomatic_request_id: number, level: number, approver_role_id: number, approval_status: DiplomaticApprovalStatus, department_id: number | null, section_id: number | null, approved_by: number | null, delegate_user_id: number | null, is_allowed?: boolean);
24
- }
@@ -1,94 +0,0 @@
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.DiplomaticApprovals = exports.DiplomaticApprovalStatus = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const BaseModel_1 = require("./BaseModel");
15
- const DiplomaticRequestsModel_1 = require("./DiplomaticRequestsModel");
16
- var DiplomaticApprovalStatus;
17
- (function (DiplomaticApprovalStatus) {
18
- DiplomaticApprovalStatus["PENDING"] = "Pending";
19
- DiplomaticApprovalStatus["APPROVED"] = "Approved";
20
- DiplomaticApprovalStatus["REJECTED"] = "Rejected";
21
- DiplomaticApprovalStatus["IN_PROGRESS"] = "In Progress";
22
- })(DiplomaticApprovalStatus || (exports.DiplomaticApprovalStatus = DiplomaticApprovalStatus = {}));
23
- let DiplomaticApprovals = class DiplomaticApprovals extends BaseModel_1.BaseModel {
24
- constructor(diplomatic_request_id, level, approver_role_id, approval_status, department_id, section_id, approved_by, delegate_user_id, is_allowed = true) {
25
- super();
26
- this.diplomatic_request_id = diplomatic_request_id;
27
- this.level = level;
28
- this.approver_role_id = approver_role_id;
29
- this.approval_status = approval_status;
30
- this.department_id = department_id;
31
- this.section_id = section_id;
32
- this.approved_by = approved_by;
33
- this.delegate_user_id = delegate_user_id;
34
- this.is_allowed = is_allowed;
35
- }
36
- };
37
- exports.DiplomaticApprovals = DiplomaticApprovals;
38
- __decorate([
39
- (0, typeorm_1.Column)({ type: 'int' }),
40
- __metadata("design:type", Number)
41
- ], DiplomaticApprovals.prototype, "diplomatic_request_id", void 0);
42
- __decorate([
43
- (0, typeorm_1.Column)({ type: 'int' }),
44
- __metadata("design:type", Number)
45
- ], DiplomaticApprovals.prototype, "level", void 0);
46
- __decorate([
47
- (0, typeorm_1.Column)({ type: 'int', nullable: true }),
48
- __metadata("design:type", Object)
49
- ], DiplomaticApprovals.prototype, "approver_user_id", void 0);
50
- __decorate([
51
- (0, typeorm_1.Column)({ type: 'int' }),
52
- __metadata("design:type", Number)
53
- ], DiplomaticApprovals.prototype, "approver_role_id", void 0);
54
- __decorate([
55
- (0, typeorm_1.Column)({ type: 'text', nullable: true }),
56
- __metadata("design:type", Object)
57
- ], DiplomaticApprovals.prototype, "comment", void 0);
58
- __decorate([
59
- (0, typeorm_1.Column)({ type: 'enum', enum: DiplomaticApprovalStatus, default: DiplomaticApprovalStatus.PENDING }),
60
- __metadata("design:type", String)
61
- ], DiplomaticApprovals.prototype, "approval_status", void 0);
62
- __decorate([
63
- (0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
64
- __metadata("design:type", Date)
65
- ], DiplomaticApprovals.prototype, "action_date", void 0);
66
- __decorate([
67
- (0, typeorm_1.Column)({ type: 'int', nullable: true }),
68
- __metadata("design:type", Object)
69
- ], DiplomaticApprovals.prototype, "department_id", void 0);
70
- __decorate([
71
- (0, typeorm_1.Column)({ type: 'int', nullable: true }),
72
- __metadata("design:type", Object)
73
- ], DiplomaticApprovals.prototype, "section_id", void 0);
74
- __decorate([
75
- (0, typeorm_1.Column)({ type: 'int', nullable: true }),
76
- __metadata("design:type", Object)
77
- ], DiplomaticApprovals.prototype, "approved_by", void 0);
78
- __decorate([
79
- (0, typeorm_1.Column)({ type: 'int', nullable: true }),
80
- __metadata("design:type", Object)
81
- ], DiplomaticApprovals.prototype, "delegate_user_id", void 0);
82
- __decorate([
83
- (0, typeorm_1.Column)({ type: 'boolean', default: true, nullable: false }),
84
- __metadata("design:type", Boolean)
85
- ], DiplomaticApprovals.prototype, "is_allowed", void 0);
86
- __decorate([
87
- (0, typeorm_1.ManyToOne)(() => DiplomaticRequestsModel_1.DiplomaticRequests, dr => dr.approvals),
88
- (0, typeorm_1.JoinColumn)({ name: 'diplomatic_request_id' }),
89
- __metadata("design:type", DiplomaticRequestsModel_1.DiplomaticRequests)
90
- ], DiplomaticApprovals.prototype, "diplomaticRequest", void 0);
91
- exports.DiplomaticApprovals = DiplomaticApprovals = __decorate([
92
- (0, typeorm_1.Entity)({ name: 'diplomatic_approvals' }),
93
- __metadata("design:paramtypes", [Number, Number, Number, String, Object, Object, Object, Object, Boolean])
94
- ], DiplomaticApprovals);
@@ -1,11 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- import { DiplomaticRequests } from "./DiplomaticRequestsModel";
3
- export declare class DiplomaticAttachments extends BaseModel {
4
- diplomatic_request_id: number;
5
- file_url: string;
6
- file_name: string;
7
- file_type: string;
8
- file_size: number | null;
9
- diplomaticRequest?: DiplomaticRequests;
10
- constructor(diplomatic_request_id: number, file_url: string, file_name: string);
11
- }