@platform-modules/foreign-ministry 1.1.102 → 1.1.103

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 (144) hide show
  1. package/dist/data-source.js +38 -14
  2. package/dist/index.d.ts +28 -7
  3. package/dist/index.js +43 -7
  4. package/dist/models/CountryMasterModel.d.ts +11 -0
  5. package/dist/models/CountryMasterModel.js +55 -0
  6. package/dist/models/DiplomaticTitlesMasterModel.d.ts +3 -7
  7. package/dist/models/DiplomaticTitlesMasterModel.js +9 -16
  8. package/dist/models/EarlyCheckoutBalanceModel.d.ts +7 -0
  9. package/dist/models/{DiplomaticClubCardChatModel.js → EarlyCheckoutBalanceModel.js} +21 -18
  10. package/dist/models/EarlyCheckoutConfigModel.d.ts +18 -0
  11. package/dist/models/EarlyCheckoutConfigModel.js +80 -0
  12. package/dist/models/EarlyCheckoutTransactionModel.d.ts +19 -0
  13. package/dist/models/EarlyCheckoutTransactionModel.js +66 -0
  14. package/dist/models/FinancialApprovalsModel.d.ts +1 -0
  15. package/dist/models/FinancialApprovalsModel.js +4 -0
  16. package/dist/models/FinancialGradeModel.d.ts +4 -3
  17. package/dist/models/FinancialGradeModel.js +12 -7
  18. package/dist/models/GeneralServiceApprovalsModel.d.ts +4 -1
  19. package/dist/models/GeneralServiceApprovalsModel.js +9 -0
  20. package/dist/models/LeaveApprovalsModel.d.ts +4 -2
  21. package/dist/models/LeaveApprovalsModel.js +8 -2
  22. package/dist/models/LeaveBalanceModel.d.ts +8 -0
  23. package/dist/models/{PassportRequestChatModel.js → LeaveBalanceModel.js} +23 -23
  24. package/dist/models/LeaveConfigGradesModel.d.ts +19 -0
  25. package/dist/models/LeaveConfigGradesModel.js +100 -0
  26. package/dist/models/LeaveConfigModel.d.ts +20 -0
  27. package/dist/models/LeaveConfigModel.js +90 -0
  28. package/dist/models/LeaveTransactionModel.d.ts +20 -0
  29. package/dist/models/LeaveTransactionModel.js +71 -0
  30. package/dist/models/LeaveTypesModel.d.ts +7 -1
  31. package/dist/models/LeaveTypesModel.js +20 -5
  32. package/dist/models/M&CMasterModel.d.ts +9 -0
  33. package/dist/models/M&CMasterModel.js +49 -0
  34. package/dist/models/NationalityMasterModel.d.ts +10 -0
  35. package/dist/models/{DiplomaticClubCardAttachmentModel.js → NationalityMasterModel.js} +29 -22
  36. package/dist/models/OfficeMasterModel.d.ts +12 -0
  37. package/dist/models/OfficeMasterModel.js +59 -0
  38. package/dist/models/ProfileUpdateRequestsModel.d.ts +106 -0
  39. package/dist/models/ProfileUpdateRequestsModel.js +409 -0
  40. package/dist/models/StationeryMaterialMasterModel.d.ts +11 -0
  41. package/dist/models/StationeryMaterialMasterModel.js +56 -0
  42. package/dist/models/StationeryRequestsModel.d.ts +26 -0
  43. package/dist/models/StationeryRequestsModel.js +89 -0
  44. package/dist/models/StayAfterHoursBalanceModel.d.ts +7 -0
  45. package/dist/models/StayAfterHoursBalanceModel.js +39 -0
  46. package/dist/models/StayAfterHoursTransactionModel.d.ts +19 -0
  47. package/dist/models/StayAfterHoursTransactionModel.js +66 -0
  48. package/dist/models/TelephoneDirectoryModel.d.ts +3 -2
  49. package/dist/models/TelephoneDirectoryModel.js +11 -6
  50. package/dist/models/TransferMissionApprovalModel.d.ts +2 -0
  51. package/dist/models/TransferMissionApprovalModel.js +8 -0
  52. package/dist/models/UpdateAttendanceApprovalModel.d.ts +1 -0
  53. package/dist/models/UpdateAttendanceApprovalModel.js +4 -0
  54. package/dist/models/UserEducationDetailsModel.d.ts +12 -0
  55. package/dist/models/UserEducationDetailsModel.js +44 -0
  56. package/dist/models/UserEmploymentDetailsModel.d.ts +50 -0
  57. package/dist/models/UserEmploymentDetailsModel.js +193 -0
  58. package/dist/models/UserPersonalDetailsModel.d.ts +48 -0
  59. package/dist/models/UserPersonalDetailsModel.js +185 -0
  60. package/dist/models/user.d.ts +2 -1
  61. package/dist/models/user.js +7 -2
  62. package/package.json +1 -1
  63. package/src/data-source.ts +42 -16
  64. package/src/index.ts +28 -7
  65. package/src/models/CountryMasterModel.ts +34 -0
  66. package/src/models/DiplomaticTitlesMasterModel.ts +9 -20
  67. package/src/models/EarlyCheckoutBalanceModel.ts +22 -0
  68. package/src/models/EarlyCheckoutConfigModel.ts +57 -0
  69. package/src/models/EarlyCheckoutTransactionModel.ts +53 -0
  70. package/src/models/FinancialApprovalsModel.ts +4 -0
  71. package/src/models/FinancialGradeModel.ts +13 -8
  72. package/src/models/GeneralServiceApprovalsModel.ts +10 -1
  73. package/src/models/LeaveApprovalsModel.ts +7 -2
  74. package/src/models/LeaveBalanceModel.ts +26 -0
  75. package/src/models/LeaveConfigGradesModel.Ts +72 -0
  76. package/src/models/LeaveConfigModel.ts +64 -0
  77. package/src/models/LeaveTransactionModel.ts +58 -0
  78. package/src/models/LeaveTypesModel.ts +27 -11
  79. package/src/models/M&CMasterModel.ts +37 -0
  80. package/src/models/NationalityMasterModel.ts +31 -0
  81. package/src/models/OfficeMasterModel.ts +37 -0
  82. package/src/models/ProfileUpdateRequestsModel.ts +317 -0
  83. package/src/models/StationeryMaterialMasterModel.ts +35 -0
  84. package/src/models/StationeryRequestsModel.ts +62 -0
  85. package/src/models/StayAfterHoursBalanceModel.ts +22 -0
  86. package/src/models/StayAfterHoursTransactionModel.ts +53 -0
  87. package/src/models/TelephoneDirectoryModel.ts +8 -4
  88. package/src/models/TransferMissionApprovalModel.ts +6 -0
  89. package/src/models/TransferMissionRequestModel.ts +1 -0
  90. package/src/models/UpdateAttendanceApprovalModel.ts +3 -0
  91. package/src/models/UserEducationDetailsModel.ts +26 -0
  92. package/src/models/UserEmploymentDetailsModel.ts +141 -0
  93. package/src/models/UserPersonalDetailsModel.ts +137 -0
  94. package/src/models/user.ts +5 -0
  95. package/dist/models/DiplomaticApprovalsModel.d.ts +0 -24
  96. package/dist/models/DiplomaticApprovalsModel.js +0 -94
  97. package/dist/models/DiplomaticAttachmentsModel.d.ts +0 -11
  98. package/dist/models/DiplomaticAttachmentsModel.js +0 -53
  99. package/dist/models/DiplomaticChatsModel.d.ts +0 -20
  100. package/dist/models/DiplomaticChatsModel.js +0 -70
  101. package/dist/models/DiplomaticClubCardApprovalModel.d.ts +0 -16
  102. package/dist/models/DiplomaticClubCardApprovalModel.js +0 -58
  103. package/dist/models/DiplomaticClubCardAttachmentModel.d.ts +0 -9
  104. package/dist/models/DiplomaticClubCardChatModel.d.ts +0 -7
  105. package/dist/models/DiplomaticClubCardMemberModel.d.ts +0 -13
  106. package/dist/models/DiplomaticClubCardMemberModel.js +0 -60
  107. package/dist/models/DiplomaticClubCardMembersModel.d.ts +0 -26
  108. package/dist/models/DiplomaticClubCardMembersModel.js +0 -85
  109. package/dist/models/DiplomaticClubCardRequestModel.d.ts +0 -33
  110. package/dist/models/DiplomaticClubCardRequestModel.js +0 -98
  111. package/dist/models/DiplomaticClubCardWorkFlowModel.d.ts +0 -12
  112. package/dist/models/DiplomaticClubCardWorkFlowModel.js +0 -42
  113. package/dist/models/DiplomaticClubSubscriptionMasterModel.d.ts +0 -12
  114. package/dist/models/DiplomaticClubSubscriptionMasterModel.js +0 -64
  115. package/dist/models/DiplomaticRequestsModel.d.ts +0 -54
  116. package/dist/models/DiplomaticRequestsModel.js +0 -186
  117. package/dist/models/DiplomaticServiceDetailsModel.d.ts +0 -20
  118. package/dist/models/DiplomaticServiceDetailsModel.js +0 -65
  119. package/dist/models/DiplomaticSettingsModel.d.ts +0 -11
  120. package/dist/models/DiplomaticSettingsModel.js +0 -59
  121. package/dist/models/DiplomaticTitleModel.d.ts +0 -12
  122. package/dist/models/DiplomaticTitleModel.js +0 -45
  123. package/dist/models/DiplomaticWorkFlowModel.d.ts +0 -20
  124. package/dist/models/DiplomaticWorkFlowModel.js +0 -77
  125. package/dist/models/PassportRequestApprovalModel.d.ts +0 -22
  126. package/dist/models/PassportRequestApprovalModel.js +0 -91
  127. package/dist/models/PassportRequestAttachmentModel.d.ts +0 -10
  128. package/dist/models/PassportRequestAttachmentModel.js +0 -54
  129. package/dist/models/PassportRequestChatModel.d.ts +0 -8
  130. package/dist/models/PassportRequestDependentModel.d.ts +0 -20
  131. package/dist/models/PassportRequestDependentModel.js +0 -85
  132. package/dist/models/PassportRequestModel.d.ts +0 -40
  133. package/dist/models/PassportRequestModel.js +0 -128
  134. package/dist/models/PassportRequestWorkFlowModel.d.ts +0 -15
  135. package/dist/models/PassportRequestWorkFlowModel.js +0 -60
  136. package/dist/models/SubscriptionAmountModel.d.ts +0 -67
  137. package/dist/models/SubscriptionAmountModel.js +0 -114
  138. package/src/models/DiplomaticApprovalsModel.ts +0 -77
  139. package/src/models/DiplomaticAttachmentsModel.ts +0 -37
  140. package/src/models/DiplomaticChatsModel.ts +0 -53
  141. package/src/models/DiplomaticClubCardMembersModel.ts +0 -71
  142. package/src/models/DiplomaticClubSubscriptionMasterModel.ts +0 -50
  143. package/src/models/DiplomaticRequestsModel.ts +0 -154
  144. package/src/models/DiplomaticWorkFlowModel.ts +0 -59
@@ -1,37 +1,26 @@
1
1
  import { Column, Entity } from "typeorm";
2
2
  import { BaseModel } from './BaseModel';
3
3
 
4
- export enum TitleCategory {
5
- EMPLOYEE = "Employee",
6
- NON_EMPLOYEE = "Non Employee"
7
- }
8
-
9
4
  @Entity({ name: 'diplomatic_titles_master' })
10
5
  export class DiplomaticTitlesMaster extends BaseModel {
11
- @Column({ type: 'varchar', length: 255 })
12
- title_name: string;
6
+ @Column({ type: 'varchar', length: 255, nullable: false })
7
+ title: string; // Diplomatic title name
13
8
 
14
- @Column({ type: 'enum', enum: TitleCategory })
15
- category: TitleCategory;
9
+ @Column({ type: 'varchar', length: 255, nullable: true })
10
+ title_in_arabic: string | null; // Arabic translation
16
11
 
17
12
  @Column({ type: 'text', nullable: true })
18
- description: string | null;
13
+ description: string | null; // Description of the title
19
14
 
20
15
  @Column({ type: 'boolean', default: true })
21
- is_active: boolean;
16
+ is_active: boolean; // Whether the title is active
22
17
 
23
18
  @Column({ type: 'int', default: 0 })
24
- display_order: number;
19
+ display_order: number; // Order for display in dropdowns
25
20
 
26
- constructor(
27
- title_name: string,
28
- category: TitleCategory,
29
- description?: string | null
30
- ) {
21
+ constructor(title: string) {
31
22
  super();
32
- this.title_name = title_name;
33
- this.category = category;
34
- this.description = description || null;
23
+ this.title = title;
35
24
  this.is_active = true;
36
25
  this.display_order = 0;
37
26
  }
@@ -0,0 +1,22 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'early_checkout_balance' })
5
+ export class EarlyCheckoutBalance 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,57 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum EarlyCheckoutFrequency {
5
+ Monthly = 'Monthly',
6
+ Yearly = 'Yearly',
7
+ }
8
+
9
+ //This model is used to store the Early Checkout Configuration on the Admin Side
10
+ @Entity({ name: 'early_checkout_configuration' })
11
+ export class EarlyCheckoutConfiguration 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: 'varchar', nullable: true })
20
+ frequency: EarlyCheckoutFrequency;
21
+
22
+ @Column({ type: 'varchar', nullable: true })
23
+ region: string;
24
+
25
+ @Column({ type: 'varchar', nullable: true })
26
+ country: string;
27
+
28
+ @Column({ type: 'varchar', nullable: true })
29
+ location: string;
30
+
31
+ @Column({ type: 'varchar', nullable: true })
32
+ no_of_hours: string;
33
+
34
+
35
+ @Column({ type: 'date', nullable: true })
36
+ from_date: Date;
37
+
38
+ @Column({ type: 'date', nullable: true })
39
+ to_date: Date;
40
+
41
+ @Column({ type: 'varchar', nullable: true })
42
+ reason: string;
43
+
44
+ constructor(category: string, MandC_id: number, frequency: EarlyCheckoutFrequency, region: string, country: string, location: string, no_of_hours: string, from_date: Date, to_date: Date, reason: string) {
45
+ super();
46
+ this.category = category;
47
+ this.MandC_id = MandC_id;
48
+ this.no_of_hours = no_of_hours;
49
+ this.frequency = frequency;
50
+ this.region = region;
51
+ this.country = country;
52
+ this.location = location;
53
+ this.from_date = from_date;
54
+ this.to_date = to_date;
55
+ this.reason = reason;
56
+ }
57
+ }
@@ -0,0 +1,53 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum EarlyCheckoutTransactionStatus {
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: 'early_checkout_transactions' })
16
+ export class EarlyCheckoutTransaction 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: EarlyCheckoutTransactionStatus;
35
+
36
+ constructor(
37
+ user_id: number,
38
+ hours_count: string,
39
+ from_date: Date,
40
+ to_date: Date,
41
+ year: number,
42
+ status: EarlyCheckoutTransactionStatus
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
+
@@ -45,6 +45,10 @@ export class FinancialApprovals extends BaseModel {
45
45
  @Column({ type: 'int', nullable: true })
46
46
  delegate_user_id: number | null;
47
47
 
48
+ // is_allowed flag: true if logged-in user is the request creator, false otherwise (for chat permissions)
49
+ @Column({ type: 'boolean', default: true, nullable: true })
50
+ is_allowed: boolean | null;
51
+
48
52
  @ManyToOne(() => FinancialRequests, fr => fr.approvals)
49
53
  @JoinColumn({ name: 'financial_request_id' })
50
54
  financialRequest?: FinancialRequests;
@@ -4,23 +4,28 @@ import { BaseModel } from './BaseModel';
4
4
  @Entity({ name: 'financial_grade' })
5
5
  export class FinancialGrade extends BaseModel {
6
6
 
7
- @Column({ nullable: false })
7
+ @Column({ type: 'varchar', nullable: false })
8
8
  diplomatic_title: string;
9
9
 
10
- @Column({ nullable: false })
11
- financial_grade: string;
10
+ @Column({ type: 'varchar', nullable: true })
11
+ arabic_title: string;
12
12
 
13
- @Column({ type: "int", nullable: false })
14
- annual_leave: number;
13
+ @Column({ type: "integer", nullable: true })
14
+ financial_grade: number;
15
+
16
+ @Column({ type: "integer", nullable: true })
17
+ leave_count: number;
15
18
 
16
19
  constructor(
17
20
  diplomatic_title: string,
18
- financial_grade: string,
19
- annual_leave: number
21
+ arabic_title: string,
22
+ financial_grade: number,
23
+ leave_count: number
20
24
  ) {
21
25
  super();
22
26
  this.diplomatic_title = diplomatic_title;
27
+ this.arabic_title = arabic_title;
23
28
  this.financial_grade = financial_grade;
24
- this.annual_leave = annual_leave;
29
+ this.leave_count = leave_count;
25
30
  }
26
31
  }
@@ -6,7 +6,8 @@ export enum GeneralServiceApprovalStatus {
6
6
  APPROVED = "Approved",
7
7
  REJECTED = "Rejected",
8
8
  SKIPPED = "Skipped",
9
- IN_PROGRESS = "In Progress"
9
+ IN_PROGRESS = "In Progress",
10
+ ASSIGNED = "Assigned"
10
11
  }
11
12
 
12
13
  @Entity({ name: 'general_service_approvals' })
@@ -60,6 +61,14 @@ export class GeneralServiceApprovals extends BaseModel {
60
61
  @Column({ type: 'int', nullable: true })
61
62
  delegate_user_id: number | null; // Group who transferred from
62
63
 
64
+ // Stationery-specific: Action type to indicate what action is needed (for FE button handling)
65
+ @Column({ type: 'varchar', length: 50, nullable: true })
66
+ action_type: string | null; // Values: 'approve' (L1), 'store' (Stores Office), 'finance' (Finance), 'finance_purchase', 'complete'
67
+
68
+ // is_allowed flag: true if logged-in user is the request creator, false otherwise (for chat permissions)
69
+ @Column({ type: 'boolean', nullable: true })
70
+ is_allowed: boolean | null;
71
+
63
72
  // @Column({ type: 'timestamp', nullable: true })
64
73
  // sla_start_time: Date | null; // SLA tracking start time for this assignment
65
74
 
@@ -6,7 +6,8 @@ export enum ApprovalStatus {
6
6
  PENDING = "Pending",
7
7
  APPROVED = "Approved",
8
8
  REJECTED = "Rejected",
9
- IN_PROGRESS = "In Progress"
9
+ IN_PROGRESS = "In Progress",
10
+ CANCELLED = "Cancelled"
10
11
  }
11
12
 
12
13
  //This model is used to store the store the leave apporval details of the user for the leave request
@@ -42,7 +43,10 @@ export class LeaveApprovalDetails extends BaseModel {
42
43
  @Column({ type: 'enum', enum: ApprovalStatus,default: ApprovalStatus.PENDING, nullable: false })
43
44
  approval_status: ApprovalStatus;
44
45
 
45
- constructor(leave_request_id: number, approver_user_id: number, approver_role_id: number, comment: string, approval_status: ApprovalStatus, level: number, department_id: number, section_id: number) {
46
+ @Column({ type: 'boolean', default: true, nullable: false })
47
+ is_allowed: boolean;
48
+
49
+ constructor(leave_request_id: number, approver_user_id: number, approver_role_id: number, comment: string, approval_status: ApprovalStatus, level: number, department_id: number, section_id: number, is_allowed: boolean) {
46
50
  super();
47
51
  this.leave_request_id = leave_request_id;
48
52
  this.approver_user_id = approver_user_id;
@@ -52,5 +56,6 @@ export class LeaveApprovalDetails extends BaseModel {
52
56
  this.comment = comment;
53
57
  this.approval_status = approval_status;
54
58
  this.level = level;
59
+ this.is_allowed = is_allowed;
55
60
  }
56
61
  }
@@ -0,0 +1,26 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'leave_balance' })
5
+ export class LeaveBalance extends BaseModel {
6
+
7
+ @Column({ nullable: true })
8
+ user_id: string;
9
+
10
+ @Column({ nullable: true })
11
+ leave_type_id: string;
12
+
13
+ @Column({ nullable: true })
14
+ balance: number;
15
+
16
+ @Column({ nullable: true })
17
+ total_balance: number;
18
+
19
+ constructor(user_id: string, leave_type_id: string, balance: number, total_balance: number) {
20
+ super();
21
+ this.user_id = user_id;
22
+ this.leave_type_id = leave_type_id;
23
+ this.balance = balance;
24
+ this.total_balance = total_balance;
25
+ }
26
+ }
@@ -0,0 +1,72 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ //This model is used to store the relationship between Leave Configuration and Financial Grades with monthly leave counts
5
+ @Entity({ name: 'leave_config_grades' })
6
+ export class LeaveConfigurationGrades extends BaseModel {
7
+
8
+ @Column({ type: 'int', nullable: true })
9
+ leave_config_id: number;
10
+
11
+ @Column({ type: 'int', nullable: false })
12
+ grade: number;
13
+
14
+ @Column({ type: 'int', nullable: true })
15
+ jan: number;
16
+
17
+ @Column({ type: 'int', nullable: true })
18
+ feb: number;
19
+
20
+ @Column({ type: 'int', nullable: true })
21
+ mar: number;
22
+
23
+ @Column({ type: 'int', nullable: true })
24
+ apr: number;
25
+
26
+ @Column({ type: 'int', nullable: true })
27
+ may: number;
28
+
29
+ @Column({ type: 'int', nullable: true })
30
+ jun: number;
31
+
32
+ @Column({ type: 'int', nullable: true })
33
+ jul: number;
34
+
35
+ @Column({ type: 'int', nullable: true })
36
+ aug: number;
37
+
38
+ @Column({ type: 'int', nullable: true })
39
+ sep: number;
40
+
41
+ @Column({ type: 'int', nullable: true })
42
+ oct: number;
43
+
44
+ @Column({ type: 'int', nullable: true })
45
+ nov: number;
46
+
47
+ @Column({ type: 'int', nullable: true })
48
+ dec: number;
49
+
50
+ @Column({ type: 'int', nullable: false, default: 0 })
51
+ total_count: number;
52
+
53
+ constructor(leave_config_id: number, grade: number, jan: number, feb: number, mar: number, apr: number, may: number, jun: number, jul: number, aug: number, sep: number, oct: number, nov: number, dec: number, total_count: number) {
54
+ super();
55
+ this.leave_config_id = leave_config_id;
56
+ this.grade = grade;
57
+ this.jan = jan;
58
+ this.feb = feb;
59
+ this.mar = mar;
60
+ this.apr = apr;
61
+ this.may = may;
62
+ this.jun = jun;
63
+ this.jul = jul;
64
+ this.aug = aug;
65
+ this.sep = sep;
66
+ this.oct = oct;
67
+ this.nov = nov;
68
+ this.dec = dec;
69
+ this.total_count = total_count;
70
+ }
71
+ }
72
+
@@ -0,0 +1,64 @@
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
+ 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) {
50
+ super();
51
+ this.category = category;
52
+ this.MandC_id = MandC_id;
53
+ this.leave_type_id = leave_type_id;
54
+ this.frequency = frequency;
55
+ this.region = region;
56
+ this.country = country;
57
+ this.location = location;
58
+ this.is_carryforward = is_carryforward;
59
+ this.carryforward_limit = carryforward_limit;
60
+ this.from_date = from_date;
61
+ this.to_date = to_date;
62
+ this.reason = reason;
63
+ }
64
+ }
@@ -0,0 +1,58 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum LeaveTransactionStatus {
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 leave transactions for users
15
+ @Entity({ name: 'leave_transactions' })
16
+ export class LeaveTransaction extends BaseModel {
17
+
18
+ @Column({ type: 'int', nullable: false })
19
+ user_id: number;
20
+
21
+ @Column({ type: 'int', nullable: false })
22
+ leave_type_id: number;
23
+
24
+ @Column({ type: 'decimal', precision: 10, scale: 2, nullable: true })
25
+ leave_count: number;
26
+
27
+ @Column({ type: 'date', nullable: true })
28
+ from_date: Date;
29
+
30
+ @Column({ type: 'date', nullable: true })
31
+ to_date: Date;
32
+
33
+ @Column({ type: 'int', nullable: true })
34
+ year: number;
35
+
36
+ @Column({ type: 'varchar', nullable: false })
37
+ status: LeaveTransactionStatus;
38
+
39
+ constructor(
40
+ user_id: number,
41
+ leave_type_id: number,
42
+ leave_count: number,
43
+ from_date: Date,
44
+ to_date: Date,
45
+ year: number,
46
+ status: LeaveTransactionStatus
47
+ ) {
48
+ super();
49
+ this.user_id = user_id;
50
+ this.leave_type_id = leave_type_id;
51
+ this.leave_count = leave_count;
52
+ this.from_date = from_date;
53
+ this.to_date = to_date;
54
+ this.year = year;
55
+ this.status = status;
56
+ }
57
+ }
58
+
@@ -1,31 +1,47 @@
1
1
  import { Column, Entity } from "typeorm";
2
2
  import { BaseModel } from './BaseModel';
3
3
 
4
+ export enum genderType {
5
+ Male = 'Male',
6
+ Female = 'Female',
7
+ All = 'All',
8
+ }
9
+
4
10
  @Entity({ name: 'leave_types' })
5
11
  export class LeaveTypes extends BaseModel {
6
12
 
7
- @Column({ nullable: true })
13
+ @Column({type: 'varchar', nullable: true })
8
14
  name: string;
9
15
 
10
- @Column({ nullable: true })
16
+ @Column({type: 'varchar', nullable: true })
11
17
  name_in_arabic: string;
12
18
 
13
- @Column({ nullable: true, default: false })
14
- omani_only?: boolean = false;
19
+ @Column({ nullable: true, default: false })
20
+ omani_only?: boolean = false;
15
21
 
16
- @Column({ nullable: true, default: false })
17
- non_omani_muslim?: boolean = false;
22
+ @Column({ nullable: true, default: false })
23
+ non_omani_muslim?: boolean = false;
18
24
 
19
- @Column({ nullable: true, default: false })
20
- non_omani_non_muslim?: boolean = false;
25
+ @Column({ nullable: true, default: false })
26
+ non_omani_non_muslim?: boolean = false;
21
27
 
28
+ @Column({ nullable: true, default: genderType.All })
29
+ gender: genderType = genderType.All;
22
30
 
23
- constructor(
31
+ constructor(
24
32
  name: string,
25
33
  name_in_arabic: string,
34
+ omani_only: boolean,
35
+ non_omani_muslim: boolean,
36
+ non_omani_non_muslim: boolean,
37
+ gender: genderType
26
38
  ) {
27
- super();
39
+ super();
28
40
  this.name = name
29
- this.name_in_arabic = name_in_arabic
41
+ this.name_in_arabic = name_in_arabic
42
+ this.omani_only = omani_only
43
+ this.non_omani_muslim = non_omani_muslim
44
+ this.non_omani_non_muslim = non_omani_non_muslim
45
+ this.gender = gender
30
46
  }
31
47
  }
@@ -0,0 +1,37 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'M&C_names' })
5
+ export class MandCMaster extends BaseModel {
6
+
7
+ @Column({type: 'varchar', nullable: true })
8
+ name: string;
9
+
10
+ @Column({type: 'varchar', nullable: true })
11
+ name_in_arabic: string;
12
+
13
+ @Column({type: 'varchar', nullable: true })
14
+ region:string;
15
+
16
+ @Column({type: 'varchar', nullable: true })
17
+ country:string;
18
+
19
+ @Column({type: 'varchar', nullable: true })
20
+ location:string;
21
+
22
+
23
+ constructor(
24
+ name: string,
25
+ name_in_arabic: string,
26
+ region: string,
27
+ country: string,
28
+ location: string
29
+ ) {
30
+ super();
31
+ this.name = name
32
+ this.name_in_arabic = name_in_arabic
33
+ this.region = region
34
+ this.country = country
35
+ this.location = location
36
+ }
37
+ }
@@ -0,0 +1,31 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'nationality_master' })
5
+ export class NationalityMaster extends BaseModel {
6
+ @Column({ type: 'varchar', length: 255, nullable: false })
7
+ nationality_name: string; // Nationality name
8
+
9
+ @Column({ type: 'varchar', length: 255, nullable: true })
10
+ nationality_name_arabic: string | null; // Arabic translation
11
+
12
+ @Column({ type: 'varchar', length: 10, nullable: true })
13
+ country_code: string | null; // Associated country code
14
+
15
+ @Column({ type: 'text', nullable: true })
16
+ description: string | null; // Description of the nationality
17
+
18
+ @Column({ type: 'boolean', default: true })
19
+ is_active: boolean; // Whether the nationality is active
20
+
21
+ @Column({ type: 'int', default: 0 })
22
+ display_order: number; // Order for display in dropdowns
23
+
24
+ constructor(nationality_name: string) {
25
+ super();
26
+ this.nationality_name = nationality_name;
27
+ this.is_active = true;
28
+ this.display_order = 0;
29
+ }
30
+ }
31
+
@@ -0,0 +1,37 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'office_master' })
5
+ export class OfficeMaster extends BaseModel {
6
+ @Column({ type: 'varchar', length: 255, nullable: false })
7
+ office_name: string; // Office name
8
+
9
+ @Column({ type: 'varchar', length: 255, nullable: true })
10
+ office_name_arabic: string | null; // Arabic translation
11
+
12
+ @Column({ type: 'varchar', length: 100, nullable: true })
13
+ office_code: string | null; // Optional office code for identification
14
+
15
+ @Column({ type: 'text', nullable: true })
16
+ description: string | null; // Description of the office
17
+
18
+ @Column({ type: 'varchar', length: 255, nullable: true })
19
+ location: string | null; // Office location
20
+
21
+ @Column({ type: 'varchar', length: 255, nullable: true })
22
+ address: string | null; // Office address
23
+
24
+ @Column({ type: 'boolean', default: true })
25
+ is_active: boolean; // Whether the office is active
26
+
27
+ @Column({ type: 'int', default: 0 })
28
+ display_order: number; // Order for display in dropdowns
29
+
30
+ constructor(office_name: string) {
31
+ super();
32
+ this.office_name = office_name;
33
+ this.is_active = true;
34
+ this.display_order = 0;
35
+ }
36
+ }
37
+