@kipicore/dbcore 1.1.30 → 1.1.33

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 (220) hide show
  1. package/dist/models/psql/SubCategoriesModel.d.ts +1 -0
  2. package/dist/models/psql/SubCategoriesModel.js +60 -63
  3. package/dist/models/psql/academicCalendarModel.d.ts +2 -1
  4. package/dist/models/psql/academicCalendarModel.js +41 -53
  5. package/dist/models/psql/accountHasReceiptDetailsModel.d.ts +6 -5
  6. package/dist/models/psql/accountHasReceiptDetailsModel.js +47 -68
  7. package/dist/models/psql/announcementModel.d.ts +10 -8
  8. package/dist/models/psql/announcementModel.js +90 -109
  9. package/dist/models/psql/areaModel.d.ts +5 -1
  10. package/dist/models/psql/areaModel.js +13 -12
  11. package/dist/models/psql/bankAccountDetailsModel.d.ts +6 -5
  12. package/dist/models/psql/bankAccountDetailsModel.js +25 -37
  13. package/dist/models/psql/bannerModel.d.ts +18 -18
  14. package/dist/models/psql/bannerModel.js +53 -81
  15. package/dist/models/psql/batchModel.d.ts +3 -1
  16. package/dist/models/psql/batchModel.js +77 -135
  17. package/dist/models/psql/batchSubjectBookAssessmentModel.d.ts +2 -1
  18. package/dist/models/psql/batchSubjectBookAssessmentModel.js +57 -104
  19. package/dist/models/psql/batchSubjectProjectAssessmentModel.d.ts +2 -1
  20. package/dist/models/psql/batchSubjectProjectAssessmentModel.js +59 -92
  21. package/dist/models/psql/bookAssessmentDateModel.d.ts +2 -1
  22. package/dist/models/psql/bookAssessmentDateModel.js +26 -46
  23. package/dist/models/psql/categoriesModel.d.ts +2 -1
  24. package/dist/models/psql/categoriesModel.js +25 -45
  25. package/dist/models/psql/cityModel.d.ts +2 -1
  26. package/dist/models/psql/cityModel.js +21 -33
  27. package/dist/models/psql/classRoomModel.d.ts +2 -1
  28. package/dist/models/psql/classRoomModel.js +41 -67
  29. package/dist/models/psql/cloudStorageModel.d.ts +2 -1
  30. package/dist/models/psql/cloudStorageModel.js +18 -29
  31. package/dist/models/psql/coinPurchaseOfferModel.d.ts +5 -4
  32. package/dist/models/psql/coinPurchaseOfferModel.js +18 -29
  33. package/dist/models/psql/contactFeedBackModel.d.ts +2 -1
  34. package/dist/models/psql/contactFeedBackModel.js +49 -62
  35. package/dist/models/psql/countryModel.d.ts +1 -1
  36. package/dist/models/psql/countryModel.js +2 -0
  37. package/dist/models/psql/courseHasVisitorsModel.d.ts +2 -1
  38. package/dist/models/psql/courseHasVisitorsModel.js +25 -38
  39. package/dist/models/psql/courseModel.d.ts +2 -1
  40. package/dist/models/psql/courseModel.js +41 -56
  41. package/dist/models/psql/driverModel.d.ts +3 -1
  42. package/dist/models/psql/driverModel.js +61 -65
  43. package/dist/models/psql/entityGroupModel.d.ts +2 -1
  44. package/dist/models/psql/entityGroupModel.js +25 -45
  45. package/dist/models/psql/facilityModel.d.ts +3 -1
  46. package/dist/models/psql/facilityModel.js +63 -73
  47. package/dist/models/psql/featureActionModel.d.ts +3 -2
  48. package/dist/models/psql/featureActionModel.js +21 -36
  49. package/dist/models/psql/feeHistoryDetailsModel.d.ts +2 -1
  50. package/dist/models/psql/feeHistoryDetailsModel.js +65 -106
  51. package/dist/models/psql/feeHistoryModel.d.ts +4 -2
  52. package/dist/models/psql/feeHistoryModel.js +154 -309
  53. package/dist/models/psql/feeReminderModel.d.ts +2 -0
  54. package/dist/models/psql/feeReminderModel.js +147 -179
  55. package/dist/models/psql/feeReminderSettingModel.d.ts +1 -0
  56. package/dist/models/psql/feeReminderSettingModel.js +23 -47
  57. package/dist/models/psql/feeTypeHasTermsModel.d.ts +1 -0
  58. package/dist/models/psql/feeTypeHasTermsModel.js +48 -51
  59. package/dist/models/psql/feeTypeModel.d.ts +1 -0
  60. package/dist/models/psql/feeTypeModel.js +44 -72
  61. package/dist/models/psql/feesCollectionModel.d.ts +2 -0
  62. package/dist/models/psql/feesCollectionModel.js +112 -144
  63. package/dist/models/psql/fileStorageModel.d.ts +1 -0
  64. package/dist/models/psql/fileStorageModel.js +27 -29
  65. package/dist/models/psql/floorManagementModel.d.ts +1 -0
  66. package/dist/models/psql/floorManagementModel.js +23 -42
  67. package/dist/models/psql/greetingsModel.d.ts +3 -2
  68. package/dist/models/psql/greetingsModel.js +64 -66
  69. package/dist/models/psql/homeWorkModel.d.ts +1 -0
  70. package/dist/models/psql/homeWorkModel.js +40 -70
  71. package/dist/models/psql/index.js +6 -3
  72. package/dist/models/psql/instituteEntityModel.d.ts +1 -0
  73. package/dist/models/psql/instituteEntityModel.js +59 -62
  74. package/dist/models/psql/instituteEntityTypeModel.d.ts +1 -0
  75. package/dist/models/psql/instituteEntityTypeModel.js +15 -28
  76. package/dist/models/psql/instituteModel.d.ts +1 -0
  77. package/dist/models/psql/instituteModel.js +66 -185
  78. package/dist/models/psql/instituteSubscriptionPlanModel.d.ts +1 -0
  79. package/dist/models/psql/instituteSubscriptionPlanModel.js +40 -81
  80. package/dist/models/psql/inventoryHistoryModel.d.ts +1 -0
  81. package/dist/models/psql/inventoryHistoryModel.js +39 -79
  82. package/dist/models/psql/inventoryModel.d.ts +1 -0
  83. package/dist/models/psql/inventoryModel.js +31 -62
  84. package/dist/models/psql/lectureHistoryModel.d.ts +1 -0
  85. package/dist/models/psql/lectureHistoryModel.js +65 -196
  86. package/dist/models/psql/lectureModel.d.ts +2 -0
  87. package/dist/models/psql/lectureModel.js +191 -454
  88. package/dist/models/psql/masterLeaveModel.d.ts +2 -0
  89. package/dist/models/psql/masterLeaveModel.js +71 -71
  90. package/dist/models/psql/moduleFeatureModel.d.ts +1 -0
  91. package/dist/models/psql/moduleFeatureModel.js +41 -44
  92. package/dist/models/psql/moduleModel.d.ts +1 -0
  93. package/dist/models/psql/moduleModel.js +48 -52
  94. package/dist/models/psql/offerModel.d.ts +1 -0
  95. package/dist/models/psql/offerModel.js +43 -64
  96. package/dist/models/psql/paymentTermsModel.d.ts +1 -0
  97. package/dist/models/psql/paymentTermsModel.js +43 -45
  98. package/dist/models/psql/pdcChequeModel.d.ts +1 -0
  99. package/dist/models/psql/pdcChequeModel.js +59 -64
  100. package/dist/models/psql/pdcHistoryModel.d.ts +1 -0
  101. package/dist/models/psql/pdcHistoryModel.js +55 -73
  102. package/dist/models/psql/pincodeModel.d.ts +1 -0
  103. package/dist/models/psql/pincodeModel.js +6 -9
  104. package/dist/models/psql/productModel.d.ts +1 -0
  105. package/dist/models/psql/productModel.js +40 -80
  106. package/dist/models/psql/projectAssessmentOptionModel.d.ts +1 -0
  107. package/dist/models/psql/projectAssessmentOptionModel.js +23 -45
  108. package/dist/models/psql/roleModel.d.ts +1 -0
  109. package/dist/models/psql/roleModel.js +15 -38
  110. package/dist/models/psql/rulesRegulationModel.d.ts +3 -2
  111. package/dist/models/psql/rulesRegulationModel.js +20 -33
  112. package/dist/models/psql/schoolFeeCollectionModel.d.ts +1 -0
  113. package/dist/models/psql/schoolFeeCollectionModel.js +47 -94
  114. package/dist/models/psql/schoolOfferModel.d.ts +1 -0
  115. package/dist/models/psql/schoolOfferModel.js +39 -78
  116. package/dist/models/psql/sendNotificationModel.d.ts +1 -0
  117. package/dist/models/psql/sendNotificationModel.js +37 -61
  118. package/dist/models/psql/slotModel.d.ts +2 -0
  119. package/dist/models/psql/slotModel.js +46 -58
  120. package/dist/models/psql/stateModel.d.ts +1 -0
  121. package/dist/models/psql/stateModel.js +17 -18
  122. package/dist/models/psql/subjectHasFeeModel.d.ts +1 -0
  123. package/dist/models/psql/subjectHasFeeModel.js +49 -46
  124. package/dist/models/psql/subjectHasPayFeeHistoryModel.d.ts +1 -0
  125. package/dist/models/psql/subjectHasPayFeeHistoryModel.js +74 -69
  126. package/dist/models/psql/syllabusModel.d.ts +1 -0
  127. package/dist/models/psql/syllabusModel.js +72 -85
  128. package/dist/models/psql/testimonialModel.d.ts +2 -0
  129. package/dist/models/psql/testimonialModel.js +97 -100
  130. package/dist/models/psql/toDoModel.d.ts +2 -0
  131. package/dist/models/psql/toDoModel.js +64 -64
  132. package/dist/models/psql/tripModel.d.ts +1 -0
  133. package/dist/models/psql/tripModel.js +51 -55
  134. package/dist/models/psql/typeManagementModel.d.ts +2 -0
  135. package/dist/models/psql/typeManagementModel.js +69 -69
  136. package/dist/models/psql/userBookAssessmentModel.d.ts +1 -0
  137. package/dist/models/psql/userBookAssessmentModel.js +83 -89
  138. package/dist/models/psql/userFeeTypeByAccountModel.d.ts +1 -0
  139. package/dist/models/psql/userFeeTypeByAccountModel.js +117 -122
  140. package/dist/models/psql/userFeeTypeModel.d.ts +1 -0
  141. package/dist/models/psql/userFeeTypeModel.js +97 -102
  142. package/dist/models/psql/userHasAnnouncementModel.d.ts +1 -0
  143. package/dist/models/psql/userHasAnnouncementModel.js +63 -66
  144. package/dist/models/psql/userHasBatchModel.d.ts +1 -0
  145. package/dist/models/psql/userHasBatchModel.js +55 -57
  146. package/dist/models/psql/userHasCourseModel.d.ts +1 -0
  147. package/dist/models/psql/userHasCourseModel.js +51 -55
  148. package/dist/models/psql/userHasDeviceModel.d.ts +1 -0
  149. package/dist/models/psql/userHasDeviceModel.js +35 -38
  150. package/dist/models/psql/userHasFeeTermsModel.d.ts +1 -0
  151. package/dist/models/psql/userHasFeeTermsModel.js +51 -117
  152. package/dist/models/psql/userHasFileModel.d.ts +1 -0
  153. package/dist/models/psql/userHasFileModel.js +33 -61
  154. package/dist/models/psql/userHasHomeWorkModel.d.ts +9 -6
  155. package/dist/models/psql/userHasHomeWorkModel.js +50 -72
  156. package/dist/models/psql/userHasInventoryHistoryModel.d.ts +5 -4
  157. package/dist/models/psql/userHasInventoryHistoryModel.js +42 -59
  158. package/dist/models/psql/userHasInventoryModel.d.ts +5 -4
  159. package/dist/models/psql/userHasInventoryModel.js +30 -54
  160. package/dist/models/psql/userHasLeaveHistoryModel.d.ts +5 -4
  161. package/dist/models/psql/userHasLeaveHistoryModel.js +21 -36
  162. package/dist/models/psql/userHasLeaveModel.d.ts +6 -5
  163. package/dist/models/psql/userHasLeaveModel.js +47 -68
  164. package/dist/models/psql/userHasOfferModel.d.ts +8 -7
  165. package/dist/models/psql/userHasOfferModel.js +54 -109
  166. package/dist/models/psql/userHasParentModel.d.ts +7 -5
  167. package/dist/models/psql/userHasParentModel.js +38 -65
  168. package/dist/models/psql/userHasRoleModel.d.ts +6 -5
  169. package/dist/models/psql/userHasRoleModel.js +27 -56
  170. package/dist/models/psql/userHasRollNumberModel.d.ts +5 -4
  171. package/dist/models/psql/userHasRollNumberModel.js +39 -54
  172. package/dist/models/psql/userHasStorageModel.d.ts +5 -4
  173. package/dist/models/psql/userHasStorageModel.js +31 -35
  174. package/dist/models/psql/userHasSubjectFeeModel.d.ts +5 -4
  175. package/dist/models/psql/userHasSubjectFeeModel.js +32 -47
  176. package/dist/models/psql/userLeaveRequestModel.d.ts +6 -5
  177. package/dist/models/psql/userLeaveRequestModel.js +24 -40
  178. package/dist/models/psql/userModel.d.ts +2 -2
  179. package/dist/models/psql/userModel.js +174 -370
  180. package/dist/models/psql/userPayoutDetailsModel.d.ts +1 -0
  181. package/dist/models/psql/userPayoutDetailsModel.js +65 -146
  182. package/dist/models/psql/userPayoutHistoryModel.d.ts +1 -0
  183. package/dist/models/psql/userPayoutHistoryModel.js +39 -66
  184. package/dist/models/psql/userPayoutModel.d.ts +2 -0
  185. package/dist/models/psql/userPayoutModel.js +205 -240
  186. package/dist/models/psql/userProjectAssessmentOptionModel.d.ts +1 -0
  187. package/dist/models/psql/userProjectAssessmentOptionModel.js +39 -74
  188. package/dist/models/psql/userRequiredStepsModel.d.ts +1 -0
  189. package/dist/models/psql/userRequiredStepsModel.js +23 -36
  190. package/dist/models/psql/vehicleModel.d.ts +1 -0
  191. package/dist/models/psql/vehicleModel.js +27 -53
  192. package/dist/models/psql/vendorManagementModel.d.ts +6 -5
  193. package/dist/models/psql/vendorManagementModel.js +48 -97
  194. package/dist/models/psql/walletHistoryModel.d.ts +2 -1
  195. package/dist/models/psql/walletHistoryModel.js +31 -33
  196. package/dist/models/psql/walletModel.d.ts +2 -1
  197. package/dist/models/psql/walletModel.js +28 -46
  198. package/dist/models/psql/workingDayModel.d.ts +3 -2
  199. package/dist/models/psql/workingDayModel.js +18 -31
  200. package/dist/models/psql/workingShiftModel.d.ts +3 -2
  201. package/dist/models/psql/workingShiftModel.js +43 -40
  202. package/dist/types/accountHasReceiptDetailsType.d.ts +1 -1
  203. package/dist/types/bannerType.d.ts +1 -1
  204. package/dist/types/batchSubjectBookAssessmentType.d.ts +1 -1
  205. package/dist/types/batchSubjectProjectAssessmentType.d.ts +1 -1
  206. package/dist/types/batchType.d.ts +1 -1
  207. package/dist/types/bookAssessmentDateType.d.ts +1 -1
  208. package/dist/types/examType.d.ts +1 -1
  209. package/dist/types/feeHistoryType.d.ts +1 -1
  210. package/dist/types/greetingsType.d.ts +1 -1
  211. package/dist/types/holidayType.js +1 -1
  212. package/dist/types/paymentTermsType.js +1 -1
  213. package/dist/types/projectAssessmentOptionType.d.ts +1 -1
  214. package/dist/types/subjectIndexType.d.ts +1 -1
  215. package/dist/types/syllabusType.d.ts +1 -1
  216. package/dist/types/testimonialType.d.ts +1 -1
  217. package/dist/types/userBookAssessmentType.d.ts +1 -1
  218. package/dist/types/userHasBatchType.d.ts +1 -1
  219. package/dist/types/userProjectAssessmentOptionType.d.ts +1 -1
  220. package/package.json +1 -1
@@ -1,19 +1,157 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const sequelize_1 = require("sequelize");
7
4
  const index_1 = require("./index");
8
- const instituteModel_1 = __importDefault(require("./instituteModel"));
9
- const userModel_1 = __importDefault(require("./userModel"));
10
- const feesCollectionModel_1 = __importDefault(require("./feesCollectionModel"));
11
- const feeReminderSettingModel_1 = __importDefault(require("./feeReminderSettingModel"));
12
5
  const errorMessages_1 = require("../../constants/errorMessages");
13
6
  const app_1 = require("../../constants/app");
14
- const userHasBatchModel_1 = __importDefault(require("./userHasBatchModel"));
15
- const batchModel_1 = __importDefault(require("./batchModel"));
16
7
  class FeeReminderModel extends sequelize_1.Model {
8
+ static associate(models) {
9
+ const { UserModel, InstituteModel, FeesCollectionModel, FeeReminderSettingModel, } = models;
10
+ FeeReminderModel.belongsTo(UserModel, {
11
+ foreignKey: { name: 'userId', field: 'user_id' },
12
+ as: 'reminderUser',
13
+ });
14
+ UserModel.hasMany(FeeReminderModel, {
15
+ foreignKey: 'userId',
16
+ as: 'userReminders',
17
+ });
18
+ FeeReminderModel.belongsTo(FeeReminderSettingModel, {
19
+ foreignKey: { name: 'templateId', field: 'template_id' },
20
+ as: 'reminderTemplate',
21
+ });
22
+ FeeReminderSettingModel.hasMany(FeeReminderModel, {
23
+ foreignKey: 'templateId',
24
+ as: 'TemplateReminders',
25
+ });
26
+ FeeReminderModel.belongsTo(InstituteModel, {
27
+ foreignKey: { name: 'instituteId', field: 'institute_id' },
28
+ as: 'reminderInstitute',
29
+ });
30
+ InstituteModel.hasMany(FeeReminderModel, {
31
+ foreignKey: 'instituteId',
32
+ as: 'instituteReminders',
33
+ });
34
+ FeeReminderModel.belongsTo(UserModel, {
35
+ foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
36
+ as: 'createdByUser',
37
+ });
38
+ FeeReminderModel.belongsTo(UserModel, {
39
+ foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
40
+ as: 'updatedByUser',
41
+ });
42
+ FeeReminderModel.belongsTo(UserModel, {
43
+ foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
44
+ as: 'deletedByUser',
45
+ });
46
+ FeeReminderModel.belongsTo(FeesCollectionModel, {
47
+ foreignKey: { name: 'feeCollectionId', field: 'fee_collection_id' },
48
+ as: 'feeCollection',
49
+ });
50
+ FeesCollectionModel.hasMany(FeeReminderModel, {
51
+ foreignKey: 'feeCollectionId',
52
+ as: 'feeReminders',
53
+ });
54
+ }
55
+ static addHooks(models) {
56
+ const { BatchModel, UserHasBatchModel, FeesCollectionModel } = models;
57
+ const beforeCreateHook = async (feeReminder) => {
58
+ if (feeReminder.userId && feeReminder.batchId && feeReminder.instituteId) {
59
+ const { batchId, instituteId, userId } = feeReminder;
60
+ const batchExists = await BatchModel.findOne({
61
+ where: { id: batchId, instituteId },
62
+ });
63
+ if (!batchExists) {
64
+ throw new Error(errorMessages_1.BATCH_ERROR_MESSAGES.NOT_FOUND);
65
+ }
66
+ const userInBatch = await UserHasBatchModel.findOne({
67
+ where: { userId, batchId },
68
+ });
69
+ if (!userInBatch) {
70
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.USER_NOT_IN_BATCH);
71
+ }
72
+ if (feeReminder.subjectId) {
73
+ const validSubject = await UserHasBatchModel.findOne({
74
+ where: {
75
+ userId,
76
+ batchId,
77
+ subjects: { [sequelize_1.Op.contains]: [feeReminder.subjectId] },
78
+ },
79
+ });
80
+ if (!validSubject) {
81
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.SUBJECT_INVALID);
82
+ }
83
+ }
84
+ if (feeReminder.feeCollectionId) {
85
+ const validFeeCollection = await FeesCollectionModel.findOne({
86
+ where: {
87
+ userId,
88
+ instituteId,
89
+ status: { [sequelize_1.Op.ne]: app_1.FEE_PAYMENT_STATUS.COMPLETED },
90
+ },
91
+ });
92
+ if (!validFeeCollection) {
93
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.FEE_COLLECTION_NOT_FOUND);
94
+ }
95
+ }
96
+ }
97
+ };
98
+ const beforeUpdateHook = async (feeReminder) => {
99
+ if (!feeReminder.id) {
100
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.INVALID_INPUT);
101
+ }
102
+ const existingReminder = await FeeReminderModel.findByPk(feeReminder.id);
103
+ if (!existingReminder) {
104
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.NOT_FOUND);
105
+ }
106
+ const batchId = feeReminder.batchId || existingReminder.batchId;
107
+ const instituteId = feeReminder.instituteId || existingReminder.instituteId;
108
+ const userId = feeReminder.userId || existingReminder.userId;
109
+ const batchExists = await BatchModel.findOne({
110
+ where: { id: batchId, instituteId },
111
+ });
112
+ if (!batchExists) {
113
+ throw new Error(errorMessages_1.BATCH_ERROR_MESSAGES.NOT_FOUND);
114
+ }
115
+ const userInBatch = await UserHasBatchModel.findOne({
116
+ where: { userId, batchId },
117
+ });
118
+ if (!userInBatch) {
119
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.USER_NOT_IN_BATCH);
120
+ }
121
+ if (feeReminder.subjectId) {
122
+ const validSubject = await UserHasBatchModel.findOne({
123
+ where: {
124
+ userId,
125
+ batchId,
126
+ subjects: { [sequelize_1.Op.contains]: [feeReminder.subjectId] },
127
+ },
128
+ });
129
+ if (!validSubject) {
130
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.SUBJECT_INVALID);
131
+ }
132
+ }
133
+ if (feeReminder.feeCollectionId) {
134
+ const validFeeCollection = await FeesCollectionModel.findOne({
135
+ where: {
136
+ userId,
137
+ instituteId,
138
+ status: { [sequelize_1.Op.ne]: app_1.FEE_PAYMENT_STATUS.COMPLETED },
139
+ },
140
+ });
141
+ if (!validFeeCollection) {
142
+ throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.FEE_COLLECTION_NOT_FOUND);
143
+ }
144
+ }
145
+ };
146
+ FeeReminderModel.beforeBulkCreate(async (feeReminders) => {
147
+ for (const instance of feeReminders) {
148
+ await beforeCreateHook(instance);
149
+ }
150
+ });
151
+ FeeReminderModel.beforeBulkUpdate(async (options) => {
152
+ await beforeUpdateHook(options.attributes);
153
+ });
154
+ }
17
155
  }
18
156
  FeeReminderModel.init({
19
157
  id: {
@@ -66,174 +204,4 @@ FeeReminderModel.init({
66
204
  timestamps: true,
67
205
  sequelize: index_1.sequelize,
68
206
  });
69
- FeeReminderModel.belongsTo(userModel_1.default, {
70
- foreignKey: {
71
- name: 'userId',
72
- field: 'user_id',
73
- },
74
- as: 'reminderUser',
75
- });
76
- userModel_1.default.hasMany(FeeReminderModel, {
77
- foreignKey: 'userId',
78
- as: 'userReminders',
79
- });
80
- FeeReminderModel.belongsTo(feeReminderSettingModel_1.default, {
81
- foreignKey: {
82
- name: 'templateId',
83
- field: 'template_id',
84
- },
85
- as: 'reminderTemplate',
86
- });
87
- feeReminderSettingModel_1.default.hasMany(FeeReminderModel, {
88
- foreignKey: 'templateId',
89
- as: 'TemplateReminders',
90
- });
91
- FeeReminderModel.belongsTo(instituteModel_1.default, {
92
- foreignKey: {
93
- name: 'instituteId',
94
- field: 'institute_id',
95
- },
96
- as: 'reminderInstitute',
97
- });
98
- instituteModel_1.default.hasMany(FeeReminderModel, {
99
- foreignKey: 'instituteId',
100
- as: 'instituteReminders',
101
- });
102
- FeeReminderModel.belongsTo(userModel_1.default, {
103
- foreignKey: {
104
- name: 'createdBy',
105
- allowNull: true,
106
- field: 'created_by',
107
- },
108
- as: 'createdByUser',
109
- });
110
- FeeReminderModel.belongsTo(userModel_1.default, {
111
- foreignKey: {
112
- name: 'updatedBy',
113
- allowNull: true,
114
- field: 'updated_by',
115
- },
116
- as: 'updatedByUser',
117
- });
118
- FeeReminderModel.belongsTo(userModel_1.default, {
119
- foreignKey: {
120
- name: 'deletedBy',
121
- allowNull: true,
122
- field: 'deleted_by',
123
- },
124
- as: 'deletedByUser',
125
- });
126
- FeeReminderModel.belongsTo(feesCollectionModel_1.default, {
127
- foreignKey: {
128
- name: 'feeCollectionId',
129
- field: 'fee_collection_id',
130
- },
131
- as: 'feeCollection',
132
- });
133
- feesCollectionModel_1.default.hasMany(FeeReminderModel, {
134
- foreignKey: 'feeCollectionId',
135
- as: 'feeReminders',
136
- });
137
- const beforeCreateHook = async (feeReminder) => {
138
- if (feeReminder.userId && feeReminder.batchId && feeReminder.instituteId) {
139
- const { batchId, instituteId, userId } = feeReminder;
140
- const batchExists = await batchModel_1.default.findOne({
141
- where: { id: batchId, instituteId },
142
- });
143
- if (!batchExists) {
144
- throw new Error(errorMessages_1.BATCH_ERROR_MESSAGES.NOT_FOUND);
145
- }
146
- const userInBatch = await userHasBatchModel_1.default.findOne({
147
- where: { userId, batchId },
148
- });
149
- if (!userInBatch) {
150
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.USER_NOT_IN_BATCH);
151
- }
152
- if (feeReminder.subjectId) {
153
- const validSubject = await userHasBatchModel_1.default.findOne({
154
- where: {
155
- userId,
156
- batchId,
157
- subjects: { [sequelize_1.Op.contains]: [feeReminder.subjectId] },
158
- },
159
- });
160
- if (!validSubject) {
161
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.SUBJECT_INVALID);
162
- }
163
- }
164
- if (feeReminder.feeCollectionId) {
165
- const validFeeCollection = await feesCollectionModel_1.default.findOne({
166
- where: {
167
- userId,
168
- instituteId,
169
- status: { [sequelize_1.Op.ne]: app_1.FEE_PAYMENT_STATUS.COMPLETED },
170
- },
171
- });
172
- if (!validFeeCollection) {
173
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.FEE_COLLECTION_NOT_FOUND);
174
- }
175
- }
176
- }
177
- };
178
- const beforeUpdateHook = async (feeReminder) => {
179
- if (feeReminder.id) {
180
- const existingReminder = await FeeReminderModel.findByPk(feeReminder.id);
181
- if (!existingReminder) {
182
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.NOT_FOUND);
183
- }
184
- const batchId = feeReminder.batchId || existingReminder.batchId;
185
- const instituteId = feeReminder.instituteId || existingReminder.instituteId;
186
- const userId = feeReminder.userId || existingReminder.userId;
187
- const batchExists = await batchModel_1.default.findOne({
188
- where: {
189
- id: batchId,
190
- instituteId,
191
- },
192
- });
193
- if (!batchExists) {
194
- throw new Error(errorMessages_1.BATCH_ERROR_MESSAGES.NOT_FOUND);
195
- }
196
- const userInBatch = await userHasBatchModel_1.default.findOne({
197
- where: { userId, batchId },
198
- });
199
- if (!userInBatch) {
200
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.USER_NOT_IN_BATCH);
201
- }
202
- if (feeReminder.subjectId) {
203
- const validSubject = await userHasBatchModel_1.default.findOne({
204
- where: {
205
- userId,
206
- batchId,
207
- subjects: { [sequelize_1.Op.contains]: [feeReminder.subjectId] },
208
- },
209
- });
210
- if (!validSubject) {
211
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.SUBJECT_INVALID);
212
- }
213
- }
214
- if (feeReminder.feeCollectionId) {
215
- const validFeeCollection = await feesCollectionModel_1.default.findOne({
216
- where: {
217
- userId,
218
- instituteId,
219
- status: { [sequelize_1.Op.ne]: app_1.FEE_PAYMENT_STATUS.COMPLETED },
220
- },
221
- });
222
- if (!validFeeCollection) {
223
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.FEE_COLLECTION_NOT_FOUND);
224
- }
225
- }
226
- }
227
- else {
228
- throw new Error(errorMessages_1.FEEREMINDER_ERROR_MESSAGES.INVALID_INPUT);
229
- }
230
- };
231
- FeeReminderModel.beforeBulkCreate(async (feeReminders) => {
232
- for (const instance of feeReminders) {
233
- await beforeCreateHook(instance);
234
- }
235
- });
236
- FeeReminderModel.beforeBulkUpdate(async (options) => {
237
- await beforeUpdateHook(options.attributes);
238
- });
239
207
  exports.default = FeeReminderModel;
@@ -15,5 +15,6 @@ declare class FeeReminderSettingModel extends Model<IFeeReminderSettingModelAttr
15
15
  readonly createdAt: Date;
16
16
  readonly deletedAt: string;
17
17
  readonly updatedAt: Date;
18
+ static associate(models: any): void;
18
19
  }
19
20
  export default FeeReminderSettingModel;
@@ -1,14 +1,32 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const sequelize_1 = require("sequelize");
7
4
  const index_1 = require("./index");
8
- const instituteModel_1 = __importDefault(require("./instituteModel"));
9
- const userModel_1 = __importDefault(require("./userModel"));
10
5
  const app_1 = require("../../constants/app");
11
6
  class FeeReminderSettingModel extends sequelize_1.Model {
7
+ static associate(models) {
8
+ const { InstituteModel, UserModel } = models;
9
+ FeeReminderSettingModel.belongsTo(InstituteModel, {
10
+ foreignKey: { name: 'instituteId', field: 'institute_id' },
11
+ as: 'settingInstitute',
12
+ });
13
+ InstituteModel.hasMany(FeeReminderSettingModel, {
14
+ foreignKey: 'instituteId',
15
+ as: 'instituteReminderSettings',
16
+ });
17
+ FeeReminderSettingModel.belongsTo(UserModel, {
18
+ foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
19
+ as: 'createdByUser',
20
+ });
21
+ FeeReminderSettingModel.belongsTo(UserModel, {
22
+ foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
23
+ as: 'updatedByUser',
24
+ });
25
+ FeeReminderSettingModel.belongsTo(UserModel, {
26
+ foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
27
+ as: 'deletedByUser',
28
+ });
29
+ }
12
30
  }
13
31
  FeeReminderSettingModel.init({
14
32
  id: {
@@ -39,52 +57,10 @@ FeeReminderSettingModel.init({
39
57
  type: sequelize_1.DataTypes.STRING,
40
58
  allowNull: true,
41
59
  },
42
- // frequency: {
43
- // type: DataTypes.ENUM(...Object.values(FEE_REMINDER_SETTING_FREQUENCY)),
44
- // allowNull: true,
45
- // defaultValue: FEE_REMINDER_SETTING_FREQUENCY.WEEKLY,
46
- // },
47
- // startDay: {
48
- // type: DataTypes.INTEGER,
49
- // allowNull: true,
50
- // defaultValue: 15,
51
- // },
52
60
  }, {
53
61
  modelName: 'FeeReminderSettingModel',
54
62
  tableName: 'fee_reminder_settings',
55
63
  timestamps: true,
56
64
  sequelize: index_1.sequelize,
57
65
  });
58
- FeeReminderSettingModel.belongsTo(instituteModel_1.default, {
59
- foreignKey: {
60
- name: 'instituteId',
61
- field: 'institute_id',
62
- },
63
- as: 'settingInstitute',
64
- });
65
- instituteModel_1.default.hasMany(FeeReminderSettingModel, { foreignKey: 'instituteId', as: 'instituteReminderSettings' });
66
- FeeReminderSettingModel.belongsTo(userModel_1.default, {
67
- foreignKey: {
68
- name: 'createdBy',
69
- allowNull: true,
70
- field: 'created_by',
71
- },
72
- as: 'createdByUser',
73
- });
74
- FeeReminderSettingModel.belongsTo(userModel_1.default, {
75
- foreignKey: {
76
- name: 'updatedBy',
77
- allowNull: true,
78
- field: 'updated_by',
79
- },
80
- as: 'updatedByUser',
81
- });
82
- FeeReminderSettingModel.belongsTo(userModel_1.default, {
83
- foreignKey: {
84
- name: 'deletedBy',
85
- allowNull: true,
86
- field: 'deleted_by',
87
- },
88
- as: 'deletedByUser',
89
- });
90
66
  exports.default = FeeReminderSettingModel;
@@ -17,5 +17,6 @@ declare class FeeTypeHasTermsModel extends Model<IFeeTypeHasTermsModelAttributes
17
17
  readonly createdAt: Date;
18
18
  readonly deletedAt: string;
19
19
  readonly updatedAt: Date;
20
+ static associate(models: any): void;
20
21
  }
21
22
  export default FeeTypeHasTermsModel;
@@ -1,15 +1,57 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const sequelize_1 = require("sequelize");
7
4
  const index_1 = require("./index");
8
5
  const app_1 = require("../../constants/app");
9
- const feeTypeModel_1 = __importDefault(require("./feeTypeModel"));
10
- const instituteModel_1 = __importDefault(require("./instituteModel"));
11
- const userModel_1 = __importDefault(require("./userModel"));
12
6
  class FeeTypeHasTermsModel extends sequelize_1.Model {
7
+ static associate(models) {
8
+ const { FeeTypeModel, InstituteModel, UserModel } = models;
9
+ FeeTypeHasTermsModel.belongsTo(FeeTypeModel, {
10
+ foreignKey: {
11
+ name: 'feeTypeId',
12
+ },
13
+ as: 'termsFeeType',
14
+ });
15
+ FeeTypeModel.hasMany(FeeTypeHasTermsModel, {
16
+ foreignKey: 'feeTypeId',
17
+ as: 'feeTypeHasTerms',
18
+ });
19
+ FeeTypeHasTermsModel.belongsTo(InstituteModel, {
20
+ foreignKey: {
21
+ name: 'instituteId',
22
+ field: 'institute_id',
23
+ },
24
+ as: 'instituteFeeTypeTerms',
25
+ });
26
+ InstituteModel.hasMany(FeeTypeHasTermsModel, {
27
+ foreignKey: 'instituteId',
28
+ as: 'feeTypeHasTermsInstitute',
29
+ });
30
+ FeeTypeHasTermsModel.belongsTo(UserModel, {
31
+ foreignKey: {
32
+ name: 'createdBy',
33
+ allowNull: true,
34
+ field: 'created_by',
35
+ },
36
+ as: 'createdByUser',
37
+ });
38
+ FeeTypeHasTermsModel.belongsTo(UserModel, {
39
+ foreignKey: {
40
+ name: 'updatedBy',
41
+ allowNull: true,
42
+ field: 'updated_by',
43
+ },
44
+ as: 'updatedByUser',
45
+ });
46
+ FeeTypeHasTermsModel.belongsTo(UserModel, {
47
+ foreignKey: {
48
+ name: 'deletedBy',
49
+ allowNull: true,
50
+ field: 'deleted_by',
51
+ },
52
+ as: 'deletedByUser',
53
+ });
54
+ }
13
55
  }
14
56
  FeeTypeHasTermsModel.init({
15
57
  id: {
@@ -54,49 +96,4 @@ FeeTypeHasTermsModel.init({
54
96
  timestamps: true,
55
97
  sequelize: index_1.sequelize,
56
98
  });
57
- FeeTypeHasTermsModel.belongsTo(feeTypeModel_1.default, {
58
- foreignKey: {
59
- name: 'feeTypeId',
60
- },
61
- as: 'termsFeeType',
62
- });
63
- feeTypeModel_1.default.hasMany(FeeTypeHasTermsModel, {
64
- foreignKey: 'feeTypeId',
65
- as: 'feeTypeHasTerms',
66
- });
67
- FeeTypeHasTermsModel.belongsTo(instituteModel_1.default, {
68
- foreignKey: {
69
- name: 'instituteId',
70
- field: 'institute_id',
71
- },
72
- as: 'instituteFeeTypeTerms',
73
- });
74
- instituteModel_1.default.hasMany(FeeTypeHasTermsModel, {
75
- foreignKey: 'instituteId',
76
- as: 'feeTypeHasTermsInstitute',
77
- });
78
- FeeTypeHasTermsModel.belongsTo(userModel_1.default, {
79
- foreignKey: {
80
- name: 'createdBy',
81
- allowNull: true,
82
- field: 'created_by',
83
- },
84
- as: 'createdByUser',
85
- });
86
- FeeTypeHasTermsModel.belongsTo(userModel_1.default, {
87
- foreignKey: {
88
- name: 'updatedBy',
89
- allowNull: true,
90
- field: 'updated_by',
91
- },
92
- as: 'updatedByUser',
93
- });
94
- FeeTypeHasTermsModel.belongsTo(userModel_1.default, {
95
- foreignKey: {
96
- name: 'deletedBy',
97
- allowNull: true,
98
- field: 'deleted_by',
99
- },
100
- as: 'deletedByUser',
101
- });
102
99
  exports.default = FeeTypeHasTermsModel;
@@ -18,5 +18,6 @@ declare class FeeTypeModel extends Model<IFeeTypeModelAttributes, TFeeTypeModelC
18
18
  readonly createdAt: Date;
19
19
  readonly deletedAt: string;
20
20
  readonly updatedAt: Date;
21
+ static associate(models: any): void;
21
22
  }
22
23
  export default FeeTypeModel;