@b2y/ecommerce-common 1.0.4 → 1.0.6

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 (67) hide show
  1. package/README.md +4 -4
  2. package/constants/AppConstants.js +3 -3
  3. package/constants/ReportConstants.js +14 -14
  4. package/constants/StatusMessageConstants.js +17 -17
  5. package/dbconnection/Connect.js +379 -379
  6. package/enum/AddressTypeEnum.js +6 -6
  7. package/enum/BooleanEnum.js +4 -4
  8. package/enum/EntityTypeEnum.js +11 -11
  9. package/enum/GenderEnum.js +7 -7
  10. package/enum/NotificationStatusEnum.js +5 -5
  11. package/enum/NotificationTypeEnum.js +9 -9
  12. package/enum/OrderStatusEnum.js +7 -7
  13. package/enum/PaymentMethodEnum.js +6 -6
  14. package/enum/PaymentStatusEnum.js +6 -6
  15. package/enum/PaymentTypeEnum.js +6 -6
  16. package/enum/PlatformEnum.js +4 -4
  17. package/enum/RegistrationStatusEnum.js +5 -5
  18. package/enum/SortByEnum.js +7 -7
  19. package/index.js +22 -22
  20. package/model/Address.js +95 -95
  21. package/model/AttributeType.js +50 -50
  22. package/model/AttributeValue.js +64 -64
  23. package/model/Banner.js +78 -78
  24. package/model/Brand.js +76 -76
  25. package/model/Cart.js +76 -76
  26. package/model/Category.js +72 -72
  27. package/model/CategoryAttributeType.js +62 -62
  28. package/model/Colour.js +52 -52
  29. package/model/Customer.js +94 -94
  30. package/model/DeviceToken.js +51 -51
  31. package/model/Document.js +70 -70
  32. package/model/DynamicUIComponent.js +52 -52
  33. package/model/Feedback.js +79 -79
  34. package/model/Inventory.js +83 -83
  35. package/model/NotificationHistory.js +67 -67
  36. package/model/Order.js +94 -94
  37. package/model/OrderItem.js +98 -98
  38. package/model/OrderItemHistory.js +69 -69
  39. package/model/OrderStatus.js +48 -48
  40. package/model/Payment.js +101 -101
  41. package/model/PaymentMethod.js +36 -36
  42. package/model/PaymentStatus.js +36 -36
  43. package/model/PaymentType.js +36 -36
  44. package/model/Permission.js +55 -55
  45. package/model/Product.js +82 -82
  46. package/model/ProductGroup.js +48 -48
  47. package/model/ProductSpecification.js +65 -65
  48. package/model/ProductVariant.js +75 -75
  49. package/model/ProductVariantAttribute.js +58 -58
  50. package/model/Role.js +61 -61
  51. package/model/RolePermissionMapping.js +63 -63
  52. package/model/SpecificationType.js +41 -41
  53. package/model/Store.js +99 -99
  54. package/model/StoreUserMapping.js +44 -44
  55. package/model/Tenant.js +91 -91
  56. package/model/TenantSettings.js +47 -47
  57. package/model/User.js +132 -132
  58. package/model/WishList.js +62 -62
  59. package/package.json +28 -28
  60. package/utility/AppUtil.js +65 -57
  61. package/utility/DateUtil.js +55 -55
  62. package/utility/ExcelUtil.js +125 -125
  63. package/utility/LocationUtility.js +130 -130
  64. package/utility/OrderTimeFilterUtil.js +87 -87
  65. package/utility/QueryUtil.js +261 -261
  66. package/utility/Razorpay.js +65 -65
  67. package/utility/VariantPriceUtil.js +54 -54
@@ -1,262 +1,262 @@
1
-
2
- const AppUtil = require('../utility/AppUtil');
3
- const StatusMessage = require('../constants/StatusMessageConstants');
4
- const DateUtil = require('../utility/DateUtil');
5
- const {Sequelize} = require('sequelize');
6
- class QueryUtil {
7
- static parseId(idParam) {
8
- if (!idParam) return null;
9
- if (Array.isArray(idParam))
10
- return idParam.map((id) => id.toString().trim()).filter((id) => id);
11
- return idParam
12
- .toString()
13
- .split(",")
14
- .map((id) => id.trim())
15
- .filter((id) => id);
16
- };
17
-
18
- static storeWhereClause(filters, tenantID, logger) {
19
- const { startDate, endDate, IsActive, searchText } = filters;
20
- let storeWhereClause = {};
21
- // Date range filter
22
- if (startDate && !DateUtil.isValidDate(startDate)) {
23
- logger.warn("invalid start date");
24
- throw new Error(StatusMessage.INVALID_START_DATE);
25
- }
26
- if (endDate && !DateUtil.isValidDate(endDate)) {
27
- logger.warn("invalid end date");
28
- throw new Error(StatusMessage.INVALID_END_DATE);
29
- }
30
- if (startDate && endDate) {
31
- storeWhereClause.CreatedAt = {
32
- [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
33
- };
34
- } else if (startDate) {
35
- storeWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
36
- } else if (endDate) {
37
- storeWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
38
- }
39
- if (IsActive) {
40
- const isActiveValue = AppUtil.parseIsActive(IsActive);
41
- if (isActiveValue === undefined) {
42
- logger.warn("invalid IsActive status");
43
- throw new Error(StatusMessage.INVALID_ISACTIVE_STATUS);
44
- }
45
- storeWhereClause.IsActive = isActiveValue;
46
- }
47
- // Tenant ID
48
- if (tenantID) storeWhereClause.TenantID = tenantID;
49
- if (searchText) {
50
- storeWhereClause[Sequelize.Op.or] = [
51
- { StoreName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
52
- { AddressLine1: { [Sequelize.Op.iLike]: `%${searchText}%` } },
53
- { AddressLine2: { [Sequelize.Op.iLike]: `%${searchText}%` } },
54
- { "$City.CityName$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
55
- ];
56
- }
57
-
58
- return storeWhereClause;
59
- }
60
- static orderWhereClause(filters, tenantID, logger) {
61
- const { startDate, endDate, searchText, paymentStatusId, storeId } = filters;
62
- let orderWhereClause = {};
63
- let paymentStatusWhere = {};
64
- let storeWhereClause = {};
65
- if (tenantID) orderWhereClause.TenantID = tenantID;
66
- if (startDate && !DateUtil.isValidDate(startDate)) {
67
- logger.warn("invalid start date");
68
- throw new Error(StatusMessage.INVALID_START_DATE);
69
- }
70
- if (endDate && !DateUtil.isValidDate(endDate)) {
71
- logger.warn("invalid end date");
72
- throw new Error(StatusMessage.INVALID_END_DATE);
73
- }
74
- if (searchText) {
75
- orderWhereClause[Sequelize.Op.or] = [
76
- { OrderRefID: { [Sequelize.Op.iLike]: `%${searchText}%` } },
77
- { "$Customer.FirstName$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
78
- ];
79
- }
80
- if (paymentStatusId) {
81
- const paymentStatusIDs = this.parseId(paymentStatusId);
82
- paymentStatusWhere.PaymentStatusID = {[Sequelize.Op.in] : paymentStatusIDs};
83
- }
84
- if(storeId) {
85
- const storeIDs = this.parseId(storeId);
86
- storeWhereClause.StoreID = {[Sequelize.Op.in] : storeIDs}
87
- }
88
- if (startDate && endDate) {
89
- orderWhereClause.OrderDate = {
90
- [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
91
- };
92
- } else if (startDate) {
93
- orderWhereClause.OrderDate = { [Sequelize.Op.gte]: new Date(startDate) };
94
- } else if (endDate) {
95
- orderWhereClause.OrderDate = { [Sequelize.Op.lte]: new Date(endDate) };
96
- }
97
- return { orderWhereClause, includeWhere: { paymentStatusWhere, storeWhereClause } };
98
- }
99
- static paymentWhereClause(filters, tenantID, logger) {
100
- const {
101
- paymentStatusId,
102
- searchText,
103
- paymentTypeId,
104
- paymentMethodId,
105
- storeId,
106
- startDate,
107
- endDate,
108
- } = filters;
109
- let paymentWhereClause = {};
110
- let paymentStatusWhere = {};
111
- let paymentTypeWhere = {};
112
- let paymentMethodWhere = {};
113
- let storeWhereClause = {};
114
- if (tenantID) paymentWhereClause.TenantID = tenantID;
115
- if (startDate && !DateUtil.isValidDate(startDate)) {
116
- logger.warn("invalid start date");
117
- throw new Error(StatusMessage.INVALID_START_DATE);
118
- }
119
- if (endDate && !DateUtil.isValidDate(endDate)) {
120
- logger.warn("invalid end date");
121
- throw new Error(StatusMessage.INVALID_END_DATE);
122
- }
123
- if (searchText) {
124
- paymentWhereClause[Sequelize.Op.or] = [
125
- { "$Order.OrderRefID$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
126
- { PaymentRefID: { [Sequelize.Op.iLike]: `%${searchText}%` } },
127
- ];
128
- }
129
- if (paymentStatusId) {
130
- const paymentStatusIDs = this.parseId(paymentStatusId)
131
- paymentStatusWhere.PaymentStatusID = {[Sequelize.Op.in] : paymentStatusIDs};
132
- }
133
- if (paymentTypeId) {
134
- const paymentTypeIDs = this.parseId(paymentTypeId)
135
- paymentTypeWhere.PaymentTypeID = {[Sequelize.Op.in] : paymentTypeIDs};
136
- }
137
- if (paymentMethodId) {
138
- const paymentMethodIDs = this.parseId(paymentMethodId);
139
- paymentMethodWhere.PaymentMethodID = {[Sequelize.Op.in] : paymentMethodIDs};
140
- }
141
- if(storeId) {
142
- const storeIDs = this.parseId(storeId);
143
- storeWhereClause.StoreID = {[Sequelize.Op.in]: storeIDs}
144
- }
145
- if (startDate && endDate) {
146
- paymentWhereClause.PaymentDate = {
147
- [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
148
- };
149
- } else if (startDate) {
150
- paymentWhereClause.PaymentDate = { [Sequelize.Op.gte]: new Date(startDate) };
151
- } else if (endDate) {
152
- paymentWhereClause.PaymentDate = { [Sequelize.Op.lte]: new Date(endDate) };
153
- }
154
- return {
155
- paymentWhereClause,
156
- includeWhere: {
157
- paymentStatusWhere,
158
- paymentMethodWhere,
159
- paymentTypeWhere,
160
- storeWhereClause
161
- },
162
- };
163
- }
164
- static customerWhereClause(filters, tenantID, logger) {
165
- const { searchText, startDate, endDate } = filters;
166
- let customerWhereClause = {};
167
- if (startDate && !DateUtil.isValidDate(startDate)) {
168
- logger.warn("invalid start date")
169
- throw new Error(StatusMessage.INVALID_START_DATE);
170
- }
171
- if (endDate && !DateUtil.isValidDate(endDate)) {
172
- logger.warn("invalid end date");
173
- throw new Error(StatusMessage.INVALID_END_DATE);
174
- }
175
- if (startDate && endDate) {
176
- customerWhereClause.CreatedAt = {
177
- [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
178
- };
179
- } else if (startDate) {
180
- customerWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
181
- } else if (endDate) {
182
- customerWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
183
- }
184
- if (tenantID) customerWhereClause.TenantID = tenantID;
185
- if (searchText) {
186
- customerWhereClause[Sequelize.Op.or] = [
187
- { FirstName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
188
- { LastName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
189
- ];
190
- }
191
- return customerWhereClause;
192
- }
193
- static productWhereClause(filters, tenantID, logger) {
194
- const { brandId, categoryId, storeId, IsActive, searchText, startDate, endDate } =
195
- filters;
196
- const brandWhere = {};
197
- const categoryWhere = {};
198
- const storeWhere = {};
199
- const productWhereClause = {};
200
- if (tenantID) {
201
- productWhereClause.TenantID = tenantID;
202
- brandWhere.TenantID = tenantID;
203
- categoryWhere.TenantID = tenantID;
204
- }
205
-
206
- if (startDate && !DateUtil.isValidDate(startDate)) {
207
- logger.warn("invalid start date");
208
- throw new Error(StatusMessage.INVALID_START_DATE);
209
- }
210
- if (endDate && !DateUtil.isValidDate(endDate)) {
211
- logger.warn("invalid end date");
212
- throw new Error(StatusMessage.INVALID_END_DATE);
213
- }
214
- if (startDate && endDate) {
215
- productWhereClause.CreatedAt = {
216
- [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
217
- };
218
- } else if (startDate) {
219
- productWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
220
- } else if (endDate) {
221
- productWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
222
- }
223
- if (searchText) {
224
- productWhereClause[Sequelize.Op.or] = [
225
- { ProductName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
226
- ];
227
- }
228
- if (IsActive) {
229
- const isActiveValue = AppUtil.parseIsActive(IsActive);
230
- if (isActiveValue === undefined) {
231
- logger.warn("invalid IsActive status");
232
- throw new Error(StatusMessage.INVALID_ISACTIVE_STATUS);
233
- }
234
- productWhereClause.IsActive = isActiveValue;
235
- }
236
- if (brandId) {
237
- const brandIds = this.parseId(brandId);
238
- brandWhere.BrandID = { [Sequelize.Op.in]: brandIds };
239
- }
240
- if (categoryId) {
241
- const categoryIds = this.parseId(categoryId);
242
- categoryWhere.CategoryID = { [Sequelize.Op.in]: categoryIds };
243
- }
244
- if(storeId) {
245
- const storeIds = this.parseId(storeId);
246
- storeWhere.StoreID = { [Sequelize.Op.in]: storeIds };
247
- }
248
- return {
249
- productWhereClause,
250
- includeWhere: { brandWhere, categoryWhere, storeWhere },
251
- };
252
- }
253
-
254
- static getDefaultOptions(whereClause, order = [['CreatedAt', 'DESC']]) {
255
- return {
256
- where: whereClause,
257
- order: order
258
- };
259
- }
260
- }
261
-
1
+
2
+ const AppUtil = require('../utility/AppUtil');
3
+ const StatusMessage = require('../constants/StatusMessageConstants');
4
+ const DateUtil = require('../utility/DateUtil');
5
+ const {Sequelize} = require('sequelize');
6
+ class QueryUtil {
7
+ static parseId(idParam) {
8
+ if (!idParam) return null;
9
+ if (Array.isArray(idParam))
10
+ return idParam.map((id) => id.toString().trim()).filter((id) => id);
11
+ return idParam
12
+ .toString()
13
+ .split(",")
14
+ .map((id) => id.trim())
15
+ .filter((id) => id);
16
+ };
17
+
18
+ static storeWhereClause(filters, tenantID, logger) {
19
+ const { startDate, endDate, IsActive, searchText } = filters;
20
+ let storeWhereClause = {};
21
+ // Date range filter
22
+ if (startDate && !DateUtil.isValidDate(startDate)) {
23
+ logger.warn("invalid start date");
24
+ throw new Error(StatusMessage.INVALID_START_DATE);
25
+ }
26
+ if (endDate && !DateUtil.isValidDate(endDate)) {
27
+ logger.warn("invalid end date");
28
+ throw new Error(StatusMessage.INVALID_END_DATE);
29
+ }
30
+ if (startDate && endDate) {
31
+ storeWhereClause.CreatedAt = {
32
+ [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
33
+ };
34
+ } else if (startDate) {
35
+ storeWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
36
+ } else if (endDate) {
37
+ storeWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
38
+ }
39
+ if (IsActive) {
40
+ const isActiveValue = AppUtil.parseIsActive(IsActive);
41
+ if (isActiveValue === undefined) {
42
+ logger.warn("invalid IsActive status");
43
+ throw new Error(StatusMessage.INVALID_ISACTIVE_STATUS);
44
+ }
45
+ storeWhereClause.IsActive = isActiveValue;
46
+ }
47
+ // Tenant ID
48
+ if (tenantID) storeWhereClause.TenantID = tenantID;
49
+ if (searchText) {
50
+ storeWhereClause[Sequelize.Op.or] = [
51
+ { StoreName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
52
+ { AddressLine1: { [Sequelize.Op.iLike]: `%${searchText}%` } },
53
+ { AddressLine2: { [Sequelize.Op.iLike]: `%${searchText}%` } },
54
+ { "$City.CityName$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
55
+ ];
56
+ }
57
+
58
+ return storeWhereClause;
59
+ }
60
+ static orderWhereClause(filters, tenantID, logger) {
61
+ const { startDate, endDate, searchText, paymentStatusId, storeId } = filters;
62
+ let orderWhereClause = {};
63
+ let paymentStatusWhere = {};
64
+ let storeWhereClause = {};
65
+ if (tenantID) orderWhereClause.TenantID = tenantID;
66
+ if (startDate && !DateUtil.isValidDate(startDate)) {
67
+ logger.warn("invalid start date");
68
+ throw new Error(StatusMessage.INVALID_START_DATE);
69
+ }
70
+ if (endDate && !DateUtil.isValidDate(endDate)) {
71
+ logger.warn("invalid end date");
72
+ throw new Error(StatusMessage.INVALID_END_DATE);
73
+ }
74
+ if (searchText) {
75
+ orderWhereClause[Sequelize.Op.or] = [
76
+ { OrderRefID: { [Sequelize.Op.iLike]: `%${searchText}%` } },
77
+ { "$Customer.FirstName$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
78
+ ];
79
+ }
80
+ if (paymentStatusId) {
81
+ const paymentStatusIDs = this.parseId(paymentStatusId);
82
+ paymentStatusWhere.PaymentStatusID = {[Sequelize.Op.in] : paymentStatusIDs};
83
+ }
84
+ if(storeId) {
85
+ const storeIDs = this.parseId(storeId);
86
+ storeWhereClause.StoreID = {[Sequelize.Op.in] : storeIDs}
87
+ }
88
+ if (startDate && endDate) {
89
+ orderWhereClause.OrderDate = {
90
+ [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
91
+ };
92
+ } else if (startDate) {
93
+ orderWhereClause.OrderDate = { [Sequelize.Op.gte]: new Date(startDate) };
94
+ } else if (endDate) {
95
+ orderWhereClause.OrderDate = { [Sequelize.Op.lte]: new Date(endDate) };
96
+ }
97
+ return { orderWhereClause, includeWhere: { paymentStatusWhere, storeWhereClause } };
98
+ }
99
+ static paymentWhereClause(filters, tenantID, logger) {
100
+ const {
101
+ paymentStatusId,
102
+ searchText,
103
+ paymentTypeId,
104
+ paymentMethodId,
105
+ storeId,
106
+ startDate,
107
+ endDate,
108
+ } = filters;
109
+ let paymentWhereClause = {};
110
+ let paymentStatusWhere = {};
111
+ let paymentTypeWhere = {};
112
+ let paymentMethodWhere = {};
113
+ let storeWhereClause = {};
114
+ if (tenantID) paymentWhereClause.TenantID = tenantID;
115
+ if (startDate && !DateUtil.isValidDate(startDate)) {
116
+ logger.warn("invalid start date");
117
+ throw new Error(StatusMessage.INVALID_START_DATE);
118
+ }
119
+ if (endDate && !DateUtil.isValidDate(endDate)) {
120
+ logger.warn("invalid end date");
121
+ throw new Error(StatusMessage.INVALID_END_DATE);
122
+ }
123
+ if (searchText) {
124
+ paymentWhereClause[Sequelize.Op.or] = [
125
+ { "$Order.OrderRefID$": { [Sequelize.Op.iLike]: `%${searchText}%` } },
126
+ { PaymentRefID: { [Sequelize.Op.iLike]: `%${searchText}%` } },
127
+ ];
128
+ }
129
+ if (paymentStatusId) {
130
+ const paymentStatusIDs = this.parseId(paymentStatusId)
131
+ paymentStatusWhere.PaymentStatusID = {[Sequelize.Op.in] : paymentStatusIDs};
132
+ }
133
+ if (paymentTypeId) {
134
+ const paymentTypeIDs = this.parseId(paymentTypeId)
135
+ paymentTypeWhere.PaymentTypeID = {[Sequelize.Op.in] : paymentTypeIDs};
136
+ }
137
+ if (paymentMethodId) {
138
+ const paymentMethodIDs = this.parseId(paymentMethodId);
139
+ paymentMethodWhere.PaymentMethodID = {[Sequelize.Op.in] : paymentMethodIDs};
140
+ }
141
+ if(storeId) {
142
+ const storeIDs = this.parseId(storeId);
143
+ storeWhereClause.StoreID = {[Sequelize.Op.in]: storeIDs}
144
+ }
145
+ if (startDate && endDate) {
146
+ paymentWhereClause.PaymentDate = {
147
+ [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
148
+ };
149
+ } else if (startDate) {
150
+ paymentWhereClause.PaymentDate = { [Sequelize.Op.gte]: new Date(startDate) };
151
+ } else if (endDate) {
152
+ paymentWhereClause.PaymentDate = { [Sequelize.Op.lte]: new Date(endDate) };
153
+ }
154
+ return {
155
+ paymentWhereClause,
156
+ includeWhere: {
157
+ paymentStatusWhere,
158
+ paymentMethodWhere,
159
+ paymentTypeWhere,
160
+ storeWhereClause
161
+ },
162
+ };
163
+ }
164
+ static customerWhereClause(filters, tenantID, logger) {
165
+ const { searchText, startDate, endDate } = filters;
166
+ let customerWhereClause = {};
167
+ if (startDate && !DateUtil.isValidDate(startDate)) {
168
+ logger.warn("invalid start date")
169
+ throw new Error(StatusMessage.INVALID_START_DATE);
170
+ }
171
+ if (endDate && !DateUtil.isValidDate(endDate)) {
172
+ logger.warn("invalid end date");
173
+ throw new Error(StatusMessage.INVALID_END_DATE);
174
+ }
175
+ if (startDate && endDate) {
176
+ customerWhereClause.CreatedAt = {
177
+ [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
178
+ };
179
+ } else if (startDate) {
180
+ customerWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
181
+ } else if (endDate) {
182
+ customerWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
183
+ }
184
+ if (tenantID) customerWhereClause.TenantID = tenantID;
185
+ if (searchText) {
186
+ customerWhereClause[Sequelize.Op.or] = [
187
+ { FirstName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
188
+ { LastName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
189
+ ];
190
+ }
191
+ return customerWhereClause;
192
+ }
193
+ static productWhereClause(filters, tenantID, logger) {
194
+ const { brandId, categoryId, storeId, IsActive, searchText, startDate, endDate } =
195
+ filters;
196
+ const brandWhere = {};
197
+ const categoryWhere = {};
198
+ const storeWhere = {};
199
+ const productWhereClause = {};
200
+ if (tenantID) {
201
+ productWhereClause.TenantID = tenantID;
202
+ brandWhere.TenantID = tenantID;
203
+ categoryWhere.TenantID = tenantID;
204
+ }
205
+
206
+ if (startDate && !DateUtil.isValidDate(startDate)) {
207
+ logger.warn("invalid start date");
208
+ throw new Error(StatusMessage.INVALID_START_DATE);
209
+ }
210
+ if (endDate && !DateUtil.isValidDate(endDate)) {
211
+ logger.warn("invalid end date");
212
+ throw new Error(StatusMessage.INVALID_END_DATE);
213
+ }
214
+ if (startDate && endDate) {
215
+ productWhereClause.CreatedAt = {
216
+ [Sequelize.Op.between]: [new Date(startDate), new Date(endDate)],
217
+ };
218
+ } else if (startDate) {
219
+ productWhereClause.CreatedAt = { [Sequelize.Op.gte]: new Date(startDate) };
220
+ } else if (endDate) {
221
+ productWhereClause.CreatedAt = { [Sequelize.Op.lte]: new Date(endDate) };
222
+ }
223
+ if (searchText) {
224
+ productWhereClause[Sequelize.Op.or] = [
225
+ { ProductName: { [Sequelize.Op.iLike]: `%${searchText}%` } },
226
+ ];
227
+ }
228
+ if (IsActive) {
229
+ const isActiveValue = AppUtil.parseIsActive(IsActive);
230
+ if (isActiveValue === undefined) {
231
+ logger.warn("invalid IsActive status");
232
+ throw new Error(StatusMessage.INVALID_ISACTIVE_STATUS);
233
+ }
234
+ productWhereClause.IsActive = isActiveValue;
235
+ }
236
+ if (brandId) {
237
+ const brandIds = this.parseId(brandId);
238
+ brandWhere.BrandID = { [Sequelize.Op.in]: brandIds };
239
+ }
240
+ if (categoryId) {
241
+ const categoryIds = this.parseId(categoryId);
242
+ categoryWhere.CategoryID = { [Sequelize.Op.in]: categoryIds };
243
+ }
244
+ if(storeId) {
245
+ const storeIds = this.parseId(storeId);
246
+ storeWhere.StoreID = { [Sequelize.Op.in]: storeIds };
247
+ }
248
+ return {
249
+ productWhereClause,
250
+ includeWhere: { brandWhere, categoryWhere, storeWhere },
251
+ };
252
+ }
253
+
254
+ static getDefaultOptions(whereClause, order = [['CreatedAt', 'DESC']]) {
255
+ return {
256
+ where: whereClause,
257
+ order: order
258
+ };
259
+ }
260
+ }
261
+
262
262
  module.exports = QueryUtil;
@@ -1,66 +1,66 @@
1
- const crypto = require('crypto');
2
- const StatusMessage = require('../constants/StatusMessageConstants');
3
- class RazorpayUtil {
4
- constructor(razorpayKeys, logger, Razorpay) {
5
- this.logger = logger;
6
- this.instance = new Razorpay({
7
- key_id: razorpayKeys.keyId,
8
- key_secret: razorpayKeys.keySecret
9
- });
10
- }
11
-
12
- async createOrder(amount, currency, receipt = null) {
13
- try {
14
- const options = {
15
- amount: amount * 100,
16
- currency,
17
- receipt: receipt
18
- };
19
-
20
- const order = await this.instance.orders.create(options);
21
- return {
22
- razorpayOrderId: order.id,
23
- amount: order.amount,
24
- currency: order.currency,
25
- created_at:order.created_at,
26
- status: order.status
27
- };
28
- } catch (error) {
29
- this.logger.error('Razorpay order creation error:', error);
30
- throw new Error(StatusMessage.ORDER_CREATION_FAILED);
31
- }
32
- }
33
-
34
- async verifyPayment(paymentId, orderId, signature, razorpaySecret) {
35
- try {
36
- const payment = await this.instance.payments.fetch(paymentId);
37
-
38
- const expectedSignature = crypto
39
- .createHmac('sha256', razorpaySecret)
40
- .update(`${orderId}|${paymentId}`)
41
- .digest('hex');
42
- if (expectedSignature.trim() !== signature.trim()) {
43
- throw new Error(StatusMessage.PAYMENT_SIGNATURE_VERIFICATION_FAILED);
44
- }
45
-
46
- return {
47
- paymentId: payment.id,
48
- orderId: payment.order_id,
49
- amount: payment.amount,
50
- currency: payment.currency,
51
- status: payment.status,
52
- method: payment.method,
53
- cardId: payment.card_id,
54
- card_last4: payment.card ? payment.card.last4 : null,
55
- bank: payment.bank,
56
- email: payment.email,
57
- created_at: payment.created_at
58
- };
59
- } catch (error) {
60
- console.log('Razorpay payment verification error:', error);
61
- throw new Error(StatusMessage.PAYMENT_VERIFICATION_FAILED);
62
- }
63
- }
64
- }
65
-
1
+ const crypto = require('crypto');
2
+ const StatusMessage = require('../constants/StatusMessageConstants');
3
+ class RazorpayUtil {
4
+ constructor(razorpayKeys, logger, Razorpay) {
5
+ this.logger = logger;
6
+ this.instance = new Razorpay({
7
+ key_id: razorpayKeys.keyId,
8
+ key_secret: razorpayKeys.keySecret
9
+ });
10
+ }
11
+
12
+ async createOrder(amount, currency, receipt = null) {
13
+ try {
14
+ const options = {
15
+ amount: amount * 100,
16
+ currency,
17
+ receipt: receipt
18
+ };
19
+
20
+ const order = await this.instance.orders.create(options);
21
+ return {
22
+ razorpayOrderId: order.id,
23
+ amount: order.amount,
24
+ currency: order.currency,
25
+ created_at:order.created_at,
26
+ status: order.status
27
+ };
28
+ } catch (error) {
29
+ this.logger.error('Razorpay order creation error:', error);
30
+ throw new Error(StatusMessage.ORDER_CREATION_FAILED);
31
+ }
32
+ }
33
+
34
+ async verifyPayment(paymentId, orderId, signature, razorpaySecret) {
35
+ try {
36
+ const payment = await this.instance.payments.fetch(paymentId);
37
+
38
+ const expectedSignature = crypto
39
+ .createHmac('sha256', razorpaySecret)
40
+ .update(`${orderId}|${paymentId}`)
41
+ .digest('hex');
42
+ if (expectedSignature.trim() !== signature.trim()) {
43
+ throw new Error(StatusMessage.PAYMENT_SIGNATURE_VERIFICATION_FAILED);
44
+ }
45
+
46
+ return {
47
+ paymentId: payment.id,
48
+ orderId: payment.order_id,
49
+ amount: payment.amount,
50
+ currency: payment.currency,
51
+ status: payment.status,
52
+ method: payment.method,
53
+ cardId: payment.card_id,
54
+ card_last4: payment.card ? payment.card.last4 : null,
55
+ bank: payment.bank,
56
+ email: payment.email,
57
+ created_at: payment.created_at
58
+ };
59
+ } catch (error) {
60
+ console.log('Razorpay payment verification error:', error);
61
+ throw new Error(StatusMessage.PAYMENT_VERIFICATION_FAILED);
62
+ }
63
+ }
64
+ }
65
+
66
66
  module.exports = RazorpayUtil;