@kipicore/dbcore 1.1.273 → 1.1.275

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.
@@ -787,7 +787,6 @@ exports.META_AUTH = {
787
787
  TOKEN_URL: 'https://graph.facebook.com/v21.0/oauth/access_token',
788
788
  USER_PROFILE_URL: 'https://graph.facebook.com/v21.0/me',
789
789
  };
790
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
791
790
  exports.APPLE_AUTH = {
792
791
  CLIENT_ID: env_1.ENV_VARIABLE.APPLE_CLIENT_ID,
793
792
  TEAM_ID: env_1.ENV_VARIABLE.APPLE_TEAM_ID,
@@ -874,7 +873,6 @@ exports.templateKeyWord = [
874
873
  {
875
874
  keyWord: '@studentName',
876
875
  name: '[student name]',
877
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
878
876
  value: (data) => {
879
877
  return `${data.firstName} ${data.lastName}`;
880
878
  },
@@ -882,7 +880,6 @@ exports.templateKeyWord = [
882
880
  {
883
881
  name: '[amount]',
884
882
  keyWord: '@amount',
885
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
886
883
  value: (data) => {
887
884
  return data.amount;
888
885
  },
@@ -890,7 +887,6 @@ exports.templateKeyWord = [
890
887
  {
891
888
  name: '[due date]',
892
889
  keyWord: '@dueDate',
893
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
894
890
  value: (data) => {
895
891
  return data.dueDate;
896
892
  },
@@ -43,7 +43,6 @@ exports.assignNonNull = assignNonNull;
43
43
  exports.isUserSchoolInfoUpdate = isUserSchoolInfoUpdate;
44
44
  exports.chunkArray = chunkArray;
45
45
  exports.extractFromObject = extractFromObject;
46
- /* eslint-disable @typescript-eslint/no-explicit-any */
47
46
  const fs_1 = __importDefault(require("fs"));
48
47
  const dateFunction = __importStar(require("date-fns"));
49
48
  const app_1 = require("../constants/app");
@@ -57,4 +57,5 @@ export interface IUserInstituteMetaAttributes extends IDefaultAttributes, Docume
57
57
  studentFeeType?: FEE_COLLECTION_TYPE;
58
58
  isSchoolMeta?: boolean;
59
59
  isFeeCarryForward: boolean;
60
+ isFeeCollectionCreated: boolean;
60
61
  }
@@ -148,6 +148,7 @@ const examGroupModelSchema = new mongoose_1.Schema({
148
148
  });
149
149
  const createOrUpdateHook = async (examGroup) => {
150
150
  try {
151
+ await validateStandardDateConflict(examGroup);
151
152
  if (examGroup.instituteId) {
152
153
  const institute = await instituteModel_1.default.findOne({
153
154
  where: {
@@ -267,10 +268,22 @@ const createOrUpdateHook = async (examGroup) => {
267
268
  throw err;
268
269
  }
269
270
  };
271
+ const validateStandardDateConflict = async (examGroup) => {
272
+ const conflict = await ExamGroupModel.findOne({
273
+ instituteId: examGroup.instituteId,
274
+ ...(examGroup.id && { id: { $ne: examGroup.id } }),
275
+ standards: { $in: examGroup.standards },
276
+ startDate: { $lte: examGroup.endDate },
277
+ endDate: { $gte: examGroup.startDate },
278
+ }).lean();
279
+ if (conflict) {
280
+ throw new Error(`Another exam group "${conflict.title}" already exists for selected standard(s) in this date range`);
281
+ }
282
+ };
270
283
  examGroupModelSchema.pre('save', async function (next) {
271
- const subjectIndex = this;
284
+ const examGroup = this;
272
285
  try {
273
- await createOrUpdateHook(subjectIndex);
286
+ await createOrUpdateHook(examGroup);
274
287
  next();
275
288
  }
276
289
  catch (error) {
@@ -278,9 +291,9 @@ examGroupModelSchema.pre('save', async function (next) {
278
291
  }
279
292
  });
280
293
  examGroupModelSchema.pre('updateMany', async function (next) {
281
- const subjectIndex = this.getUpdate();
294
+ const examGroup = this.getUpdate();
282
295
  try {
283
- await createOrUpdateHook(subjectIndex);
296
+ await createOrUpdateHook(examGroup);
284
297
  next();
285
298
  }
286
299
  catch (error) {
@@ -118,8 +118,8 @@ const examHasAnswerSheetSchema = new mongoose_1.Schema({
118
118
  },
119
119
  academicCalendarId: {
120
120
  type: String,
121
- required: false
122
- }
121
+ required: false,
122
+ },
123
123
  }, {
124
124
  timestamps: true,
125
125
  versionKey: false,
@@ -20,6 +20,7 @@ const connectMongoDb = async () => {
20
20
  });
21
21
  }
22
22
  catch (err) {
23
+ // eslint-disable-next-line no-console
23
24
  console.log('error while connect monngodb : ' + err);
24
25
  }
25
26
  };
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
6
  const mongoose_1 = __importDefault(require("mongoose"));
8
7
  const transformNestedDocs = (doc) => {
9
8
  if (!doc || typeof doc !== 'object') {
@@ -36,7 +36,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- /* eslint-disable @typescript-eslint/no-explicit-any */
40
39
  const mongoose_1 = __importStar(require("mongoose"));
41
40
  const app_1 = require("../../constants/app");
42
41
  const utils_1 = require("../../helpers/utils");
@@ -231,6 +231,10 @@ const userInstituteMetaSchema = new mongoose_1.Schema({
231
231
  type: Boolean,
232
232
  default: false,
233
233
  },
234
+ isFeeCollectionCreated: {
235
+ type: Boolean,
236
+ default: false,
237
+ },
234
238
  }, {
235
239
  timestamps: true,
236
240
  versionKey: false,
@@ -5,7 +5,7 @@ const sequelize_1 = require("sequelize");
5
5
  const index_1 = require("./index");
6
6
  class BatchSubjectBookAssessmentModel extends sequelize_1.Model {
7
7
  static associate(models) {
8
- const { InstituteModel, UserModel, BatchModel, TypeManagementModel, InstituteEntityModel, AcademicCalendarModel, } = models;
8
+ const { InstituteModel, UserModel, BatchModel, TypeManagementModel, InstituteEntityModel, AcademicCalendarModel } = models;
9
9
  BatchSubjectBookAssessmentModel.belongsTo(InstituteModel, {
10
10
  foreignKey: { name: 'instituteId', field: 'institute_id' },
11
11
  as: 'subjectBookAssessmentInstitute',
@@ -11,7 +11,7 @@ const errorMessages_1 = require("../../constants/errorMessages");
11
11
  const userInstituteMetaModel_1 = __importDefault(require("../mongodb/userInstituteMetaModel"));
12
12
  class FeeHistoryModel extends sequelize_1.Model {
13
13
  static associate(models) {
14
- const { UserModel, InstituteModel, SchoolFeeCollectionModel, FeesCollectionModel, FileStorageModel, BankAccountDetailsModel, SubjectHasPayFeeHistory, UserHasSubjectFeeModel, InstituteEntityModel, AcademicCalendarModel, } = models;
14
+ const { UserModel, InstituteModel, SchoolFeeCollectionModel, FeesCollectionModel, FileStorageModel, BankAccountDetailsModel, AcademicCalendarModel, } = models;
15
15
  FeeHistoryModel.belongsTo(FeesCollectionModel, {
16
16
  foreignKey: { name: 'feeCollectionId', field: 'fee_collection_id', allowNull: true },
17
17
  as: 'feeHistoryFeeCollection',
@@ -90,7 +90,7 @@ class FeeHistoryModel extends sequelize_1.Model {
90
90
  });
91
91
  }
92
92
  static addHooks(models) {
93
- const { FileStorageModel, FeesCollectionModel, InstituteEntityModel, UserHasSubjectFeeModel, SubjectHasPayFeeHistory } = models;
93
+ const { FileStorageModel } = models;
94
94
  const subjectWiserFeePay = async (instituteId, feeCollectionId, paidFee, userId, academicCalendarId) => {
95
95
  const { InstituteEntityModel, UserHasSubjectFeeModel, FeesCollectionModel, SubjectHasPayFeeHistory } = models;
96
96
  const userInstituteMeta = await userInstituteMetaModel_1.default.findOne({
@@ -5,6 +5,7 @@ const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  const errorMessages_1 = require("../../constants/errorMessages");
7
7
  class FeesCollectionModel extends sequelize_1.Model {
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
9
  static addHooks(models) {
9
10
  const beforeCreateOrUpdateHook = async (feeCollection) => {
10
11
  let existingRecord = null;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  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.FeesCollectionModel = exports.FeeTypeModel = exports.FeeTypeHasTermsModel = exports.FeeReminderSettingModel = exports.FeeReminderModel = exports.FeeHistoryModel = exports.FeeHistoryDetailsModel = 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
7
  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.UserHasFeeTermsModel = exports.UserHasDeviceModel = exports.UserHasCourseModel = exports.UserHasBatchModel = exports.UserHasAnnouncementModel = exports.UserFeeTypeModel = exports.UserFeeTypeByAccountModel = 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.SchoolFeeCollectionModel = exports.RulesRegulationModel = exports.RoleModel = exports.ProjectAssessmentOptionModel = exports.ProductModel = exports.PincodeModel = exports.PdcHistoryModel = exports.PdcChequeModel = exports.PaymentTermsModel = void 0;
8
8
  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 = exports.IncomeExpenseModel = exports.MaintenanceModel = exports.AdvertisementModel = exports.WorkOffDaysModel = exports.EntityWiseCalendarModel = exports.CampusModel = exports.LostFoundItemModel = exports.WorkingShiftModel = exports.WorkingDayModel = exports.WalletModel = exports.WalletHistoryModel = void 0;
9
- /* eslint-disable @typescript-eslint/no-explicit-any */
10
9
  const sequelize_1 = require("sequelize");
11
10
  Object.defineProperty(exports, "Sequelize", { enumerable: true, get: function () { return sequelize_1.Sequelize; } });
12
11
  const postgresConfig = require('../../configs/postgresConfig');
@@ -100,6 +100,7 @@ class StudentFeeHistoryModel extends sequelize_1.Model {
100
100
  as: 'batchStudentHistory',
101
101
  });
102
102
  }
103
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
103
104
  static addHooks(models) {
104
105
  StudentFeeHistoryModel.beforeCreate(async (feeCollection) => {
105
106
  if (feeCollection.paidFee) {
@@ -5,7 +5,7 @@ const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  class UserHasHomeWorkModel extends sequelize_1.Model {
7
7
  static associate(models) {
8
- const { UserModel, InstituteModel, BatchModel, HomeWorkModel, AcademicCalendarModel } = models;
8
+ const { UserModel, InstituteModel, HomeWorkModel, AcademicCalendarModel } = models;
9
9
  UserHasHomeWorkModel.belongsTo(InstituteModel, {
10
10
  foreignKey: { name: 'instituteId', field: 'institute_id' },
11
11
  as: 'homeWorkHasInstitute',
@@ -35,6 +35,7 @@ class UserHasParentModel extends sequelize_1.Model {
35
35
  as: 'deletedByUser',
36
36
  });
37
37
  }
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
39
  static addHooks(models) {
39
40
  UserHasParentModel.addHook('beforeFind', (options) => {
40
41
  if (!Object.prototype.hasOwnProperty.call(options.where, 'isDeleted')) {
@@ -10,7 +10,7 @@ const uniqueNumberCounterModel_1 = __importDefault(require("../mongodb/uniqueNum
10
10
  const utils_1 = require("../../helpers/utils");
11
11
  class UserModel extends sequelize_1.Model {
12
12
  static associate(models) {
13
- const { CountryModel, StateModel, CityModel, TokenModel, UserModel, AreaModel } = models;
13
+ const { CountryModel, StateModel, CityModel, TokenModel, UserModel } = models;
14
14
  UserModel.belongsTo(CountryModel, { foreignKey: 'country' });
15
15
  UserModel.belongsTo(StateModel, { foreignKey: 'state' });
16
16
  UserModel.belongsTo(CityModel, { foreignKey: 'city' });
@@ -7,7 +7,7 @@ const date_fns_1 = require("date-fns");
7
7
  const utils_1 = require("../../helpers/utils");
8
8
  class UserPayoutModel extends sequelize_1.Model {
9
9
  static associate(models) {
10
- const { UserModel, InstituteModel, UserPayoutDetailsModel } = models;
10
+ const { UserModel, InstituteModel } = models;
11
11
  UserPayoutModel.belongsTo(UserModel, {
12
12
  foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
13
13
  as: 'createdByUser',
@@ -196,6 +196,7 @@ class UserPayoutModel extends sequelize_1.Model {
196
196
  });
197
197
  await transaction.commit();
198
198
  return userPayoutList;
199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
199
200
  }
200
201
  catch (err) {
201
202
  await transaction.rollback();
@@ -5,7 +5,7 @@ const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  class WalletModel extends sequelize_1.Model {
7
7
  static associate(models) {
8
- const { UserModel, WalletHistoryModel } = models;
8
+ const { UserModel } = models;
9
9
  WalletModel.hasMany(UserModel, {
10
10
  foreignKey: 'uuid',
11
11
  sourceKey: 'uuid',
@@ -44,7 +44,7 @@ WalletModel.init({
44
44
  type: sequelize_1.DataTypes.UUID,
45
45
  primaryKey: true,
46
46
  allowNull: false,
47
- defaultValue: sequelize_1.DataTypes.UUIDV4
47
+ defaultValue: sequelize_1.DataTypes.UUIDV4,
48
48
  },
49
49
  coin: {
50
50
  type: sequelize_1.DataTypes.FLOAT,
@@ -89,9 +89,7 @@ class MongooseCommonService {
89
89
  return createdDoc;
90
90
  }
91
91
  async bulkCreate(createData, options = {}) {
92
- return this.model.create(
93
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
- createData.map((data) => {
92
+ return this.model.create(createData.map((data) => {
95
93
  data.createdBy = options.userId;
96
94
  return data;
97
95
  }), { ...options, ordered: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kipicore/dbcore",
3
- "version": "1.1.273",
3
+ "version": "1.1.275",
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",