@b2y/ecommerce-common 1.2.2 → 1.2.3

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.
@@ -1,6 +1,5 @@
1
1
  const StatusMessage = require('../constants/StatusMessageConstants');
2
2
  const AppUtil = require('../utility/AppUtil');
3
- const LocationUtility = require('../utility/LocationUtility');
4
3
 
5
4
  // getAllSubscriptionPlans
6
5
  const getAllSubscriptionPlans = (
@@ -418,24 +418,23 @@ const getTenantById = (
418
418
  res,
419
419
  );
420
420
  }
421
- let logo = [];
421
+ let logo = null;;
422
422
  if(tenant.TenantSettings) {
423
- const documents = await Document.findAll({
424
- where: {
425
- EntityType: EntityTypeEnum.TENANT_SETTINGS,
426
- EntityID: tenant.TenantSettings.TenantSettingID
427
- },
428
- order: [["SortOrder", "ASC"]]
429
- });
430
-
431
- logo = await Promise.all(
432
- documents.map(async (doc) => ({
433
- documentId: doc.DocumentID,
434
- sortOrder: doc.SortOrder,
435
- documentUrl: await getPublicUrl(doc, logger)
436
- }))
437
- );
438
- }
423
+ const document = await Document.findOne({
424
+ where: {
425
+ EntityType: EntityTypeEnum.TENANT_SETTINGS,
426
+ EntityID: tenant.TenantSettings.TenantSettingID,
427
+ },
428
+ order: [["SortOrder", "ASC"]],
429
+ });
430
+ if (document) {
431
+ logo = {
432
+ documentId: document.DocumentID,
433
+ sortOrder: document.SortOrder,
434
+ documentUrl: await getPublicUrl(document, logger),
435
+ };
436
+ }
437
+ }
439
438
  const { countryName, stateName } =
440
439
  await LocationUtility.resolveCountryAndState(
441
440
  tenant.CountryCode,
@@ -3,6 +3,34 @@ const StatusMessage = require('../constants/StatusMessageConstants');
3
3
  const AppUtil = require('../utility/AppUtil');
4
4
  const AppConstants = require('../constants/AppConstants')
5
5
 
6
+ const tenantSettingsDocumentValidation = async (
7
+ file,
8
+ documentMetadata,
9
+ FileUploadUtil,
10
+ FILE_PATHS,
11
+ logger
12
+ ) => {
13
+ if (documentMetadata !== undefined) {
14
+ if (
15
+ typeof documentMetadata !== AppConstants.OBJECT ||
16
+ Array.isArray(documentMetadata)
17
+ ) {
18
+ logger.warn(
19
+ "Validation Failed: documentMetadata must be a single object for this operation.",
20
+ );
21
+ throw new Error(StatusMessage.TENANT_SETTINGS_SINGLE_LOGO_ALLOWED);
22
+ }
23
+ logger.info("Uploading new files to storage before transaction");
24
+ const uploadResult = await FileUploadUtil.uploadFilesToStorage(
25
+ documentMetadata,
26
+ file,
27
+ FILE_PATHS.IMAGE_DIR,
28
+ );
29
+ return uploadResult
30
+ }
31
+ return [];
32
+ };
33
+
6
34
  const getTenantSettingsById = (TenantSettings, Document, getPublicUrl, logger) => {
7
35
  return async (req, res) => {
8
36
  try {
@@ -24,22 +52,21 @@ return async (req, res) => {
24
52
  res
25
53
  );
26
54
  }
27
-
28
- const documents = await Document.findAll({
55
+ let logo = null;
56
+ const document = await Document.findOne({
29
57
  where: {
30
58
  EntityType: EntityTypeEnum.TENANT_SETTINGS,
31
59
  EntityID: settings.TenantSettingID
32
60
  },
33
61
  order: [["SortOrder", "ASC"]]
34
62
  });
35
-
36
- const logo = await Promise.all(
37
- documents.map(async (doc) => ({
38
- documentId: doc.DocumentID,
39
- sortOrder: doc.SortOrder,
40
- documentUrl: await getPublicUrl(doc, logger)
41
- }))
42
- );
63
+ if(document) {
64
+ logo = {
65
+ documentId: document.DocumentID,
66
+ sortOrder: document.SortOrder,
67
+ documentUrl: await getPublicUrl(document, logger)
68
+ }
69
+ }
43
70
  const formattedSettings = {
44
71
  TenantSettingID: settings.TenantSettingID,
45
72
  TenantID: settings.TenantID,
@@ -133,30 +160,9 @@ return async (req, res) => {
133
160
  }
134
161
 
135
162
  // Upload new file to storage before starting transaction
136
- let uploadResult = [];
137
- if (documentMetadata !== undefined) {
138
- if (
139
- typeof documentMetadata !== AppConstants.OBJECT ||
140
- Array.isArray(documentMetadata)
141
- ) {
142
- logger.warn(
143
- "Validation Failed: documentMetadata must be a single object for this operation.",
144
- );
145
- return AppUtil.generateResponse(
146
- 400,
147
- StatusMessage.FAILURE,
148
- StatusMessage.TENANT_SETTINGS_SINGLE_LOGO_ALLOWED,
149
- null,
150
- res,
151
- );
152
- }
153
- logger.info('Uploading new files to storage before transaction');
154
- uploadResult = await FileUploadUtil.uploadFilesToStorage(
155
- documentMetadata,
156
- req.files,
157
- FILE_PATHS.IMAGE_DIR
158
- );
159
- uploadedFilePath = uploadResult.map(r => r.path);
163
+ const uploadResult = await tenantSettingsDocumentValidation(req.files, documentMetadata, FileUploadUtil, FILE_PATHS, logger)
164
+ if(uploadResult.length > 0) {
165
+ uploadedFilePath = uploadResult.map(result => result.path)
160
166
  }
161
167
 
162
168
  // Start database transaction
@@ -203,16 +209,15 @@ return async (req, res) => {
203
209
  logger.info('Cleaning up uploaded files due to error');
204
210
  await FileUploadUtil.cleanupFiles(uploadedFilePath);
205
211
  }
206
-
212
+ const errorMessages = [
213
+ StatusMessage.INVALID_SORT_ORDER,
214
+ StatusMessage.FILE_NOT_FOUND,
215
+ StatusMessage.INVALID_FILE_UPLOAD_INPUT,
216
+ StatusMessage.TENANT_SETTINGS_SINGLE_LOGO_ALLOWED,
217
+ ];
207
218
  // Error handling
208
- if (error.message === StatusMessage.INVALID_SORT_ORDER) {
209
- return AppUtil.generateResponse(400, StatusMessage.FAILURE, StatusMessage.INVALID_SORT_ORDER, null, res);
210
- }
211
- if (error.message === StatusMessage.FILE_NOT_FOUND) {
212
- return AppUtil.generateResponse(400, StatusMessage.FAILURE, StatusMessage.FILE_NOT_FOUND, null, res);
213
- }
214
- if(error.message === StatusMessage.INVALID_FILE_UPLOAD_INPUT) {
215
- return AppUtil.generateResponse(400, StatusMessage.FAILURE, StatusMessage.INVALID_FILE_UPLOAD_INPUT, null, res);
219
+ if (errorMessages.includes(error.message)) {
220
+ return AppUtil.generateResponse(400, StatusMessage.FAILURE, error.message, null, res);
216
221
  }
217
222
  if (error.name === 'SequelizeUniqueConstraintError') {
218
223
  return AppUtil.generateResponse(400, StatusMessage.FAILURE, StatusMessage.TENANT_SETTINGS_ALREADY_EXISTS, null, res);
@@ -228,5 +233,5 @@ return async (req, res) => {
228
233
  });
229
234
  };
230
235
  }
231
- module.exports = {getTenantSettingsById, updateTenantSettings};
236
+ module.exports = {getTenantSettingsById, updateTenantSettings, tenantSettingsDocumentValidation};
232
237
 
@@ -193,10 +193,6 @@ const initializeModels = (sequelize) => {
193
193
  as: "Customer",
194
194
  });
195
195
 
196
- Order.belongsTo(Address, {
197
- foreignKey: "AddressID",
198
- as: "Address",
199
- });
200
196
 
201
197
  Order.hasMany(OrderItem, {
202
198
  foreignKey: "OrderID",
package/index.js CHANGED
@@ -5,7 +5,8 @@ const SubscriptionAbstractController = require('./controller/SubscriptionAbstrac
5
5
  const TenantAbstractController = require('./controller/TenantAbstractController');
6
6
  const TenantSettingsAbstractController = require('./controller/TenantSettingsAbstractController');
7
7
  const LocationController = require('./controller/LocationController');
8
- const PermissionAbstractController = require('./controller/PermissionAbstractController');
8
+ const CommonAppConstants = require('./constants/AppConstants');
9
+ const CommonStatusMessage = require('./constants/StatusMessageConstants');
9
10
  const enums = {};
10
11
  const enumDir = path.join(__dirname, 'enum');
11
12
  fs.readdirSync(enumDir).forEach((file) => {
@@ -23,4 +24,4 @@ fs.readdirSync(utilDir).forEach((file) => {
23
24
  }
24
25
  })
25
26
 
26
- module.exports = {initializeModels, enums, utils, SubscriptionAbstractController, TenantAbstractController, TenantSettingsAbstractController, LocationController, PermissionAbstractController};
27
+ module.exports = {initializeModels, enums, utils, CommonAppConstants, CommonStatusMessage, SubscriptionAbstractController, TenantAbstractController, TenantSettingsAbstractController, LocationController};
package/model/Order.js CHANGED
@@ -37,16 +37,6 @@ module.exports = (sequelize) => {
37
37
  type: DataTypes.DATE,
38
38
  allowNull: false
39
39
  },
40
- AddressID: {
41
- type: DataTypes.UUID,
42
- allowNull: false,
43
- references: {
44
- model: 'Address',
45
- key: 'AddressID'
46
- },
47
- onDelete: 'RESTRICT',
48
- onUpdate: 'CASCADE'
49
- },
50
40
  TotalAmount: {
51
41
  type: DataTypes.DECIMAL(10, 2),
52
42
  allowNull: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@b2y/ecommerce-common",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "E-commerce common library",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,6 +21,7 @@
21
21
  "homepage": "https://github.com/yuvakrishna29/ecommerce-common#readme",
22
22
  "peerDependencies": {
23
23
  "@countrystatecity/countries": "^1.0.4",
24
+ "@b2y/document-module": "^1.0.4",
24
25
  "exceljs": "^4.4.0",
25
26
  "luxon": "^3.7.2",
26
27
  "puppeteer": "^24.35.0",
@@ -1,35 +0,0 @@
1
- const AppUtil = require('../utility/AppUtil');
2
- const StatusMessage = require('../constants/StatusMessageConstants');
3
-
4
- getAllPermissions = (Permission, logger) => {
5
- return async (req, res) => {
6
- const { pageNumber, pageSize } = req.query;
7
- try {
8
- const { limit, offset } = AppUtil.getPagination(pageNumber, pageSize);
9
-
10
- const { rows, count } = await Permission.findAndCountAll({
11
- attributes: ["PermissionID", "Module", "Name", "IsChecked"],
12
- limit,
13
- offset,
14
- });
15
- return AppUtil.generateResponse(
16
- 200,
17
- StatusMessage.SUCCESS,
18
- null,
19
- { rows, count, pageNumber, limit },
20
- res,
21
- );
22
- } catch (error) {
23
- logger.error("Error fetching permissions:", error);
24
- return AppUtil.generateResponse(
25
- 500,
26
- StatusMessage.FAILURE,
27
- StatusMessage.SERVER_ERROR,
28
- null,
29
- res,
30
- );
31
- }
32
- };
33
- };
34
-
35
- module.exports = {getAllPermissions}