@appcorp/fusion-storybook 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -0
- package/base-modules/admission/cache.d.ts +14 -0
- package/base-modules/admission/cache.js +31 -0
- package/base-modules/admission/constants.d.ts +32 -0
- package/base-modules/admission/constants.js +37 -0
- package/base-modules/admission/context.d.ts +369 -0
- package/base-modules/admission/context.js +755 -0
- package/base-modules/admission/filter.d.ts +1 -0
- package/base-modules/admission/filter.js +31 -0
- package/base-modules/admission/form.d.ts +1 -0
- package/base-modules/admission/form.js +86 -0
- package/base-modules/admission/more-actions.d.ts +1 -0
- package/base-modules/admission/more-actions.js +5 -0
- package/base-modules/admission/page.d.ts +16 -0
- package/base-modules/admission/page.js +128 -0
- package/base-modules/admission/validate.d.ts +38 -0
- package/base-modules/admission/validate.js +70 -0
- package/base-modules/admission/view.d.ts +1 -0
- package/base-modules/admission/view.js +40 -0
- package/base-modules/discount-code/cache.d.ts +27 -0
- package/base-modules/discount-code/cache.js +46 -0
- package/base-modules/discount-code/constants.d.ts +19 -0
- package/base-modules/discount-code/constants.js +26 -0
- package/base-modules/discount-code/context.d.ts +154 -0
- package/base-modules/discount-code/context.js +416 -0
- package/base-modules/discount-code/filter.d.ts +9 -0
- package/base-modules/discount-code/filter.js +14 -0
- package/base-modules/discount-code/form.d.ts +1 -0
- package/base-modules/discount-code/form.js +44 -0
- package/base-modules/discount-code/more-actions.d.ts +9 -0
- package/base-modules/discount-code/more-actions.js +13 -0
- package/base-modules/discount-code/page.d.ts +16 -0
- package/base-modules/discount-code/page.js +120 -0
- package/base-modules/discount-code/validate.d.ts +19 -0
- package/base-modules/discount-code/validate.js +38 -0
- package/base-modules/discount-code/view.d.ts +1 -0
- package/base-modules/discount-code/view.js +26 -0
- package/base-modules/family/cache.d.ts +14 -0
- package/base-modules/family/cache.js +31 -0
- package/base-modules/family/constants.d.ts +22 -0
- package/base-modules/family/constants.js +26 -0
- package/base-modules/family/context.d.ts +173 -0
- package/base-modules/family/context.js +441 -0
- package/base-modules/family/filter.d.ts +1 -0
- package/base-modules/family/filter.js +28 -0
- package/base-modules/family/form.d.ts +1 -0
- package/base-modules/family/form.js +12 -0
- package/base-modules/family/more-actions.d.ts +1 -0
- package/base-modules/family/more-actions.js +5 -0
- package/base-modules/family/page.d.ts +16 -0
- package/base-modules/family/page.js +120 -0
- package/base-modules/family/validate.d.ts +15 -0
- package/base-modules/family/validate.js +18 -0
- package/base-modules/family/view.d.ts +1 -0
- package/base-modules/family/view.js +18 -0
- package/base-modules/family-member/cache.d.ts +14 -0
- package/base-modules/family-member/cache.js +31 -0
- package/base-modules/family-member/constants.d.ts +22 -0
- package/base-modules/family-member/constants.js +26 -0
- package/base-modules/family-member/context.d.ts +215 -0
- package/base-modules/family-member/context.js +486 -0
- package/base-modules/family-member/filter.d.ts +1 -0
- package/base-modules/family-member/filter.js +28 -0
- package/base-modules/family-member/form.d.ts +1 -0
- package/base-modules/family-member/form.js +17 -0
- package/base-modules/family-member/more-actions.d.ts +1 -0
- package/base-modules/family-member/more-actions.js +5 -0
- package/base-modules/family-member/page.d.ts +16 -0
- package/base-modules/family-member/page.js +122 -0
- package/base-modules/family-member/validate.d.ts +24 -0
- package/base-modules/family-member/validate.js +27 -0
- package/base-modules/family-member/view.d.ts +1 -0
- package/base-modules/family-member/view.js +40 -0
- package/base-modules/student-profile/cache.d.ts +14 -0
- package/base-modules/student-profile/cache.js +31 -0
- package/base-modules/student-profile/constants.d.ts +105 -0
- package/base-modules/student-profile/constants.js +132 -0
- package/base-modules/student-profile/context.d.ts +290 -0
- package/base-modules/student-profile/context.js +583 -0
- package/base-modules/student-profile/filter.d.ts +1 -0
- package/base-modules/student-profile/filter.js +26 -0
- package/base-modules/student-profile/form.d.ts +1 -0
- package/base-modules/student-profile/form.js +19 -0
- package/base-modules/student-profile/more-actions.d.ts +1 -0
- package/base-modules/student-profile/more-actions.js +5 -0
- package/base-modules/student-profile/page.d.ts +9 -0
- package/base-modules/student-profile/page.js +86 -0
- package/base-modules/student-profile/validate.d.ts +23 -0
- package/base-modules/student-profile/validate.js +34 -0
- package/base-modules/student-profile/view.d.ts +1 -0
- package/base-modules/student-profile/view.js +29 -0
- package/base-modules/workspace/cache.d.ts +9 -0
- package/base-modules/workspace/cache.js +28 -0
- package/base-modules/workspace/constants.d.ts +10 -0
- package/base-modules/workspace/constants.js +18 -0
- package/base-modules/workspace/context.d.ts +187 -0
- package/base-modules/workspace/context.js +293 -0
- package/base-modules/workspace/drawer.d.ts +1 -0
- package/base-modules/workspace/drawer.js +24 -0
- package/base-modules/workspace/filter.d.ts +1 -0
- package/base-modules/workspace/filter.js +13 -0
- package/base-modules/workspace/form.d.ts +1 -0
- package/base-modules/workspace/form.js +40 -0
- package/base-modules/workspace/more-actions.d.ts +1 -0
- package/base-modules/workspace/more-actions.js +13 -0
- package/base-modules/workspace/page.d.ts +1 -0
- package/base-modules/workspace/page.js +31 -0
- package/base-modules/workspace/validate.d.ts +9 -0
- package/base-modules/workspace/validate.js +8 -0
- package/base-modules/workspace/view.d.ts +1 -0
- package/base-modules/workspace/view.js +52 -0
- package/components/rbac-no-access.d.ts +6 -0
- package/components/rbac-no-access.js +4 -0
- package/constants.d.ts +81 -0
- package/constants.js +81 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +5 -0
- package/package.json +104 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/type.d.ts +1141 -0
- package/type.js +427 -0
- package/utils/admission-pdf.d.ts +78 -0
- package/utils/admission-pdf.js +73 -0
- package/utils/clear-cache.d.ts +1 -0
- package/utils/clear-cache.js +8 -0
- package/utils/format-value.d.ts +1 -0
- package/utils/format-value.js +1 -0
- package/utils/pdf-generator.d.ts +41 -0
- package/utils/pdf-generator.js +107 -0
- package/utils/resolve-rbac-permissions.d.ts +11 -0
- package/utils/resolve-rbac-permissions.js +251 -0
package/type.js
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Types Generated from Prisma Schema
|
|
3
|
+
*
|
|
4
|
+
* This file contains TypeScript interfaces for all database models
|
|
5
|
+
* and enums following the naming conventions:
|
|
6
|
+
* - Models: TableName + BE (e.g., StudentBE)
|
|
7
|
+
* - Enums: SCREAMING_SNAKE_CASE (e.g., USER_ROLE for UserRole)
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// ENUMS
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* User roles across the multi-tenant system
|
|
14
|
+
*/
|
|
15
|
+
export var USER_ROLE;
|
|
16
|
+
(function (USER_ROLE) {
|
|
17
|
+
USER_ROLE["SUPER_ADMIN"] = "SUPER_ADMIN";
|
|
18
|
+
USER_ROLE["SCHOOL_ADMIN"] = "SCHOOL_ADMIN";
|
|
19
|
+
USER_ROLE["TEACHER"] = "TEACHER";
|
|
20
|
+
USER_ROLE["STUDENT"] = "STUDENT";
|
|
21
|
+
USER_ROLE["PARENT"] = "PARENT";
|
|
22
|
+
USER_ROLE["STAFF"] = "STAFF";
|
|
23
|
+
})(USER_ROLE || (USER_ROLE = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Student enrollment status
|
|
26
|
+
*/
|
|
27
|
+
export var STUDENT_STATUS;
|
|
28
|
+
(function (STUDENT_STATUS) {
|
|
29
|
+
STUDENT_STATUS["ACTIVE"] = "ACTIVE";
|
|
30
|
+
STUDENT_STATUS["INACTIVE"] = "INACTIVE";
|
|
31
|
+
STUDENT_STATUS["GRADUATED"] = "GRADUATED";
|
|
32
|
+
STUDENT_STATUS["TRANSFERRED"] = "TRANSFERRED";
|
|
33
|
+
STUDENT_STATUS["DROPPED"] = "DROPPED";
|
|
34
|
+
})(STUDENT_STATUS || (STUDENT_STATUS = {}));
|
|
35
|
+
/**
|
|
36
|
+
* Family member roles within a household
|
|
37
|
+
*/
|
|
38
|
+
export var FAMILY_MEMBER_ROLE;
|
|
39
|
+
(function (FAMILY_MEMBER_ROLE) {
|
|
40
|
+
FAMILY_MEMBER_ROLE["FATHER"] = "FATHER";
|
|
41
|
+
FAMILY_MEMBER_ROLE["MOTHER"] = "MOTHER";
|
|
42
|
+
FAMILY_MEMBER_ROLE["GUARDIAN"] = "GUARDIAN";
|
|
43
|
+
FAMILY_MEMBER_ROLE["STUDENT"] = "STUDENT";
|
|
44
|
+
})(FAMILY_MEMBER_ROLE || (FAMILY_MEMBER_ROLE = {}));
|
|
45
|
+
/**
|
|
46
|
+
* Gender options
|
|
47
|
+
*/
|
|
48
|
+
export var GENDER;
|
|
49
|
+
(function (GENDER) {
|
|
50
|
+
GENDER["MALE"] = "MALE";
|
|
51
|
+
GENDER["FEMALE"] = "FEMALE";
|
|
52
|
+
GENDER["OTHER"] = "OTHER";
|
|
53
|
+
GENDER["PREFER_NOT_TO_SAY"] = "PREFER_NOT_TO_SAY";
|
|
54
|
+
})(GENDER || (GENDER = {}));
|
|
55
|
+
/**
|
|
56
|
+
* Day of the week for scheduling
|
|
57
|
+
*/
|
|
58
|
+
export var DAY_OF_WEEK;
|
|
59
|
+
(function (DAY_OF_WEEK) {
|
|
60
|
+
DAY_OF_WEEK["MONDAY"] = "MONDAY";
|
|
61
|
+
DAY_OF_WEEK["TUESDAY"] = "TUESDAY";
|
|
62
|
+
DAY_OF_WEEK["WEDNESDAY"] = "WEDNESDAY";
|
|
63
|
+
DAY_OF_WEEK["THURSDAY"] = "THURSDAY";
|
|
64
|
+
DAY_OF_WEEK["FRIDAY"] = "FRIDAY";
|
|
65
|
+
DAY_OF_WEEK["SATURDAY"] = "SATURDAY";
|
|
66
|
+
DAY_OF_WEEK["SUNDAY"] = "SUNDAY";
|
|
67
|
+
})(DAY_OF_WEEK || (DAY_OF_WEEK = {}));
|
|
68
|
+
/**
|
|
69
|
+
* Attendance status
|
|
70
|
+
*/
|
|
71
|
+
export var ATTENDANCE_STATUS;
|
|
72
|
+
(function (ATTENDANCE_STATUS) {
|
|
73
|
+
ATTENDANCE_STATUS["PRESENT"] = "PRESENT";
|
|
74
|
+
ATTENDANCE_STATUS["ABSENT"] = "ABSENT";
|
|
75
|
+
ATTENDANCE_STATUS["LATE"] = "LATE";
|
|
76
|
+
ATTENDANCE_STATUS["EXCUSED"] = "EXCUSED";
|
|
77
|
+
ATTENDANCE_STATUS["HALF_DAY"] = "HALF_DAY";
|
|
78
|
+
})(ATTENDANCE_STATUS || (ATTENDANCE_STATUS = {}));
|
|
79
|
+
/**
|
|
80
|
+
* Grade type for assessments
|
|
81
|
+
*/
|
|
82
|
+
export var GRADE_TYPE;
|
|
83
|
+
(function (GRADE_TYPE) {
|
|
84
|
+
GRADE_TYPE["EXAM"] = "EXAM";
|
|
85
|
+
GRADE_TYPE["QUIZ"] = "QUIZ";
|
|
86
|
+
GRADE_TYPE["ASSIGNMENT"] = "ASSIGNMENT";
|
|
87
|
+
GRADE_TYPE["PARTICIPATION"] = "PARTICIPATION";
|
|
88
|
+
GRADE_TYPE["PRACTICAL"] = "PRACTICAL";
|
|
89
|
+
GRADE_TYPE["PROJECT"] = "PROJECT";
|
|
90
|
+
})(GRADE_TYPE || (GRADE_TYPE = {}));
|
|
91
|
+
/**
|
|
92
|
+
* Fee type categories
|
|
93
|
+
*/
|
|
94
|
+
export var FEE_TYPE;
|
|
95
|
+
(function (FEE_TYPE) {
|
|
96
|
+
FEE_TYPE["TUITION"] = "TUITION";
|
|
97
|
+
FEE_TYPE["ADMISSION"] = "ADMISSION";
|
|
98
|
+
FEE_TYPE["EXAM"] = "EXAM";
|
|
99
|
+
FEE_TYPE["LIBRARY"] = "LIBRARY";
|
|
100
|
+
FEE_TYPE["LABORATORY"] = "LABORATORY";
|
|
101
|
+
FEE_TYPE["TRANSPORT"] = "TRANSPORT";
|
|
102
|
+
FEE_TYPE["SPORTS"] = "SPORTS";
|
|
103
|
+
FEE_TYPE["MISCELLANEOUS"] = "MISCELLANEOUS";
|
|
104
|
+
FEE_TYPE["LATE"] = "LATE";
|
|
105
|
+
})(FEE_TYPE || (FEE_TYPE = {}));
|
|
106
|
+
/**
|
|
107
|
+
* Discount type for fee reductions
|
|
108
|
+
*/
|
|
109
|
+
export var DISCOUNT_TYPE;
|
|
110
|
+
(function (DISCOUNT_TYPE) {
|
|
111
|
+
DISCOUNT_TYPE["PERCENTAGE"] = "PERCENTAGE";
|
|
112
|
+
DISCOUNT_TYPE["FIXED"] = "FIXED";
|
|
113
|
+
})(DISCOUNT_TYPE || (DISCOUNT_TYPE = {}));
|
|
114
|
+
/**
|
|
115
|
+
* Payment status
|
|
116
|
+
*/
|
|
117
|
+
export var PAYMENT_STATUS;
|
|
118
|
+
(function (PAYMENT_STATUS) {
|
|
119
|
+
PAYMENT_STATUS["PENDING"] = "PENDING";
|
|
120
|
+
PAYMENT_STATUS["PARTIAL"] = "PARTIAL";
|
|
121
|
+
PAYMENT_STATUS["PAID"] = "PAID";
|
|
122
|
+
PAYMENT_STATUS["OVERDUE"] = "OVERDUE";
|
|
123
|
+
PAYMENT_STATUS["CANCELLED"] = "CANCELLED";
|
|
124
|
+
PAYMENT_STATUS["REFUNDED"] = "REFUNDED";
|
|
125
|
+
})(PAYMENT_STATUS || (PAYMENT_STATUS = {}));
|
|
126
|
+
/**
|
|
127
|
+
* Payment method
|
|
128
|
+
*/
|
|
129
|
+
export var PAYMENT_METHOD;
|
|
130
|
+
(function (PAYMENT_METHOD) {
|
|
131
|
+
PAYMENT_METHOD["CASH"] = "CASH";
|
|
132
|
+
PAYMENT_METHOD["BANK_TRANSFER"] = "BANK_TRANSFER";
|
|
133
|
+
PAYMENT_METHOD["CREDIT_CARD"] = "CREDIT_CARD";
|
|
134
|
+
PAYMENT_METHOD["DEBIT_CARD"] = "DEBIT_CARD";
|
|
135
|
+
PAYMENT_METHOD["CHEQUE"] = "CHEQUE";
|
|
136
|
+
PAYMENT_METHOD["ONLINE"] = "ONLINE";
|
|
137
|
+
PAYMENT_METHOD["MOBILE_WALLET"] = "MOBILE_WALLET";
|
|
138
|
+
})(PAYMENT_METHOD || (PAYMENT_METHOD = {}));
|
|
139
|
+
/**
|
|
140
|
+
* Expense category types
|
|
141
|
+
*/
|
|
142
|
+
export var EXPENSE_CATEGORY;
|
|
143
|
+
(function (EXPENSE_CATEGORY) {
|
|
144
|
+
EXPENSE_CATEGORY["SALARY"] = "SALARY";
|
|
145
|
+
EXPENSE_CATEGORY["UTILITIES"] = "UTILITIES";
|
|
146
|
+
EXPENSE_CATEGORY["MAINTENANCE"] = "MAINTENANCE";
|
|
147
|
+
EXPENSE_CATEGORY["SUPPLIES"] = "SUPPLIES";
|
|
148
|
+
EXPENSE_CATEGORY["TRANSPORT"] = "TRANSPORT";
|
|
149
|
+
EXPENSE_CATEGORY["MARKETING"] = "MARKETING";
|
|
150
|
+
EXPENSE_CATEGORY["INSURANCE"] = "INSURANCE";
|
|
151
|
+
EXPENSE_CATEGORY["RENT"] = "RENT";
|
|
152
|
+
EXPENSE_CATEGORY["TECHNOLOGY"] = "TECHNOLOGY";
|
|
153
|
+
EXPENSE_CATEGORY["PROFESSIONAL"] = "PROFESSIONAL";
|
|
154
|
+
EXPENSE_CATEGORY["TRAINING"] = "TRAINING";
|
|
155
|
+
EXPENSE_CATEGORY["EVENTS"] = "EVENTS";
|
|
156
|
+
EXPENSE_CATEGORY["FOOD"] = "FOOD";
|
|
157
|
+
EXPENSE_CATEGORY["MISCELLANEOUS"] = "MISCELLANEOUS";
|
|
158
|
+
})(EXPENSE_CATEGORY || (EXPENSE_CATEGORY = {}));
|
|
159
|
+
/**
|
|
160
|
+
* Expense payment status
|
|
161
|
+
*/
|
|
162
|
+
export var EXPENSE_STATUS;
|
|
163
|
+
(function (EXPENSE_STATUS) {
|
|
164
|
+
EXPENSE_STATUS["PENDING"] = "PENDING";
|
|
165
|
+
EXPENSE_STATUS["APPROVED"] = "APPROVED";
|
|
166
|
+
EXPENSE_STATUS["PAID"] = "PAID";
|
|
167
|
+
EXPENSE_STATUS["REJECTED"] = "REJECTED";
|
|
168
|
+
EXPENSE_STATUS["CANCELLED"] = "CANCELLED";
|
|
169
|
+
})(EXPENSE_STATUS || (EXPENSE_STATUS = {}));
|
|
170
|
+
/**
|
|
171
|
+
* Currency options (ISO 4217 codes)
|
|
172
|
+
*/
|
|
173
|
+
export var CURRENCY;
|
|
174
|
+
(function (CURRENCY) {
|
|
175
|
+
CURRENCY["AED"] = "AED";
|
|
176
|
+
CURRENCY["AFN"] = "AFN";
|
|
177
|
+
CURRENCY["ALL"] = "ALL";
|
|
178
|
+
CURRENCY["AMD"] = "AMD";
|
|
179
|
+
CURRENCY["ANG"] = "ANG";
|
|
180
|
+
CURRENCY["AOA"] = "AOA";
|
|
181
|
+
CURRENCY["ARS"] = "ARS";
|
|
182
|
+
CURRENCY["AUD"] = "AUD";
|
|
183
|
+
CURRENCY["AWG"] = "AWG";
|
|
184
|
+
CURRENCY["AZN"] = "AZN";
|
|
185
|
+
CURRENCY["BAM"] = "BAM";
|
|
186
|
+
CURRENCY["BBD"] = "BBD";
|
|
187
|
+
CURRENCY["BDT"] = "BDT";
|
|
188
|
+
CURRENCY["BGN"] = "BGN";
|
|
189
|
+
CURRENCY["BHD"] = "BHD";
|
|
190
|
+
CURRENCY["BIF"] = "BIF";
|
|
191
|
+
CURRENCY["BMD"] = "BMD";
|
|
192
|
+
CURRENCY["BND"] = "BND";
|
|
193
|
+
CURRENCY["BOB"] = "BOB";
|
|
194
|
+
CURRENCY["BRL"] = "BRL";
|
|
195
|
+
CURRENCY["BSD"] = "BSD";
|
|
196
|
+
CURRENCY["BTN"] = "BTN";
|
|
197
|
+
CURRENCY["BWP"] = "BWP";
|
|
198
|
+
CURRENCY["BYN"] = "BYN";
|
|
199
|
+
CURRENCY["BZD"] = "BZD";
|
|
200
|
+
CURRENCY["CAD"] = "CAD";
|
|
201
|
+
CURRENCY["CDF"] = "CDF";
|
|
202
|
+
CURRENCY["CHF"] = "CHF";
|
|
203
|
+
CURRENCY["CLP"] = "CLP";
|
|
204
|
+
CURRENCY["CNY"] = "CNY";
|
|
205
|
+
CURRENCY["COP"] = "COP";
|
|
206
|
+
CURRENCY["CRC"] = "CRC";
|
|
207
|
+
CURRENCY["CVE"] = "CVE";
|
|
208
|
+
CURRENCY["CZK"] = "CZK";
|
|
209
|
+
CURRENCY["DJF"] = "DJF";
|
|
210
|
+
CURRENCY["DKK"] = "DKK";
|
|
211
|
+
CURRENCY["DOP"] = "DOP";
|
|
212
|
+
CURRENCY["DZD"] = "DZD";
|
|
213
|
+
CURRENCY["EGP"] = "EGP";
|
|
214
|
+
CURRENCY["ERN"] = "ERN";
|
|
215
|
+
CURRENCY["ETB"] = "ETB";
|
|
216
|
+
CURRENCY["EUR"] = "EUR";
|
|
217
|
+
CURRENCY["FJD"] = "FJD";
|
|
218
|
+
CURRENCY["FKP"] = "FKP";
|
|
219
|
+
CURRENCY["GBP"] = "GBP";
|
|
220
|
+
CURRENCY["GEL"] = "GEL";
|
|
221
|
+
CURRENCY["GHS"] = "GHS";
|
|
222
|
+
CURRENCY["GIP"] = "GIP";
|
|
223
|
+
CURRENCY["GMD"] = "GMD";
|
|
224
|
+
CURRENCY["GNF"] = "GNF";
|
|
225
|
+
CURRENCY["GTQ"] = "GTQ";
|
|
226
|
+
CURRENCY["GYD"] = "GYD";
|
|
227
|
+
CURRENCY["HKD"] = "HKD";
|
|
228
|
+
CURRENCY["HNL"] = "HNL";
|
|
229
|
+
CURRENCY["HTG"] = "HTG";
|
|
230
|
+
CURRENCY["HUF"] = "HUF";
|
|
231
|
+
CURRENCY["IDR"] = "IDR";
|
|
232
|
+
CURRENCY["ILS"] = "ILS";
|
|
233
|
+
CURRENCY["INR"] = "INR";
|
|
234
|
+
CURRENCY["IQD"] = "IQD";
|
|
235
|
+
CURRENCY["IRR"] = "IRR";
|
|
236
|
+
CURRENCY["ISK"] = "ISK";
|
|
237
|
+
CURRENCY["JMD"] = "JMD";
|
|
238
|
+
CURRENCY["JOD"] = "JOD";
|
|
239
|
+
CURRENCY["JPY"] = "JPY";
|
|
240
|
+
CURRENCY["KES"] = "KES";
|
|
241
|
+
CURRENCY["KGS"] = "KGS";
|
|
242
|
+
CURRENCY["KHR"] = "KHR";
|
|
243
|
+
CURRENCY["KMF"] = "KMF";
|
|
244
|
+
CURRENCY["KPW"] = "KPW";
|
|
245
|
+
CURRENCY["KRW"] = "KRW";
|
|
246
|
+
CURRENCY["KWD"] = "KWD";
|
|
247
|
+
CURRENCY["KYD"] = "KYD";
|
|
248
|
+
CURRENCY["KZT"] = "KZT";
|
|
249
|
+
CURRENCY["LAK"] = "LAK";
|
|
250
|
+
CURRENCY["LBP"] = "LBP";
|
|
251
|
+
CURRENCY["LKR"] = "LKR";
|
|
252
|
+
CURRENCY["LSL"] = "LSL";
|
|
253
|
+
CURRENCY["LYD"] = "LYD";
|
|
254
|
+
CURRENCY["MAD"] = "MAD";
|
|
255
|
+
CURRENCY["MDL"] = "MDL";
|
|
256
|
+
CURRENCY["MGA"] = "MGA";
|
|
257
|
+
CURRENCY["MKD"] = "MKD";
|
|
258
|
+
CURRENCY["MMK"] = "MMK";
|
|
259
|
+
CURRENCY["MNT"] = "MNT";
|
|
260
|
+
CURRENCY["MOP"] = "MOP";
|
|
261
|
+
CURRENCY["MRU"] = "MRU";
|
|
262
|
+
CURRENCY["MUR"] = "MUR";
|
|
263
|
+
CURRENCY["MWK"] = "MWK";
|
|
264
|
+
CURRENCY["MXN"] = "MXN";
|
|
265
|
+
CURRENCY["MYR"] = "MYR";
|
|
266
|
+
CURRENCY["MZN"] = "MZN";
|
|
267
|
+
CURRENCY["NAD"] = "NAD";
|
|
268
|
+
CURRENCY["NGN"] = "NGN";
|
|
269
|
+
CURRENCY["NIO"] = "NIO";
|
|
270
|
+
CURRENCY["NOK"] = "NOK";
|
|
271
|
+
CURRENCY["NPR"] = "NPR";
|
|
272
|
+
CURRENCY["NZD"] = "NZD";
|
|
273
|
+
CURRENCY["OMR"] = "OMR";
|
|
274
|
+
CURRENCY["PAB"] = "PAB";
|
|
275
|
+
CURRENCY["PEN"] = "PEN";
|
|
276
|
+
CURRENCY["PGK"] = "PGK";
|
|
277
|
+
CURRENCY["PHP"] = "PHP";
|
|
278
|
+
CURRENCY["PKR"] = "PKR";
|
|
279
|
+
CURRENCY["PLN"] = "PLN";
|
|
280
|
+
CURRENCY["PYG"] = "PYG";
|
|
281
|
+
CURRENCY["QAR"] = "QAR";
|
|
282
|
+
CURRENCY["RON"] = "RON";
|
|
283
|
+
CURRENCY["RSD"] = "RSD";
|
|
284
|
+
CURRENCY["RUB"] = "RUB";
|
|
285
|
+
CURRENCY["RWF"] = "RWF";
|
|
286
|
+
CURRENCY["SAR"] = "SAR";
|
|
287
|
+
CURRENCY["SBD"] = "SBD";
|
|
288
|
+
CURRENCY["SCR"] = "SCR";
|
|
289
|
+
CURRENCY["SDG"] = "SDG";
|
|
290
|
+
CURRENCY["SEK"] = "SEK";
|
|
291
|
+
CURRENCY["SGD"] = "SGD";
|
|
292
|
+
CURRENCY["SHP"] = "SHP";
|
|
293
|
+
CURRENCY["SLL"] = "SLL";
|
|
294
|
+
CURRENCY["SOS"] = "SOS";
|
|
295
|
+
CURRENCY["SRD"] = "SRD";
|
|
296
|
+
CURRENCY["SYP"] = "SYP";
|
|
297
|
+
CURRENCY["SZL"] = "SZL";
|
|
298
|
+
CURRENCY["THB"] = "THB";
|
|
299
|
+
CURRENCY["TJS"] = "TJS";
|
|
300
|
+
CURRENCY["TMT"] = "TMT";
|
|
301
|
+
CURRENCY["TND"] = "TND";
|
|
302
|
+
CURRENCY["TOP"] = "TOP";
|
|
303
|
+
CURRENCY["TRY"] = "TRY";
|
|
304
|
+
CURRENCY["TTD"] = "TTD";
|
|
305
|
+
CURRENCY["TWD"] = "TWD";
|
|
306
|
+
CURRENCY["TZS"] = "TZS";
|
|
307
|
+
CURRENCY["UAH"] = "UAH";
|
|
308
|
+
CURRENCY["UGX"] = "UGX";
|
|
309
|
+
CURRENCY["USD"] = "USD";
|
|
310
|
+
CURRENCY["UYU"] = "UYU";
|
|
311
|
+
CURRENCY["UZS"] = "UZS";
|
|
312
|
+
CURRENCY["VES"] = "VES";
|
|
313
|
+
CURRENCY["VND"] = "VND";
|
|
314
|
+
CURRENCY["VUV"] = "VUV";
|
|
315
|
+
CURRENCY["WST"] = "WST";
|
|
316
|
+
CURRENCY["XAF"] = "XAF";
|
|
317
|
+
CURRENCY["XCD"] = "XCD";
|
|
318
|
+
CURRENCY["XOF"] = "XOF";
|
|
319
|
+
CURRENCY["XPF"] = "XPF";
|
|
320
|
+
CURRENCY["YER"] = "YER";
|
|
321
|
+
CURRENCY["ZAR"] = "ZAR";
|
|
322
|
+
CURRENCY["ZMW"] = "ZMW";
|
|
323
|
+
CURRENCY["ZWL"] = "ZWL";
|
|
324
|
+
})(CURRENCY || (CURRENCY = {}));
|
|
325
|
+
/**
|
|
326
|
+
* Access level for module-scoped permission grants
|
|
327
|
+
*/
|
|
328
|
+
export var ACCESS_LEVEL;
|
|
329
|
+
(function (ACCESS_LEVEL) {
|
|
330
|
+
ACCESS_LEVEL["READ"] = "READ";
|
|
331
|
+
ACCESS_LEVEL["READ_WRITE"] = "READ_WRITE";
|
|
332
|
+
})(ACCESS_LEVEL || (ACCESS_LEVEL = {}));
|
|
333
|
+
/**
|
|
334
|
+
* Plan types for subscription tiers
|
|
335
|
+
*/
|
|
336
|
+
export var PLAN_TYPE;
|
|
337
|
+
(function (PLAN_TYPE) {
|
|
338
|
+
PLAN_TYPE["BASIC"] = "BASIC";
|
|
339
|
+
PLAN_TYPE["PRO"] = "PRO";
|
|
340
|
+
PLAN_TYPE["ENTERPRISE"] = "ENTERPRISE";
|
|
341
|
+
})(PLAN_TYPE || (PLAN_TYPE = {}));
|
|
342
|
+
/**
|
|
343
|
+
* Billing interval used for charging (monthly or yearly)
|
|
344
|
+
*/
|
|
345
|
+
export var BILLING_INTERVAL;
|
|
346
|
+
(function (BILLING_INTERVAL) {
|
|
347
|
+
BILLING_INTERVAL["MONTHLY"] = "MONTHLY";
|
|
348
|
+
BILLING_INTERVAL["YEARLY"] = "YEARLY";
|
|
349
|
+
})(BILLING_INTERVAL || (BILLING_INTERVAL = {}));
|
|
350
|
+
/**
|
|
351
|
+
* Admission status for student applications
|
|
352
|
+
*/
|
|
353
|
+
export var ADMISSION_STATUS;
|
|
354
|
+
(function (ADMISSION_STATUS) {
|
|
355
|
+
ADMISSION_STATUS["PENDING"] = "PENDING";
|
|
356
|
+
ADMISSION_STATUS["APPROVED"] = "APPROVED";
|
|
357
|
+
ADMISSION_STATUS["REJECTED"] = "REJECTED";
|
|
358
|
+
ADMISSION_STATUS["ENROLLED"] = "ENROLLED";
|
|
359
|
+
ADMISSION_STATUS["CANCELLED"] = "CANCELLED";
|
|
360
|
+
})(ADMISSION_STATUS || (ADMISSION_STATUS = {}));
|
|
361
|
+
export var FEE_RISK_LEVEL;
|
|
362
|
+
(function (FEE_RISK_LEVEL) {
|
|
363
|
+
FEE_RISK_LEVEL["LOW"] = "LOW";
|
|
364
|
+
FEE_RISK_LEVEL["MEDIUM"] = "MEDIUM";
|
|
365
|
+
FEE_RISK_LEVEL["HIGH"] = "HIGH";
|
|
366
|
+
})(FEE_RISK_LEVEL || (FEE_RISK_LEVEL = {}));
|
|
367
|
+
export var FEE_AGENT_ACTION_TYPE;
|
|
368
|
+
(function (FEE_AGENT_ACTION_TYPE) {
|
|
369
|
+
FEE_AGENT_ACTION_TYPE["ANALYSIS"] = "ANALYSIS";
|
|
370
|
+
FEE_AGENT_ACTION_TYPE["MESSAGE"] = "MESSAGE";
|
|
371
|
+
FEE_AGENT_ACTION_TYPE["FOLLOW_UP"] = "FOLLOW_UP";
|
|
372
|
+
FEE_AGENT_ACTION_TYPE["RESPONSE"] = "RESPONSE";
|
|
373
|
+
})(FEE_AGENT_ACTION_TYPE || (FEE_AGENT_ACTION_TYPE = {}));
|
|
374
|
+
export var FEE_CONVERSATION_SENDER;
|
|
375
|
+
(function (FEE_CONVERSATION_SENDER) {
|
|
376
|
+
FEE_CONVERSATION_SENDER["AGENT"] = "AGENT";
|
|
377
|
+
FEE_CONVERSATION_SENDER["PARENT"] = "PARENT";
|
|
378
|
+
})(FEE_CONVERSATION_SENDER || (FEE_CONVERSATION_SENDER = {}));
|
|
379
|
+
export var FEE_CONVERSATION_INTENT;
|
|
380
|
+
(function (FEE_CONVERSATION_INTENT) {
|
|
381
|
+
FEE_CONVERSATION_INTENT["PROMISE"] = "PROMISE";
|
|
382
|
+
FEE_CONVERSATION_INTENT["PAID"] = "PAID";
|
|
383
|
+
FEE_CONVERSATION_INTENT["DISPUTE"] = "DISPUTE";
|
|
384
|
+
FEE_CONVERSATION_INTENT["UNKNOWN"] = "UNKNOWN";
|
|
385
|
+
})(FEE_CONVERSATION_INTENT || (FEE_CONVERSATION_INTENT = {}));
|
|
386
|
+
// ============================================================================
|
|
387
|
+
// COMMUNICATION
|
|
388
|
+
// ============================================================================
|
|
389
|
+
/**
|
|
390
|
+
* WhatsApp broadcast campaign status
|
|
391
|
+
*/
|
|
392
|
+
export var CAMPAIGN_STATUS;
|
|
393
|
+
(function (CAMPAIGN_STATUS) {
|
|
394
|
+
CAMPAIGN_STATUS["DRAFT"] = "DRAFT";
|
|
395
|
+
CAMPAIGN_STATUS["RUNNING"] = "RUNNING";
|
|
396
|
+
CAMPAIGN_STATUS["COMPLETED"] = "COMPLETED";
|
|
397
|
+
CAMPAIGN_STATUS["FAILED"] = "FAILED";
|
|
398
|
+
CAMPAIGN_STATUS["PAUSED"] = "PAUSED";
|
|
399
|
+
})(CAMPAIGN_STATUS || (CAMPAIGN_STATUS = {}));
|
|
400
|
+
/**
|
|
401
|
+
* Delivery status for an individual campaign contact
|
|
402
|
+
*/
|
|
403
|
+
export var CAMPAIGN_CONTACT_STATUS;
|
|
404
|
+
(function (CAMPAIGN_CONTACT_STATUS) {
|
|
405
|
+
CAMPAIGN_CONTACT_STATUS["PENDING"] = "PENDING";
|
|
406
|
+
CAMPAIGN_CONTACT_STATUS["SENT"] = "SENT";
|
|
407
|
+
CAMPAIGN_CONTACT_STATUS["FAILED"] = "FAILED";
|
|
408
|
+
CAMPAIGN_CONTACT_STATUS["SKIPPED"] = "SKIPPED";
|
|
409
|
+
})(CAMPAIGN_CONTACT_STATUS || (CAMPAIGN_CONTACT_STATUS = {}));
|
|
410
|
+
/**
|
|
411
|
+
* Channel through which a referral invite was sent
|
|
412
|
+
*/
|
|
413
|
+
export var REFERRAL_CHANNEL;
|
|
414
|
+
(function (REFERRAL_CHANNEL) {
|
|
415
|
+
REFERRAL_CHANNEL["EMAIL"] = "EMAIL";
|
|
416
|
+
REFERRAL_CHANNEL["WHATSAPP"] = "WHATSAPP";
|
|
417
|
+
REFERRAL_CHANNEL["BOTH"] = "BOTH";
|
|
418
|
+
})(REFERRAL_CHANNEL || (REFERRAL_CHANNEL = {}));
|
|
419
|
+
/**
|
|
420
|
+
* Status of a school referral invite
|
|
421
|
+
*/
|
|
422
|
+
export var REFERRAL_STATUS;
|
|
423
|
+
(function (REFERRAL_STATUS) {
|
|
424
|
+
REFERRAL_STATUS["PENDING"] = "PENDING";
|
|
425
|
+
REFERRAL_STATUS["SENT"] = "SENT";
|
|
426
|
+
REFERRAL_STATUS["FAILED"] = "FAILED";
|
|
427
|
+
})(REFERRAL_STATUS || (REFERRAL_STATUS = {}));
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { PDFTemplateData } from "./pdf-generator";
|
|
2
|
+
/**
|
|
3
|
+
* Admission PDF Generation Utilities
|
|
4
|
+
*
|
|
5
|
+
* Specialized functions for generating admission-related PDFs.
|
|
6
|
+
*/
|
|
7
|
+
export interface AdmissionPDFData extends PDFTemplateData {
|
|
8
|
+
firstName: string;
|
|
9
|
+
lastName: string;
|
|
10
|
+
bForm: string;
|
|
11
|
+
gender: string;
|
|
12
|
+
dob: string;
|
|
13
|
+
registrationCode: string;
|
|
14
|
+
discountCode?: string;
|
|
15
|
+
fatherFirstName: string;
|
|
16
|
+
fatherLastName: string;
|
|
17
|
+
fatherCnic: string;
|
|
18
|
+
fatherMobile: string;
|
|
19
|
+
fatherOccupation?: string;
|
|
20
|
+
fatherOrganization?: string;
|
|
21
|
+
motherFirstName: string;
|
|
22
|
+
motherLastName: string;
|
|
23
|
+
motherCnic: string;
|
|
24
|
+
motherMobile: string;
|
|
25
|
+
address: string;
|
|
26
|
+
city: string;
|
|
27
|
+
state: string;
|
|
28
|
+
country: string;
|
|
29
|
+
classForAdmission: string;
|
|
30
|
+
previousSchool?: string;
|
|
31
|
+
siblings?: string;
|
|
32
|
+
notes?: string;
|
|
33
|
+
admissionNotes?: string;
|
|
34
|
+
schoolName?: string;
|
|
35
|
+
schoolAddress?: string;
|
|
36
|
+
schoolPhone?: string;
|
|
37
|
+
schoolEmail?: string;
|
|
38
|
+
submissionDate?: string;
|
|
39
|
+
admissionStatus?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generate admission form PDF
|
|
43
|
+
*
|
|
44
|
+
* @param admissionData - Admission form data
|
|
45
|
+
* @param options - Additional PDF options
|
|
46
|
+
* @returns Promise<Buffer> - PDF buffer
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateAdmissionPDF(admissionData: AdmissionPDFData, options?: {
|
|
49
|
+
filename?: string;
|
|
50
|
+
orientation?: "portrait" | "landscape";
|
|
51
|
+
format?: "a4" | "letter" | "legal";
|
|
52
|
+
}): Promise<Uint8Array>;
|
|
53
|
+
/**
|
|
54
|
+
* Download admission form PDF
|
|
55
|
+
*
|
|
56
|
+
* @param admissionData - Admission form data
|
|
57
|
+
* @param options - Additional PDF options
|
|
58
|
+
*/
|
|
59
|
+
export declare function downloadAdmissionPDF(admissionData: AdmissionPDFData, options?: {
|
|
60
|
+
filename?: string;
|
|
61
|
+
orientation?: "portrait" | "landscape";
|
|
62
|
+
format?: "a4" | "letter" | "legal";
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Print admission form PDF
|
|
66
|
+
*
|
|
67
|
+
* @param admissionData - Admission form data
|
|
68
|
+
* @param printerOptions - Printer options
|
|
69
|
+
*/
|
|
70
|
+
export declare function printAdmissionPDF(admissionData: AdmissionPDFData): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Generate admission receipt PDF
|
|
73
|
+
*
|
|
74
|
+
* @param admissionData - Admission form data with payment info
|
|
75
|
+
* @param paymentData - Payment information
|
|
76
|
+
* @returns Promise<Buffer> - PDF buffer
|
|
77
|
+
*/
|
|
78
|
+
export declare function generateAdmissionReceiptPDF(admissionData: AdmissionPDFData): Promise<void>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { schoolAdmissionTemplateV1 } from "@appcorp/app-corp-vista/pdf-templates/school-admission-template-v1";
|
|
13
|
+
import { generatePDF, downloadPDF, printPDF, } from "./pdf-generator";
|
|
14
|
+
/**
|
|
15
|
+
* Generate admission form PDF
|
|
16
|
+
*
|
|
17
|
+
* @param admissionData - Admission form data
|
|
18
|
+
* @param options - Additional PDF options
|
|
19
|
+
* @returns Promise<Buffer> - PDF buffer
|
|
20
|
+
*/
|
|
21
|
+
export async function generateAdmissionPDF(admissionData, options) {
|
|
22
|
+
const _a = options || {}, { filename = `admission-${admissionData.registrationCode}.pdf` } = _a, pdfOptions = __rest(_a, ["filename"]);
|
|
23
|
+
return generatePDF(Object.assign({ template: schoolAdmissionTemplateV1, data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
|
|
24
|
+
// Map admission data to template fields
|
|
25
|
+
heading: "Admission Form", studentName: `${admissionData.firstName} ${admissionData.lastName}`, bForm: admissionData.bForm, fatherName: `${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, motherName: `${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: admissionData.address, class: admissionData.classForAdmission }), filename }, pdfOptions));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Download admission form PDF
|
|
29
|
+
*
|
|
30
|
+
* @param admissionData - Admission form data
|
|
31
|
+
* @param options - Additional PDF options
|
|
32
|
+
*/
|
|
33
|
+
export async function downloadAdmissionPDF(admissionData, options) {
|
|
34
|
+
const _a = options || {}, { filename = `admission-${admissionData.registrationCode}.pdf` } = _a, pdfOptions = __rest(_a, ["filename"]);
|
|
35
|
+
return downloadPDF(Object.assign({ template: schoolAdmissionTemplateV1, data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
|
|
36
|
+
// Map admission data to template fields
|
|
37
|
+
heading: "Admission Form", studentName: `${admissionData.firstName} ${admissionData.lastName}`, bForm: admissionData.bForm, fatherName: `${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, motherName: `${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: admissionData.address, class: admissionData.classForAdmission }), filename }, pdfOptions));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Print admission form PDF
|
|
41
|
+
*
|
|
42
|
+
* @param admissionData - Admission form data
|
|
43
|
+
* @param printerOptions - Printer options
|
|
44
|
+
*/
|
|
45
|
+
export async function printAdmissionPDF(admissionData) {
|
|
46
|
+
return printPDF({
|
|
47
|
+
template: schoolAdmissionTemplateV1,
|
|
48
|
+
data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
|
|
49
|
+
// Map admission data to template fields
|
|
50
|
+
formHeading: "Admission Form", schoolName: "Lahore Garrison Grammar School", date: `Date: ${new Date().toLocaleDateString()}`, studentName: `Student Name: ${admissionData.firstName} ${admissionData.lastName}`, bForm: `B. Form: ${admissionData.bForm}`, fatherName: `Father's Name: ${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, classToBeAdmitted: `Class for Admission: ${admissionData.classForAdmission}`, motherName: `Mother's Name: ${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: `Address: ${admissionData.address}`, class: `Class for Admission: ${admissionData.classForAdmission}`, schoolAddress: "123 Main Street, Lahore", registration: `Registration Code: ${admissionData.registrationCode}`,
|
|
51
|
+
// logo: await convertUrlToBase64(
|
|
52
|
+
// admissionData.schoolLogoUrl ||
|
|
53
|
+
// "https://lggs.edu.pk/wp-content/uploads/2019/12/lggs-150.jpg"
|
|
54
|
+
// ),
|
|
55
|
+
gender: `Gender: ${admissionData.gender}`, dob: `DoB: ${admissionData.dob}`, fatherCNIC: `Father's CNIC: ${admissionData.fatherCnic}`, fatherMobile: `Father's Mobile: ${admissionData.fatherMobile}`, fatherOccupation: `Father's Occupation: ${admissionData.fatherOccupation || "N/A"}`, fatherOrganization: `Father's Organization: ${admissionData.fatherOrganization || "N/A"}`, motherCNIC: `Mother's CNIC: ${admissionData.motherCnic}`, motherMobile: `Mother's Mobile: ${admissionData.motherMobile}`, homeAddress: `Home Address: ${admissionData.address}, ${admissionData.city}, ${admissionData.state}, ${admissionData.country}`, relation: `Who to contact: ${admissionData.emergencyContact === "Mother" ? "Mother" : "Father"}`, notes: `Additional Notes: ${admissionData.notes || "N/A"}`, student: "Student:", startDate: "Start Date:", section: "Section:", logo: `data:image/jpeg;base64,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` }),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate admission receipt PDF
|
|
60
|
+
*
|
|
61
|
+
* @param admissionData - Admission form data with payment info
|
|
62
|
+
* @param paymentData - Payment information
|
|
63
|
+
* @returns Promise<Buffer> - PDF buffer
|
|
64
|
+
*/
|
|
65
|
+
export async function generateAdmissionReceiptPDF(admissionData) {
|
|
66
|
+
await downloadPDF({
|
|
67
|
+
template: schoolAdmissionTemplateV1,
|
|
68
|
+
data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
|
|
69
|
+
// Map admission data to template fields
|
|
70
|
+
formHeading: "Admission Form", schoolName: "Lahore Garrison Grammar School", date: `Date: ${new Date().toLocaleDateString()}`, studentName: `Student Name: ${admissionData.firstName} ${admissionData.lastName}`, bForm: `B. Form: ${admissionData.bForm}`, fatherName: `Father's Name: ${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, classToBeAdmitted: `Class for Admission: ${admissionData.classForAdmission}`, motherName: `Mother's Name: ${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: `Address: ${admissionData.address}`, class: `Class for Admission: ${admissionData.classForAdmission}`, schoolAddress: "123 Main Street, Lahore", registration: `Registration Code: ${admissionData.registrationCode}`, gender: `Gender: ${admissionData.gender}`, dob: `DoB: ${admissionData.dob}`, fatherCNIC: `Father's CNIC: ${admissionData.fatherCnic}`, fatherMobile: `Father's Mobile: ${admissionData.fatherMobile}`, fatherOccupation: `Father's Occupation: ${admissionData.fatherOccupation || "N/A"}`, fatherOrganization: `Father's Organization: ${admissionData.fatherOrganization || "N/A"}`, motherCNIC: `Mother's CNIC: ${admissionData.motherCnic}`, motherMobile: `Mother's Mobile: ${admissionData.motherMobile}`, homeAddress: `Home Address: ${admissionData.address}, ${admissionData.city}, ${admissionData.state}, ${admissionData.country}`, relation: `Who to contact: ${admissionData.emergencyContact === "Mother" ? "Mother" : "Father"}`, notes: `Additional Notes: ${admissionData.notes || "N/A"}`, student: "Student:", startDate: "Start Date:", section: "Section:", logo: admissionData.logo }),
|
|
71
|
+
filename: `admission-${admissionData.registrationCode}.pdf`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const clearCache: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatValue: (v?: string | number | null) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const formatValue = (v) => v === undefined || v === null || v === "" ? "—" : String(v);
|