@kipicore/dbcore 1.1.473 → 1.1.475

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.
@@ -536,7 +536,9 @@ export declare enum PARENTS_CHILDREN_CURRENT {
536
536
  export declare enum USER_PAYOUT_TYPE {
537
537
  PERCENTAGE = "PERCENTAGE",
538
538
  HOURLY = "HOURLY",
539
- MONTHLY = "MONTHLY"
539
+ MONTHLY = "MONTHLY",
540
+ ANNUAL = "ANNUAL",
541
+ NONE = "NONE"
540
542
  }
541
543
  export declare enum QDC_NAME {
542
544
  LAKSHMI_VIKAS_SANKUL_ANR02 = "LAKSHMI_VIKAS_SANKUL_ANR02"
@@ -649,6 +649,8 @@ var USER_PAYOUT_TYPE;
649
649
  USER_PAYOUT_TYPE["PERCENTAGE"] = "PERCENTAGE";
650
650
  USER_PAYOUT_TYPE["HOURLY"] = "HOURLY";
651
651
  USER_PAYOUT_TYPE["MONTHLY"] = "MONTHLY";
652
+ USER_PAYOUT_TYPE["ANNUAL"] = "ANNUAL";
653
+ USER_PAYOUT_TYPE["NONE"] = "NONE";
652
654
  })(USER_PAYOUT_TYPE || (exports.USER_PAYOUT_TYPE = USER_PAYOUT_TYPE = {}));
653
655
  var QDC_NAME;
654
656
  (function (QDC_NAME) {
@@ -0,0 +1,2 @@
1
+ export function up(queryInterface: any, Sequelize: any): Promise<void>;
2
+ export function down(queryInterface: any, Sequelize: any): Promise<void>;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+ module.exports = {
3
+ up: async (queryInterface, Sequelize) => {
4
+ const transaction = await queryInterface.sequelize.transaction();
5
+ try {
6
+ await queryInterface.changeColumn('user_payouts', 'type', {
7
+ type: Sequelize.STRING,
8
+ allowNull: false,
9
+ defaultValue: 'NONE',
10
+ }, { transaction });
11
+ await transaction.commit();
12
+ }
13
+ catch (error) {
14
+ await transaction.rollback();
15
+ throw error;
16
+ }
17
+ },
18
+ down: async (queryInterface, Sequelize) => {
19
+ const transaction = await queryInterface.sequelize.transaction();
20
+ try {
21
+ await queryInterface.changeColumn('user_payouts', 'type', {
22
+ type: Sequelize.ENUM('PERCENTAGE', 'HOURLY', 'MONTHLY', 'ANNUAL', 'NONE'),
23
+ allowNull: false,
24
+ }, { transaction });
25
+ await transaction.commit();
26
+ }
27
+ catch (error) {
28
+ await transaction.rollback();
29
+ throw error;
30
+ }
31
+ },
32
+ };
@@ -0,0 +1,2 @@
1
+ export function up(queryInterface: any, Sequelize: any): Promise<void>;
2
+ export function down(queryInterface: any, Sequelize: any): Promise<void>;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+ module.exports = {
3
+ up: async (queryInterface, Sequelize) => {
4
+ const transaction = await queryInterface.sequelize.transaction();
5
+ try {
6
+ await queryInterface.changeColumn('user_payout_details', 'type', {
7
+ type: Sequelize.STRING,
8
+ allowNull: false,
9
+ defaultValue: 'NONE',
10
+ }, { transaction });
11
+ await transaction.commit();
12
+ }
13
+ catch (error) {
14
+ await transaction.rollback();
15
+ throw error;
16
+ }
17
+ },
18
+ down: async (queryInterface, Sequelize) => {
19
+ const transaction = await queryInterface.sequelize.transaction();
20
+ try {
21
+ await queryInterface.changeColumn('user_payout_details', 'type', {
22
+ type: Sequelize.ENUM('PERCENTAGE', 'HOURLY', 'MONTHLY', 'ANNUAL', 'NONE'),
23
+ allowNull: false,
24
+ }, { transaction });
25
+ await transaction.commit();
26
+ }
27
+ catch (error) {
28
+ await transaction.rollback();
29
+ throw error;
30
+ }
31
+ },
32
+ };
@@ -111,7 +111,6 @@ export * from './userInterface';
111
111
  export * from './userLeaveRequestInterface';
112
112
  export * from './userMetaInterface';
113
113
  export * from './userPayoutDetailsInterface';
114
- export * from './userPayoutHistoryInterface';
115
114
  export * from './userPayoutInterface';
116
115
  export * from './userProjectAssessmentOptionInterface';
117
116
  export * from './userRequiredStepsInterface';
@@ -127,7 +127,6 @@ __exportStar(require("./userInterface"), exports);
127
127
  __exportStar(require("./userLeaveRequestInterface"), exports);
128
128
  __exportStar(require("./userMetaInterface"), exports);
129
129
  __exportStar(require("./userPayoutDetailsInterface"), exports);
130
- __exportStar(require("./userPayoutHistoryInterface"), exports);
131
130
  __exportStar(require("./userPayoutInterface"), exports);
132
131
  __exportStar(require("./userProjectAssessmentOptionInterface"), exports);
133
132
  __exportStar(require("./userRequiredStepsInterface"), exports);
@@ -84,7 +84,6 @@ export { default as UserHasSubjectFeeModel } from './userHasSubjectFeeModel';
84
84
  export { default as UserLeaveRequestModel } from './userLeaveRequestModel';
85
85
  export { default as UserModel } from './userModel';
86
86
  export { default as UserPayoutDetailsModel } from './userPayoutDetailsModel';
87
- export { default as UserPayoutHistoryModel } from './userPayoutHistoryModel';
88
87
  export { default as UserPayoutModel } from './userPayoutModel';
89
88
  export { default as UserProjectAssessmentOptionModel } from './userProjectAssessmentOptionModel';
90
89
  export { default as UserRequiredStepsModel } from './userRequiredStepsModel';
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ProjectAssessmentOptionModel = exports.ProductModel = exports.PincodeModel = exports.PdcHistoryModel = exports.PdcChequeModel = exports.OfferModel = exports.ModuleModel = exports.ModuleFeatureModel = exports.MasterLeaveModel = exports.LectureModel = exports.LectureHistoryModel = exports.InventoryModel = exports.InventoryHistoryModel = exports.InstituteSubscriptionPlanModel = exports.InstituteModel = exports.InstituteEntityTypeModel = exports.InstituteEntityModel = exports.HomeWorkModel = exports.GreetingsModel = exports.FloorManagementModel = exports.FileStorageModel = exports.FeeReminderSettingModel = exports.FeeReminderModel = exports.FeatureActionModel = exports.FacilityModel = exports.EntityGroupModel = exports.DriverModel = exports.CourseModel = exports.CourseHasVisitorsModel = exports.CountryModel = exports.ContactFeedBackModel = exports.CoinPurchaseOfferModel = exports.CloudStorageModel = exports.ClassRoomModel = exports.CityModel = exports.CategoriesModel = exports.BookAssessmentDateModel = exports.BatchSubjectProjectAssessmentModel = exports.BatchSubjectBookAssessmentModel = exports.BatchModel = exports.BannerModel = exports.BankAccountDetailsModel = exports.AreaModel = exports.AnnouncementModel = exports.AccountHasReceiptDetailsModel = exports.AcademicCalendarModel = exports.SubCategoriesModel = exports.Sequelize = exports.db = exports.sequelize = void 0;
7
- exports.IncomeExpenseModel = exports.MaintenanceModel = exports.WorkOffDaysModel = exports.EntityWiseCalendarModel = exports.CampusModel = exports.LostFoundItemModel = exports.WorkingShiftModel = exports.WorkingDayModel = exports.WalletModel = exports.WalletHistoryModel = exports.VendorManagementModel = exports.VehicleModel = exports.UserRequiredStepsModel = exports.UserProjectAssessmentOptionModel = exports.UserPayoutModel = exports.UserPayoutHistoryModel = exports.UserPayoutDetailsModel = exports.UserModel = exports.UserLeaveRequestModel = exports.UserHasSubjectFeeModel = exports.UserHasStorageModel = exports.UserHasRollNumberModel = exports.UserHasRoleModel = exports.UserHasParentModel = exports.UserHasOfferModel = exports.UserHasLeaveModel = exports.UserHasLeaveHistoryModel = exports.UserHasInventoryModel = exports.UserHasInventoryHistoryModel = exports.UserHasHomeWorkModel = exports.UserHasFileModel = exports.UserHasDeviceModel = exports.UserHasCourseModel = exports.UserHasBatchModel = exports.UserHasAnnouncementModel = exports.UserBookAssessmentModel = exports.TypeManagementModel = exports.TripModel = exports.TokenModel = exports.ToDoModel = exports.TestimonialModel = exports.SyllabusModel = exports.SubjectHasPayFeeHistoryModel = exports.SubjectHasFeeModel = exports.StateModel = exports.SlotModel = exports.SendNotificationModel = exports.SchoolOfferModel = exports.RulesRegulationModel = exports.RoleModel = void 0;
8
- exports.PayoutTransactionHistoryModel = exports.AdditionalPayoutModel = exports.LoanEmiModel = exports.UserLoanModel = exports.NoticeboardModel = exports.UserPermissionModel = exports.RoleManagementModel = exports.PermissionModel = exports.DesignationModel = exports.AdditionalPayoutTypeModel = exports.VisitorBookModel = exports.PostalDispatchModel = exports.CallRegisterModel = exports.UserHasOfferAndDiscountModel = exports.UserAcceptedTermsAndCondition = exports.SubjectInternalMarkModel = exports.InternalMarkModel = exports.TermsAndConditionModel = exports.FeeType1Model = exports.StudentFeeTermsModel = exports.UserHasPenaltyModel = exports.PenaltyModel = exports.ClassRoomCollectionModel = exports.ClassRoomEventModel = exports.StudentFeeTypeCollectionModel = exports.SchoolFeeTermsModel = exports.StudentFeeHistoryModel = exports.StudentFeeCollectionModel = exports.UserDirectoryModel = exports.StudentLeaveRequestModel = exports.CloneListModel = void 0;
7
+ exports.CloneListModel = exports.IncomeExpenseModel = exports.MaintenanceModel = exports.WorkOffDaysModel = exports.EntityWiseCalendarModel = exports.CampusModel = exports.LostFoundItemModel = exports.WorkingShiftModel = exports.WorkingDayModel = exports.WalletModel = exports.WalletHistoryModel = exports.VendorManagementModel = exports.VehicleModel = exports.UserRequiredStepsModel = exports.UserProjectAssessmentOptionModel = exports.UserPayoutModel = exports.UserPayoutDetailsModel = exports.UserModel = exports.UserLeaveRequestModel = exports.UserHasSubjectFeeModel = exports.UserHasStorageModel = exports.UserHasRollNumberModel = exports.UserHasRoleModel = exports.UserHasParentModel = exports.UserHasOfferModel = exports.UserHasLeaveModel = exports.UserHasLeaveHistoryModel = exports.UserHasInventoryModel = exports.UserHasInventoryHistoryModel = exports.UserHasHomeWorkModel = exports.UserHasFileModel = exports.UserHasDeviceModel = exports.UserHasCourseModel = exports.UserHasBatchModel = exports.UserHasAnnouncementModel = exports.UserBookAssessmentModel = exports.TypeManagementModel = exports.TripModel = exports.TokenModel = exports.ToDoModel = exports.TestimonialModel = exports.SyllabusModel = exports.SubjectHasPayFeeHistoryModel = exports.SubjectHasFeeModel = exports.StateModel = exports.SlotModel = exports.SendNotificationModel = exports.SchoolOfferModel = exports.RulesRegulationModel = exports.RoleModel = void 0;
8
+ exports.PayoutTransactionHistoryModel = exports.AdditionalPayoutModel = exports.LoanEmiModel = exports.UserLoanModel = exports.NoticeboardModel = exports.UserPermissionModel = exports.RoleManagementModel = exports.PermissionModel = exports.DesignationModel = exports.AdditionalPayoutTypeModel = exports.VisitorBookModel = exports.PostalDispatchModel = exports.CallRegisterModel = exports.UserHasOfferAndDiscountModel = exports.UserAcceptedTermsAndCondition = exports.SubjectInternalMarkModel = exports.InternalMarkModel = exports.TermsAndConditionModel = exports.FeeType1Model = exports.StudentFeeTermsModel = exports.UserHasPenaltyModel = exports.PenaltyModel = exports.ClassRoomCollectionModel = exports.ClassRoomEventModel = exports.StudentFeeTypeCollectionModel = exports.SchoolFeeTermsModel = exports.StudentFeeHistoryModel = exports.StudentFeeCollectionModel = exports.UserDirectoryModel = exports.StudentLeaveRequestModel = void 0;
9
9
  const sequelize_1 = require("sequelize");
10
10
  Object.defineProperty(exports, "Sequelize", { enumerable: true, get: function () { return sequelize_1.Sequelize; } });
11
11
  const postgresConfig = require('../../configs/postgresConfig');
@@ -262,8 +262,6 @@ var userModel_1 = require("./userModel");
262
262
  Object.defineProperty(exports, "UserModel", { enumerable: true, get: function () { return __importDefault(userModel_1).default; } });
263
263
  var userPayoutDetailsModel_1 = require("./userPayoutDetailsModel");
264
264
  Object.defineProperty(exports, "UserPayoutDetailsModel", { enumerable: true, get: function () { return __importDefault(userPayoutDetailsModel_1).default; } });
265
- var userPayoutHistoryModel_1 = require("./userPayoutHistoryModel");
266
- Object.defineProperty(exports, "UserPayoutHistoryModel", { enumerable: true, get: function () { return __importDefault(userPayoutHistoryModel_1).default; } });
267
265
  var userPayoutModel_1 = require("./userPayoutModel");
268
266
  Object.defineProperty(exports, "UserPayoutModel", { enumerable: true, get: function () { return __importDefault(userPayoutModel_1).default; } });
269
267
  var userProjectAssessmentOptionModel_1 = require("./userProjectAssessmentOptionModel");
@@ -68,7 +68,7 @@ UserPayoutDetailsModel.init({
68
68
  payableAmount: { type: sequelize_1.DataTypes.FLOAT, allowNull: true, defaultValue: 0, field: 'payable_amount' },
69
69
  amountPerHour: { type: sequelize_1.DataTypes.FLOAT, allowNull: true, defaultValue: 0, field: 'amount_per_hour' },
70
70
  percentage: { type: sequelize_1.DataTypes.FLOAT, allowNull: true, defaultValue: 0, field: 'percentage' },
71
- type: { type: sequelize_1.DataTypes.ENUM, values: Object.values(app_1.USER_PAYOUT_TYPE), allowNull: false },
71
+ type: { type: sequelize_1.DataTypes.STRING, allowNull: false, defaultValue: app_1.USER_PAYOUT_TYPE.NONE },
72
72
  userId: { type: sequelize_1.DataTypes.UUID, allowNull: false, field: 'user_id' },
73
73
  instituteId: { type: sequelize_1.DataTypes.UUID, allowNull: false, field: 'institute_id' },
74
74
  }, {
@@ -17,6 +17,5 @@ declare class UserPayoutModel extends Model<IUserPayoutModelAttributes, TUserPay
17
17
  readonly deletedAt: Date;
18
18
  readonly updatedAt: Date;
19
19
  static associate(models: any): void;
20
- static addHooks(models: any): void;
21
20
  }
22
21
  export default UserPayoutModel;
@@ -4,7 +4,6 @@ const sequelize_1 = require("sequelize");
4
4
  const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  const date_fns_1 = require("date-fns");
7
- const utils_1 = require("../../helpers/utils");
8
7
  class UserPayoutModel extends sequelize_1.Model {
9
8
  static associate(models) {
10
9
  const { UserModel, InstituteModel } = models;
@@ -36,181 +35,6 @@ class UserPayoutModel extends sequelize_1.Model {
36
35
  foreignKey: { name: 'userId' },
37
36
  as: 'userHasPayoutList',
38
37
  });
39
- // UserPayoutModel.hasMany(UserPayoutDetailsModel, {
40
- // foreignKey: { name: 'userPayoutId' },
41
- // as: 'userPayoutDetailsList',
42
- // });
43
- }
44
- static addHooks(models) {
45
- const { UserPayoutDetailsModel, SubjectHasPayFeeHistory, LectureModel, AttendanceModel } = models;
46
- const afterCreateOrUpdateHook = async (userPayout, user = null, transaction, filterOptions = {}) => {
47
- try {
48
- if (!userPayout.userPayoutDetailsList || !userPayout.userPayoutDetailsList.length)
49
- return userPayout;
50
- userPayout.userPayoutDetailsList = (0, utils_1.getUniqueArrayByFields)(userPayout.userPayoutDetailsList, ['subjectId']);
51
- const options = { transaction };
52
- if (user)
53
- options.userId = user.id;
54
- const now = new Date();
55
- const previousMonthDate = (0, date_fns_1.subMonths)(now, 1);
56
- let startOfPreviousMonth = (0, date_fns_1.startOfMonth)(previousMonthDate).toISOString();
57
- let endOfPreviousMonth = (0, date_fns_1.endOfMonth)(previousMonthDate).toISOString();
58
- if (filterOptions.include) {
59
- filterOptions.include = !Array.isArray(filterOptions.include) ? [filterOptions.include] : filterOptions.include;
60
- const historyListInclude = filterOptions.include.find((include) => include.as === 'userPayoutHistoryList');
61
- let where = {};
62
- if (historyListInclude && historyListInclude.where && historyListInclude.where[sequelize_1.Op.and]) {
63
- where = historyListInclude.where[sequelize_1.Op.and].pop();
64
- }
65
- if (where.payout_start_time && where.payout_end_time) {
66
- startOfPreviousMonth = where.payout_start_time[sequelize_1.Op.gte];
67
- endOfPreviousMonth = where.payout_end_time[sequelize_1.Op.lte];
68
- }
69
- }
70
- const attendanceWhereAnd = [{ date: { $gte: startOfPreviousMonth } }, { date: { $lte: endOfPreviousMonth } }];
71
- const existUserPayout = (await UserPayoutModel.findOne({
72
- where: { id: userPayout.id },
73
- include: [{ association: 'userPayoutDetailsList' }],
74
- transaction,
75
- }));
76
- if (!existUserPayout)
77
- return userPayout;
78
- if (userPayout.type === app_1.USER_PAYOUT_TYPE.PERCENTAGE) {
79
- let feeTotalBySubjectList = await SubjectHasPayFeeHistory.findAll({
80
- where: {
81
- instituteId: existUserPayout.instituteId,
82
- subjectId: {
83
- [sequelize_1.Op.in]: userPayout.userPayoutDetailsList.map(detail => detail.subjectId),
84
- },
85
- },
86
- attributes: [
87
- ['subject_id', 'subjectId'],
88
- [sequelize_1.Sequelize.fn('sum', sequelize_1.Sequelize.col('amount')), 'amount'],
89
- ],
90
- group: ['subject_id', 'created_at'],
91
- raw: true,
92
- });
93
- feeTotalBySubjectList = JSON.parse(JSON.stringify(feeTotalBySubjectList));
94
- userPayout.userPayoutDetailsList = userPayout.userPayoutDetailsList.map(detail => {
95
- detail.payableAmount = feeTotalBySubjectList
96
- .filter((fee) => fee.subjectId === detail.subjectId)
97
- .reduce((sum, record) => {
98
- if (detail.percentage) {
99
- const amount = ((record.amount || 0) * detail.percentage) / 100;
100
- return sum + parseFloat(amount.toFixed(2));
101
- }
102
- return sum;
103
- }, 0);
104
- return detail;
105
- });
106
- }
107
- if (userPayout.type === app_1.USER_PAYOUT_TYPE.HOURLY) {
108
- let lectureList = (await LectureModel.findAll({
109
- where: {
110
- instituteId: existUserPayout.instituteId,
111
- subject: {
112
- [sequelize_1.Op.in]: userPayout.userPayoutDetailsList.map(detail => detail.subjectId),
113
- },
114
- [sequelize_1.Op.or]: [{ primaryUserId: existUserPayout.userId }, { secondaryUserId: existUserPayout.userId }],
115
- },
116
- include: [{ association: 'workingDay' }],
117
- }));
118
- lectureList = JSON.parse(JSON.stringify(lectureList));
119
- const currentMonthAttendanceList = await AttendanceModel.find({
120
- $and: attendanceWhereAnd,
121
- userType: userPayout.userType,
122
- 'users.userId': userPayout.userId,
123
- 'users.status': { $ne: app_1.ATTENDANCE_STATUS.ABSENT },
124
- });
125
- userPayout.userPayoutDetailsList = userPayout.userPayoutDetailsList.map(detail => {
126
- let totalMinutes = 0;
127
- currentMonthAttendanceList.forEach((attendance) => {
128
- const dayName = (0, date_fns_1.format)(attendance.date, 'EEEE');
129
- const lecturesByDay = lectureList.filter(lecture => lecture.workingDay.dayName === dayName && lecture.subject === detail.subjectId);
130
- if (lecturesByDay.length) {
131
- totalMinutes += lecturesByDay.reduce((sum, record) => sum + record.slotDuration, 0);
132
- }
133
- });
134
- detail.payableAmount = ((detail.amountPerHour || 0) / app_1.SIXTY) * totalMinutes;
135
- return detail;
136
- });
137
- }
138
- const userPayoutDetailsList = [];
139
- for (let detail of userPayout.userPayoutDetailsList) {
140
- detail.userPayoutId = existUserPayout.id;
141
- detail.userId = existUserPayout.userId;
142
- detail.instituteId = existUserPayout.instituteId;
143
- detail.type = existUserPayout.type;
144
- const found = existUserPayout?.userPayoutDetailsList?.find(existing => detail.userPayoutId === existUserPayout.id &&
145
- detail.instituteId === existing.instituteId &&
146
- detail.userId === existing.userId &&
147
- detail.type === existing.type &&
148
- detail.subjectId === existing.subjectId &&
149
- detail.batchId === existing.batchId);
150
- if (found) {
151
- await UserPayoutDetailsModel.update(detail, { where: { id: found.id }, ...options });
152
- }
153
- else {
154
- detail = (await UserPayoutDetailsModel.create(detail, options));
155
- }
156
- userPayoutDetailsList.push(detail);
157
- }
158
- if (userPayoutDetailsList.length) {
159
- await UserPayoutDetailsModel.destroy({
160
- where: {
161
- id: { [sequelize_1.Op.notIn]: userPayoutDetailsList.map(detail => detail.id) },
162
- userPayoutId: existUserPayout.id,
163
- },
164
- ...options,
165
- });
166
- }
167
- const totalPayableAmount = userPayoutDetailsList.reduce((sum, record) => sum + (record.payableAmount || 0), 0);
168
- userPayout.userPayoutDetailsList = userPayoutDetailsList;
169
- userPayout.totalPayableAmount = totalPayableAmount;
170
- return userPayout;
171
- }
172
- catch (err) {
173
- throw err;
174
- }
175
- };
176
- const afterFindHook = async (userPayoutList, options = {}) => {
177
- const transaction = await index_1.sequelize.transaction();
178
- try {
179
- const syncList = JSON.parse(JSON.stringify(userPayoutList));
180
- if (!syncList.length) {
181
- await transaction.commit();
182
- return userPayoutList;
183
- }
184
- const updatedData = [];
185
- for (let syncUserPayout of syncList) {
186
- syncUserPayout = await afterCreateOrUpdateHook(syncUserPayout, undefined, transaction, options);
187
- updatedData.push(syncUserPayout);
188
- }
189
- userPayoutList = userPayoutList.map(payout => {
190
- const found = updatedData.find(one => one.id === payout.id);
191
- if (found) {
192
- payout.totalPayableAmount = found.totalPayableAmount;
193
- payout.userPayoutDetailsList = found.userPayoutDetailsList;
194
- }
195
- return payout;
196
- });
197
- await transaction.commit();
198
- return userPayoutList;
199
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
200
- }
201
- catch (err) {
202
- await transaction.rollback();
203
- return userPayoutList;
204
- }
205
- };
206
- UserPayoutModel.addHook('afterFind', async (result, options) => {
207
- if (options.syncUserPayoutLastCalculatedAt && Array.isArray(result)) {
208
- result = (await afterFindHook(result, options));
209
- }
210
- else if (options.syncUserPayoutLastCalculatedAt && result) {
211
- result = (await afterFindHook([result], options)).pop();
212
- }
213
- });
214
38
  }
215
39
  }
216
40
  UserPayoutModel.init({
@@ -249,9 +73,9 @@ UserPayoutModel.init({
249
73
  field: 'total_paid_amount',
250
74
  },
251
75
  type: {
252
- type: sequelize_1.DataTypes.ENUM,
253
- values: Object.values(app_1.USER_PAYOUT_TYPE),
76
+ type: sequelize_1.DataTypes.STRING,
254
77
  allowNull: false,
78
+ defaultValue: app_1.USER_PAYOUT_TYPE.NONE,
255
79
  },
256
80
  lastCalculatedAt: {
257
81
  type: sequelize_1.DataTypes.DATE,
@@ -102,7 +102,6 @@ export * from './userInstituteMetaType';
102
102
  export * from './userLeaveRequestType';
103
103
  export * from './userMetaType';
104
104
  export * from './userPayoutDetailsType';
105
- export * from './userPayoutHistoryType';
106
105
  export * from './userPayoutType';
107
106
  export * from './userProjectAssessmentOptionType';
108
107
  export * from './userRequiredStepsType';
@@ -118,7 +118,6 @@ __exportStar(require("./userInstituteMetaType"), exports);
118
118
  __exportStar(require("./userLeaveRequestType"), exports);
119
119
  __exportStar(require("./userMetaType"), exports);
120
120
  __exportStar(require("./userPayoutDetailsType"), exports);
121
- __exportStar(require("./userPayoutHistoryType"), exports);
122
121
  __exportStar(require("./userPayoutType"), exports);
123
122
  __exportStar(require("./userProjectAssessmentOptionType"), exports);
124
123
  __exportStar(require("./userRequiredStepsType"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kipicore/dbcore",
3
- "version": "1.1.473",
3
+ "version": "1.1.475",
4
4
  "description": "Reusable DB core package with Postgres, MongoDB, models, services, interfaces, and types",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
@@ -1,2 +0,0 @@
1
- export function up(queryInterface: any, Sequelize: any): Promise<void>;
2
- export function down(queryInterface: any): Promise<void>;
@@ -1,242 +0,0 @@
1
- "use strict";
2
- const up = async (queryInterface, Sequelize) => {
3
- const tableName = 'user_payout_history';
4
- const tableExists = await queryInterface
5
- .describeTable(tableName)
6
- .then(() => true)
7
- .catch(() => false);
8
- if (!tableExists) {
9
- await queryInterface.createTable(tableName, {
10
- id: {
11
- type: Sequelize.UUID,
12
- defaultValue: Sequelize.UUIDV4,
13
- allowNull: false,
14
- primaryKey: true,
15
- },
16
- userId: {
17
- type: Sequelize.UUID,
18
- allowNull: false,
19
- field: 'user_id',
20
- },
21
- userType: {
22
- type: Sequelize.ENUM('MASTER_ADMIN', 'ADMIN', 'INSTITUTE_MASTER_ADMIN', 'INSTITUTE_ADMIN', 'TEACHER', 'STUDENT', 'PARENTS', 'DRIVER'),
23
- allowNull: false,
24
- field: 'user_type',
25
- },
26
- instituteId: {
27
- type: Sequelize.UUID,
28
- allowNull: false,
29
- field: 'institute_id',
30
- },
31
- userPayoutId: {
32
- type: Sequelize.UUID,
33
- allowNull: false,
34
- field: 'user_payout_id',
35
- },
36
- paidAmount: {
37
- type: Sequelize.FLOAT,
38
- allowNull: false,
39
- field: 'paid_amount',
40
- },
41
- payableAmount: {
42
- type: Sequelize.FLOAT,
43
- allowNull: false,
44
- field: 'payable_amount',
45
- },
46
- bonusAmount: {
47
- type: Sequelize.FLOAT,
48
- allowNull: true,
49
- defaultValue: 0,
50
- field: 'bonus_amount',
51
- },
52
- overtimeAmount: {
53
- type: Sequelize.FLOAT,
54
- allowNull: true,
55
- defaultValue: 0,
56
- field: 'overtime_amount',
57
- },
58
- payoutDate: {
59
- type: Sequelize.DATE,
60
- allowNull: false,
61
- field: 'payout_date',
62
- },
63
- payoutStartTime: {
64
- type: Sequelize.DATE,
65
- allowNull: false,
66
- field: 'payout_start_time',
67
- },
68
- payoutEndTime: {
69
- type: Sequelize.DATE,
70
- allowNull: false,
71
- field: 'payout_end_time',
72
- },
73
- payoutType: {
74
- type: Sequelize.ENUM('PERCENTAGE', 'HOURLY', 'MONTHLY'),
75
- allowNull: false,
76
- field: 'payout_type',
77
- },
78
- description: {
79
- type: Sequelize.STRING,
80
- allowNull: true,
81
- },
82
- createdBy: {
83
- type: Sequelize.UUID,
84
- allowNull: true,
85
- field: 'created_by'
86
- },
87
- updatedBy: {
88
- type: Sequelize.UUID,
89
- allowNull: true,
90
- field: 'updated_by'
91
- },
92
- deletedBy: {
93
- type: Sequelize.UUID,
94
- allowNull: true,
95
- field: 'deleted_by'
96
- },
97
- createdAt: {
98
- type: Sequelize.DATE,
99
- allowNull: false,
100
- field: 'created_at'
101
- },
102
- updatedAt: {
103
- type: Sequelize.DATE,
104
- allowNull: false,
105
- field: 'updated_at'
106
- },
107
- deletedAt: {
108
- type: Sequelize.DATE,
109
- allowNull: true,
110
- field: 'deleted_at'
111
- },
112
- });
113
- }
114
- else {
115
- const tableDefinition = await queryInterface.describeTable(tableName);
116
- const columnsToAdd = {
117
- id: {
118
- type: Sequelize.UUID,
119
- defaultValue: Sequelize.UUIDV4,
120
- allowNull: false,
121
- primaryKey: true,
122
- },
123
- userId: {
124
- type: Sequelize.UUID,
125
- allowNull: false,
126
- field: 'user_id',
127
- },
128
- userType: {
129
- type: Sequelize.ENUM('MASTER_ADMIN', 'ADMIN', 'INSTITUTE_MASTER_ADMIN', 'INSTITUTE_ADMIN', 'TEACHER', 'STUDENT', 'PARENTS', 'DRIVER'),
130
- allowNull: false,
131
- field: 'user_type',
132
- },
133
- instituteId: {
134
- type: Sequelize.UUID,
135
- allowNull: false,
136
- field: 'institute_id',
137
- },
138
- userPayoutId: {
139
- type: Sequelize.UUID,
140
- allowNull: false,
141
- field: 'user_payout_id',
142
- },
143
- paidAmount: {
144
- type: Sequelize.FLOAT,
145
- allowNull: false,
146
- field: 'paid_amount',
147
- },
148
- payableAmount: {
149
- type: Sequelize.FLOAT,
150
- allowNull: false,
151
- field: 'payable_amount',
152
- },
153
- bonusAmount: {
154
- type: Sequelize.FLOAT,
155
- allowNull: true,
156
- defaultValue: 0,
157
- field: 'bonus_amount',
158
- },
159
- overtimeAmount: {
160
- type: Sequelize.FLOAT,
161
- allowNull: true,
162
- defaultValue: 0,
163
- field: 'overtime_amount',
164
- },
165
- payoutDate: {
166
- type: Sequelize.DATE,
167
- allowNull: false,
168
- field: 'payout_date',
169
- },
170
- payoutStartTime: {
171
- type: Sequelize.DATE,
172
- allowNull: false,
173
- field: 'payout_start_time',
174
- },
175
- payoutEndTime: {
176
- type: Sequelize.DATE,
177
- allowNull: false,
178
- field: 'payout_end_time',
179
- },
180
- payoutType: {
181
- type: Sequelize.ENUM('PERCENTAGE', 'HOURLY', 'MONTHLY'),
182
- allowNull: false,
183
- field: 'payout_type',
184
- },
185
- description: {
186
- type: Sequelize.STRING,
187
- allowNull: true,
188
- },
189
- createdBy: {
190
- type: Sequelize.UUID,
191
- allowNull: true,
192
- field: 'created_by'
193
- },
194
- updatedBy: {
195
- type: Sequelize.UUID,
196
- allowNull: true,
197
- field: 'updated_by'
198
- },
199
- deletedBy: {
200
- type: Sequelize.UUID,
201
- allowNull: true,
202
- field: 'deleted_by'
203
- },
204
- createdAt: {
205
- type: Sequelize.DATE,
206
- allowNull: false,
207
- field: 'created_at'
208
- },
209
- updatedAt: {
210
- type: Sequelize.DATE,
211
- allowNull: false,
212
- field: 'updated_at'
213
- },
214
- deletedAt: {
215
- type: Sequelize.DATE,
216
- allowNull: true,
217
- field: 'deleted_at'
218
- },
219
- };
220
- for (const column of Object.keys(columnsToAdd)) {
221
- const columnToAdd = columnsToAdd[column];
222
- const tableColumn = columnToAdd.field || column;
223
- if (!tableDefinition[tableColumn]) {
224
- await queryInterface.addColumn(tableName, tableColumn, columnToAdd);
225
- }
226
- }
227
- }
228
- };
229
- const down = async (queryInterface) => {
230
- const tableName = 'user_payout_history';
231
- const tableExists = await queryInterface
232
- .describeTable(tableName)
233
- .then(() => true)
234
- .catch(() => false);
235
- if (tableExists) {
236
- await queryInterface.dropTable(tableName);
237
- }
238
- };
239
- module.exports = {
240
- up,
241
- down,
242
- };
@@ -1,18 +0,0 @@
1
- import { IDefaultAttributes } from './commonInterface';
2
- import { USER_PAYOUT_TYPE, USER_TYPES } from '../constants/app';
3
- export interface IUserPayoutHistoryModelAttributes extends IDefaultAttributes {
4
- id: string;
5
- userId?: string;
6
- userType: USER_TYPES;
7
- instituteId: string;
8
- userPayoutId: string;
9
- payableAmount: number;
10
- paidAmount: number;
11
- overtimeAmount?: number;
12
- bonusAmount?: number;
13
- payoutDate: Date;
14
- payoutStartTime: Date;
15
- payoutEndTime: Date;
16
- payoutType: USER_PAYOUT_TYPE;
17
- description?: string;
18
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,28 +0,0 @@
1
- import { Model } from 'sequelize';
2
- import { IUserPayoutHistoryModelAttributes } from '../../interfaces/userPayoutHistoryInterface';
3
- import { TUserPayoutHistoryModelCreationAttributes } from '../../types/userPayoutHistoryType';
4
- import { USER_PAYOUT_TYPE, USER_TYPES } from '../../constants/app';
5
- declare class UserPayoutHistoryModel extends Model<IUserPayoutHistoryModelAttributes, TUserPayoutHistoryModelCreationAttributes> {
6
- id: string;
7
- userId: string;
8
- userType: USER_TYPES;
9
- instituteId: string;
10
- userPayoutId: string;
11
- paidAmount: number;
12
- payableAmount: number;
13
- overtimeAmount: number;
14
- bonusAmount: number;
15
- payoutDate: Date;
16
- payoutStartTime: Date;
17
- payoutEndTime: Date;
18
- payoutType: USER_PAYOUT_TYPE;
19
- description: string;
20
- createdBy: string;
21
- updatedBy: string;
22
- deletedBy: string;
23
- readonly createdAt: Date;
24
- readonly deletedAt: Date;
25
- readonly updatedAt: Date;
26
- static associate(models: any): void;
27
- }
28
- export default UserPayoutHistoryModel;
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const sequelize_1 = require("sequelize");
4
- const index_1 = require("./index");
5
- const app_1 = require("../../constants/app");
6
- class UserPayoutHistoryModel extends sequelize_1.Model {
7
- static associate(models) {
8
- const { UserModel, InstituteModel, UserPayoutModel } = models;
9
- UserPayoutHistoryModel.belongsTo(UserModel, {
10
- foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
11
- as: 'createdByUser',
12
- });
13
- UserPayoutHistoryModel.belongsTo(UserModel, {
14
- foreignKey: { name: 'updatedBy', allowNull: true, field: 'updated_by' },
15
- as: 'updatedByUser',
16
- });
17
- UserPayoutHistoryModel.belongsTo(UserModel, {
18
- foreignKey: { name: 'deletedBy', allowNull: true, field: 'deleted_by' },
19
- as: 'deletedByUser',
20
- });
21
- UserPayoutHistoryModel.belongsTo(InstituteModel, {
22
- foreignKey: { name: 'instituteId' },
23
- as: 'institute',
24
- });
25
- InstituteModel.hasMany(UserPayoutHistoryModel, {
26
- foreignKey: { name: 'instituteId' },
27
- as: 'instituteHasPayoutHistoryList',
28
- });
29
- UserPayoutHistoryModel.belongsTo(UserModel, {
30
- foreignKey: { name: 'userId' },
31
- as: 'user',
32
- });
33
- UserModel.hasMany(UserPayoutHistoryModel, {
34
- foreignKey: { name: 'userId' },
35
- as: 'userHasPayoutHistoryList',
36
- });
37
- UserPayoutHistoryModel.belongsTo(UserPayoutModel, {
38
- foreignKey: { name: 'userPayoutId' },
39
- as: 'userPayout',
40
- });
41
- UserPayoutModel.hasMany(UserPayoutHistoryModel, {
42
- foreignKey: { name: 'userPayoutId' },
43
- as: 'userPayoutHistoryList',
44
- });
45
- }
46
- }
47
- UserPayoutHistoryModel.init({
48
- id: {
49
- type: sequelize_1.DataTypes.UUID,
50
- defaultValue: sequelize_1.DataTypes.UUIDV4,
51
- allowNull: false,
52
- primaryKey: true,
53
- },
54
- userId: {
55
- type: sequelize_1.DataTypes.UUID,
56
- allowNull: false,
57
- field: 'user_id',
58
- },
59
- userType: {
60
- type: sequelize_1.DataTypes.ENUM,
61
- values: Object.values(app_1.USER_TYPES),
62
- allowNull: false,
63
- field: 'user_type',
64
- },
65
- instituteId: {
66
- type: sequelize_1.DataTypes.UUID,
67
- allowNull: false,
68
- field: 'institute_id',
69
- },
70
- userPayoutId: {
71
- type: sequelize_1.DataTypes.UUID,
72
- allowNull: false,
73
- field: 'user_payout_id',
74
- },
75
- paidAmount: {
76
- type: sequelize_1.DataTypes.FLOAT,
77
- allowNull: false,
78
- field: 'paid_amount',
79
- },
80
- payableAmount: {
81
- type: sequelize_1.DataTypes.FLOAT,
82
- allowNull: false,
83
- field: 'payable_amount',
84
- },
85
- bonusAmount: {
86
- type: sequelize_1.DataTypes.FLOAT,
87
- allowNull: true,
88
- defaultValue: 0,
89
- field: 'bonus_amount',
90
- },
91
- overtimeAmount: {
92
- type: sequelize_1.DataTypes.FLOAT,
93
- allowNull: true,
94
- defaultValue: 0,
95
- field: 'overtime_amount',
96
- },
97
- payoutDate: {
98
- type: sequelize_1.DataTypes.DATE,
99
- allowNull: false,
100
- field: 'payout_date',
101
- },
102
- payoutStartTime: {
103
- type: sequelize_1.DataTypes.DATE,
104
- allowNull: false,
105
- field: 'payout_start_time',
106
- },
107
- payoutEndTime: {
108
- type: sequelize_1.DataTypes.DATE,
109
- allowNull: false,
110
- field: 'payout_end_time',
111
- },
112
- payoutType: {
113
- type: sequelize_1.DataTypes.ENUM,
114
- values: Object.values(app_1.USER_PAYOUT_TYPE),
115
- allowNull: false,
116
- field: 'payout_type',
117
- },
118
- description: {
119
- type: sequelize_1.DataTypes.STRING,
120
- allowNull: true,
121
- },
122
- }, {
123
- modelName: 'UserPayoutHistoryModel',
124
- tableName: 'user_payout_history',
125
- timestamps: true,
126
- sequelize: index_1.sequelize,
127
- });
128
- exports.default = UserPayoutHistoryModel;
@@ -1,3 +0,0 @@
1
- import { Optional } from 'sequelize';
2
- import { IUserPayoutHistoryModelAttributes } from '../interfaces/userPayoutHistoryInterface';
3
- export type TUserPayoutHistoryModelCreationAttributes = Optional<IUserPayoutHistoryModelAttributes, 'id'>;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });