@churchsoln/dbms 1.0.47 → 1.0.49

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 (145) hide show
  1. package/Dockerfile +21 -21
  2. package/Makefile +132 -132
  3. package/app.js +37 -37
  4. package/config/config.js +33 -33
  5. package/config/errorCodes.js +65 -65
  6. package/config/errorMsgs.js +82 -82
  7. package/constants/index.js +94 -94
  8. package/controllers/church.js +100 -100
  9. package/controllers/index.js +6 -6
  10. package/controllers/master.js +138 -138
  11. package/controllers/migration.js +24 -24
  12. package/controllers/seed.js +33 -33
  13. package/db-setup.js +87 -87
  14. package/deployment/docker-compose.local.yml +64 -64
  15. package/deployment/docker-compose.yml +62 -62
  16. package/deployment/nginx/nginx-certs/localhost.crt +22 -22
  17. package/deployment/nginx/nginx-certs/localhost.key +28 -28
  18. package/deployment/nginx/nginx.local.conf +72 -72
  19. package/middlewares/church-filter.js +16 -16
  20. package/migrations/church/20221226151615-create-province.js +27 -27
  21. package/migrations/church/20221226151616-create-city.js +41 -41
  22. package/migrations/church/20221226151617-create-subRole.js +25 -25
  23. package/migrations/church/20221226151618-create-membership.js +68 -68
  24. package/migrations/church/20221226151619-create-member.js +140 -140
  25. package/migrations/church/20221227151615-create-user.js +60 -60
  26. package/migrations/church/20230826140644-create-eventsUpdates.js +29 -29
  27. package/migrations/church/20230904143429-create-ministries.js +26 -26
  28. package/migrations/church/20231021160018-create-gallery.js +28 -28
  29. package/migrations/church/20231105074019-create-feedback.js +28 -28
  30. package/migrations/church/20231111113342-create-banner.js +29 -29
  31. package/migrations/church/20231216105640-create-directoryBoard.js +31 -31
  32. package/migrations/church/20240214160101-create-volunteer.js +31 -31
  33. package/migrations/church/20240330111437-create-download.js +29 -29
  34. package/migrations/church/20240427170617-create-links.js +26 -26
  35. package/migrations/church/20240815170617-create-userTransfer.js +63 -63
  36. package/migrations/church/20240815170620-create-subRolePermission.js +40 -40
  37. package/migrations/church/20240915170620-create-transferType.js +25 -25
  38. package/migrations/church/20240917170620-create-accounts.js +27 -27
  39. package/migrations/church/20240918170621-create-church.js +54 -54
  40. package/migrations/church/20240918170622-create-group.js +61 -61
  41. package/migrations/church/20240918170623-create-groupMembers.js +74 -74
  42. package/migrations/church/20240918170627-create-pledge.js +96 -96
  43. package/migrations/church/20240919170627-create-contributionBatch.js +42 -42
  44. package/migrations/church/20240919170628-create-contributionTransaction.js +82 -82
  45. package/migrations/church/20240919170629-create-contributionTransactionLine.js +74 -74
  46. package/migrations/church/20240919170630-update-groupMembers.js +77 -77
  47. package/migrations/church/20241204170631-create-pledgeAccount.js +55 -55
  48. package/migrations/church/20241204170632-create-memberStatus.js +26 -0
  49. package/migrations/church/20241204170633-update-member.js +33 -0
  50. package/migrations/church/20241204170634-update-membership.js +33 -0
  51. package/migrations/church/20241204170635-update-pledge.js +33 -0
  52. package/migrations/church/20241204170636-update-contributionTransactionLine.js +33 -0
  53. package/migrations/common/20221226140655-create-subscriptionPlan.js +31 -31
  54. package/migrations/common/20221226143006-create-role.js +25 -25
  55. package/migrations/common/20240815170619-create-permission.js +27 -27
  56. package/migrations/common/20240815170620-create-church.js +56 -56
  57. package/migrations/common/20240815170621-create-churchDomain.js +40 -40
  58. package/migrations/common/20240918170621-create-churchPermission.js +53 -53
  59. package/migrations/common/20240918170622-create-user.js +35 -35
  60. package/migrations/common/20240918170627-create-subscriptionPlanPermission.js +53 -53
  61. package/models/church/accounts.js +23 -27
  62. package/models/church/banner.js +29 -29
  63. package/models/church/church.js +62 -62
  64. package/models/church/city.js +23 -23
  65. package/models/church/contributionBatch.js +45 -45
  66. package/models/church/contributionTransaction.js +90 -90
  67. package/models/church/contributionTransactionLine.js +81 -80
  68. package/models/church/directoryBoard.js +33 -33
  69. package/models/church/download.js +35 -35
  70. package/models/church/eventsUpdates.js +29 -29
  71. package/models/church/feedback.js +27 -27
  72. package/models/church/gallery.js +33 -33
  73. package/models/church/group.js +78 -78
  74. package/models/church/groupMembers.js +73 -73
  75. package/models/church/index.js +30 -30
  76. package/models/church/links.js +22 -22
  77. package/models/church/member.js +161 -171
  78. package/models/church/memberStatus.js +22 -0
  79. package/models/church/membership.js +80 -81
  80. package/models/church/ministries.js +16 -16
  81. package/models/church/pledge.js +65 -65
  82. package/models/church/pledgeAccount.js +45 -37
  83. package/models/church/province.js +23 -23
  84. package/models/church/subRole.js +21 -21
  85. package/models/church/subRolePermission.js +22 -22
  86. package/models/church/transferType.js +15 -15
  87. package/models/church/user.js +78 -78
  88. package/models/church/userTransfer.js +45 -45
  89. package/models/church/volunteer.js +33 -33
  90. package/models/common/church.js +58 -58
  91. package/models/common/churchDomain.js +21 -21
  92. package/models/common/churchPermission.js +26 -26
  93. package/models/common/index.js +40 -40
  94. package/models/common/permission.js +17 -17
  95. package/models/common/role.js +15 -15
  96. package/models/common/subscriptionPlan.js +34 -34
  97. package/models/common/subscriptionPlanPermission.js +33 -33
  98. package/models/common/user.js +39 -39
  99. package/package.json +41 -41
  100. package/public/swagger/church.json +521 -521
  101. package/public/swagger/master.json +537 -537
  102. package/public/swagger/migration.json +83 -83
  103. package/public/swagger/seed.json +98 -98
  104. package/queues/db-create.js +9 -9
  105. package/queues/index.js +5 -5
  106. package/queues/master.js +9 -9
  107. package/queues/migration.js +9 -9
  108. package/queues/seed.js +9 -9
  109. package/redis/config.js +5 -5
  110. package/routes/index.js +30 -30
  111. package/routes/v1/church.js +45 -45
  112. package/routes/v1/index.js +7 -7
  113. package/routes/v1/master.js +68 -68
  114. package/routes/v1/migration.js +10 -10
  115. package/routes/v1/seed.js +12 -12
  116. package/seeders/church/20241005124245-province.js +101 -101
  117. package/seeders/church/20241005124547-city.js +87 -87
  118. package/seeders/church/20241005131418-transferType.js +40 -40
  119. package/seeders/church/20241005131419-memberStatus.js +34 -0
  120. package/seeders/common/20241005123516-subscriptionPlan.js +43 -43
  121. package/seeders/common/20241005124105-role.js +38 -38
  122. package/seeders/common/20241005153047-permission.js +252 -242
  123. package/seeders/common/20241005153048-user.js +48 -48
  124. package/services/church.js +312 -312
  125. package/services/index.js +6 -6
  126. package/services/master.js +344 -344
  127. package/services/migration.js +30 -30
  128. package/services/seed.js +39 -39
  129. package/utils/churchManager.js +98 -98
  130. package/utils/crypto.js +40 -40
  131. package/utils/docUpload.js +51 -51
  132. package/utils/encryptDecrypt.js +26 -26
  133. package/utils/index.js +33 -33
  134. package/utils/logger.js +104 -104
  135. package/utils/response.js +108 -108
  136. package/utils/swagger.js +25 -25
  137. package/utils/verifyToken.js +58 -58
  138. package/validators/church.js +154 -154
  139. package/validators/index.js +3 -3
  140. package/validators/master.js +152 -152
  141. package/workers/db-create.js +37 -37
  142. package/workers/index.js +4 -4
  143. package/workers/master.js +50 -50
  144. package/workers/migrations.js +63 -63
  145. package/workers/seed.js +85 -85
@@ -1,344 +1,344 @@
1
- const commonDb = require("../models/common");
2
- const { Op, where } = require("sequelize");
3
- const errorCodes = require("../config/errorCodes");
4
- const errorMsgs = require("../config/errorMsgs");
5
- class MasterService {
6
- async addSubscriptionPlanService(params) {
7
- try {
8
- const { name } = params;
9
- const alreadyExists = await commonDb.subscriptionPlan.findOne({
10
- where: { name },
11
- attributes: commonDb.subscriptionPlan.selectedFields,
12
- raw: true,
13
- });
14
- if (alreadyExists)
15
- return {
16
- code: errorCodes.HTTP_CONFLICT,
17
- message: errorMsgs.subscriptionAlreadyExists,
18
- };
19
- await commonDb.subscriptionPlan.create(
20
- { ...params, isFree: false, isCustom: false },
21
- { include: { model: commonDb.subscriptionPlanPermission, as: "subscriptionPlanPermission" } }
22
- );
23
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
24
- } catch (err) {
25
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
26
- }
27
- }
28
- async allSubscriptionPlanService(params) {
29
- try {
30
- const { search = null } = params;
31
- const searchCondition = !!search
32
- ? { name: { [Op.like]: `%${search}%` } }
33
- : {};
34
- let data = await commonDb.subscriptionPlan.findAll({
35
- where: { status: true, ...searchCondition },
36
- include: [
37
- {
38
- model: commonDb.subscriptionPlanPermission,
39
- as: "subscriptionPlanPermission",
40
- required: false,
41
- attributes: commonDb.subscriptionPlanPermission.selectedFields,
42
- include: {
43
- model: commonDb.permission,
44
- as: "permission",
45
- required: false,
46
- attributes: commonDb.permission.selectedFields,
47
- }
48
- }
49
- ],
50
- attributes: commonDb.subscriptionPlan.selectedFields,
51
- order: [["isFree", "DESC"], ["isCustom", "ASC"]],
52
- });
53
- data = data.map((item) => {
54
- item = item.get({ plain: true });
55
- item.subscriptionPlanPermission = item.subscriptionPlanPermission.map(
56
- (permission) => permission.permission
57
- );
58
- return item;
59
- })
60
- return {
61
- code: errorCodes.HTTP_OK,
62
- message: errorMsgs.success,
63
- data,
64
- };
65
- } catch (err) {
66
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
67
- }
68
- }
69
- async subscriptionPlanByIdService(params) {
70
- try {
71
- const { id } = params;
72
- let data = await commonDb.subscriptionPlan.findOne({
73
- where: { status: true, id },
74
- include: [
75
- {
76
- model: commonDb.subscriptionPlanPermission,
77
- as: "subscriptionPlanPermission",
78
- required: false,
79
- attributes: commonDb.subscriptionPlanPermission.selectedFields,
80
- include: {
81
- model: commonDb.permission,
82
- as: "permission",
83
- required: false,
84
- attributes: commonDb.permission.selectedFields,
85
- }
86
- }
87
- ],
88
- attributes: commonDb.subscriptionPlan.selectedFields,
89
- });
90
- data = data.get({ plain: true });
91
- data.subscriptionPlanPermission = data.subscriptionPlanPermission.map(
92
- (permission) => permission.permission
93
- );
94
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
95
- } catch (err) {
96
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
97
- }
98
- }
99
- async updateSubscriptionPlanByIdService(params) {
100
- try {
101
- const { id, name, subscriptionPlanPermission = [], ...restData } = params;
102
- const subscriptionPlanDetails = await commonDb.subscriptionPlan.findOne({
103
- where: { id, status: true },
104
- attributes: commonDb.subscriptionPlan.selectedFields,
105
- raw: true,
106
- });
107
- if (!subscriptionPlanDetails)
108
- return {
109
- code: errorCodes.HTTP_BAD_REQUEST,
110
- message: errorMsgs.invalidId,
111
- };
112
- const checkSubscriptionPlanExists = await commonDb.subscriptionPlan.findOne({
113
- where: { id: { [Op.ne]: id }, name: { [Op.like]: `%${name}%` } },
114
- raw: true,
115
- });
116
- if (checkSubscriptionPlanExists)
117
- return {
118
- code: errorCodes.HTTP_CONFLICT,
119
- message: errorMsgs.subscriptionAlreadyExists,
120
- };
121
- await commonDb.subscriptionPlan.update(
122
- { name, ...restData },
123
- { where: { id } }
124
- );
125
- const existingSubscriptionPlanPermission = await commonDb.subscriptionPlanPermission.findAll({
126
- where: { subscriptionPlanId: id },
127
- attributes: commonDb.subscriptionPlanPermission.selectedFields,
128
- raw: true,
129
- });
130
- const permissionIds = existingSubscriptionPlanPermission.map(
131
- (permission) => permission.permissionId
132
- );
133
- const newPermissionIds = subscriptionPlanPermission.map(
134
- (permission) => permission.permissionId
135
- );
136
- const newPermission = newPermissionIds.filter(
137
- (permission) => !permissionIds.includes(permission)
138
- );
139
- const deletePermission = permissionIds.filter(
140
- (permission) => !newPermissionIds.includes(permission)
141
- );
142
- if (newPermission.length) {
143
- await commonDb.subscriptionPlanPermission.bulkCreate(
144
- newPermission.map((permission) => ({
145
- subscriptionPlanId: id,
146
- permissionId: permission,
147
- }))
148
- );
149
- }
150
- if (deletePermission.length) {
151
- await commonDb.subscriptionPlanPermission.destroy({
152
- where: {
153
- subscriptionPlanId: id,
154
- permissionId: deletePermission,
155
- },
156
- });
157
- }
158
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
159
- } catch (err) {
160
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
161
- }
162
- }
163
- async deleteSubscriptionPlanByIdService(params) {
164
- try {
165
- const { id } = params;
166
- await commonDb.subscriptionPlan.update(
167
- { status: false },
168
- { where: { id } }
169
- );
170
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
171
- } catch (err) {
172
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
173
- }
174
- }
175
-
176
- async addRoleService(params) {
177
- try {
178
- const { name } = params;
179
- const alreadyExists = await commonDb.role.findOne({
180
- where: { name },
181
- attributes: commonDb.role.selectedFields,
182
- raw: true,
183
- });
184
- if (alreadyExists)
185
- return {
186
- code: errorCodes.HTTP_CONFLICT,
187
- message: errorMsgs.roleAlreadyExists,
188
- };
189
- await commonDb.role.create({ ...params });
190
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
191
- } catch (err) {
192
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
193
- }
194
- }
195
- async allRoleService(params) {
196
- try {
197
- const { search = null } = params;
198
- const searchCondition = !!search
199
- ? { name: { [Op.like]: `%${search}%` } }
200
- : {};
201
- const data = await commonDb.role.findAll({
202
- where: { status: true, ...searchCondition },
203
- attributes: commonDb.role.selectedFields,
204
- raw: true,
205
- });
206
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
207
- } catch (err) {
208
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
209
- }
210
- }
211
- async roleByIdService(params) {
212
- try {
213
- const { id } = params;
214
- const data = await commonDb.role.findOne({
215
- where: { status: true, id },
216
- attributes: commonDb.role.selectedFields,
217
- raw: true,
218
- });
219
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
220
- } catch (err) {
221
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
222
- }
223
- }
224
- async updateRoleByIdService(params) {
225
- try {
226
- const { id, name } = params;
227
- const alreadyExists = await commonDb.role.findOne({
228
- where: { name, id: { [Op.ne]: id } },
229
- attributes: commonDb.role.selectedFields,
230
- raw: true,
231
- });
232
- if (alreadyExists)
233
- return {
234
- code: errorCodes.HTTP_CONFLICT,
235
- message: errorMsgs.masterAlreadyExists,
236
- };
237
- await commonDb.role.update({ name }, { where: { id } });
238
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
239
- } catch (err) {
240
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
241
- }
242
- }
243
- async deleteRoleByIdService(params) {
244
- try {
245
- const { id } = params;
246
- await commonDb.role.update({ status: false }, { where: { id } });
247
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
248
- } catch (err) {
249
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
250
- }
251
- }
252
- async addPermission(params) {
253
- try {
254
- const { name } = params;
255
- const checkPermissionExists = await commonDb.permission.findOne({
256
- where: { name: { [Op.like]: `%${name}%` } },
257
- raw: true,
258
- });
259
- if (checkPermissionExists)
260
- return {
261
- code: errorCodes.HTTP_CONFLICT,
262
- message: errorMsgs.permissionExists,
263
- };
264
- const response = await commonDb.permission.create({ name });
265
- const data = response.get({ plain: true });
266
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
267
- } catch (err) {
268
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
269
- }
270
- }
271
- async getPermissionService() {
272
- try {
273
- const data = await commonDb.permission.findAll({
274
- where: { status: true },
275
- attributes: commonDb.permission.selectedFields,
276
- raw: true,
277
- });
278
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
279
- } catch (err) {
280
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
281
- }
282
- }
283
- async getPermissionByIdService(params) {
284
- try {
285
- const { id } = params;
286
- const data = await commonDb.permission.findOne({
287
- where: { id, status: true },
288
- attributes: commonDb.permission.selectedFields,
289
- raw: true,
290
- });
291
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
292
- } catch (err) {
293
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
294
- }
295
- }
296
- async updatePermissionByIdService(params) {
297
- try {
298
- const { id, name } = params;
299
- const permissionDetails = await commonDb.permission.findOne({
300
- where: { id, status: true },
301
- attributes: commonDb.permission.selectedFields,
302
- raw: true,
303
- });
304
- if (!permissionDetails)
305
- return {
306
- code: errorCodes.HTTP_BAD_REQUEST,
307
- message: errorMsgs.invalidId,
308
- };
309
- const checkPermissionExists = await commonDb.permission.findOne({
310
- where: { id: { [Op.ne]: id }, name: { [Op.like]: `%${name}%` } },
311
- raw: true,
312
- });
313
- if (checkPermissionExists)
314
- return {
315
- code: errorCodes.HTTP_CONFLICT,
316
- message: errorMsgs.permissionExists,
317
- };
318
- await commonDb.permission.update({ name }, { where: { id } });
319
- return { code: errorCodes.HTTP_OK, message: errorMsgs.updated };
320
- } catch (err) {
321
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
322
- }
323
- }
324
- async deletePermissionByIdService(params) {
325
- try {
326
- const { id } = params;
327
- const permissionDetails = await commonDb.permission.findOne({
328
- where: { id, status: true },
329
- attributes: commonDb.permission.selectedFields,
330
- raw: true,
331
- });
332
- if (!permissionDetails)
333
- return {
334
- code: errorCodes.HTTP_BAD_REQUEST,
335
- message: errorMsgs.invalidId,
336
- };
337
- await commonDb.permission.update({ status: false }, { where: { id } });
338
- return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
339
- } catch (err) {
340
- return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
341
- }
342
- }
343
- }
344
- module.exports = new MasterService();
1
+ const commonDb = require("../models/common");
2
+ const { Op, where } = require("sequelize");
3
+ const errorCodes = require("../config/errorCodes");
4
+ const errorMsgs = require("../config/errorMsgs");
5
+ class MasterService {
6
+ async addSubscriptionPlanService(params) {
7
+ try {
8
+ const { name } = params;
9
+ const alreadyExists = await commonDb.subscriptionPlan.findOne({
10
+ where: { name },
11
+ attributes: commonDb.subscriptionPlan.selectedFields,
12
+ raw: true,
13
+ });
14
+ if (alreadyExists)
15
+ return {
16
+ code: errorCodes.HTTP_CONFLICT,
17
+ message: errorMsgs.subscriptionAlreadyExists,
18
+ };
19
+ await commonDb.subscriptionPlan.create(
20
+ { ...params, isFree: false, isCustom: false },
21
+ { include: { model: commonDb.subscriptionPlanPermission, as: "subscriptionPlanPermission" } }
22
+ );
23
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
24
+ } catch (err) {
25
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
26
+ }
27
+ }
28
+ async allSubscriptionPlanService(params) {
29
+ try {
30
+ const { search = null } = params;
31
+ const searchCondition = !!search
32
+ ? { name: { [Op.like]: `%${search}%` } }
33
+ : {};
34
+ let data = await commonDb.subscriptionPlan.findAll({
35
+ where: { status: true, ...searchCondition },
36
+ include: [
37
+ {
38
+ model: commonDb.subscriptionPlanPermission,
39
+ as: "subscriptionPlanPermission",
40
+ required: false,
41
+ attributes: commonDb.subscriptionPlanPermission.selectedFields,
42
+ include: {
43
+ model: commonDb.permission,
44
+ as: "permission",
45
+ required: false,
46
+ attributes: commonDb.permission.selectedFields,
47
+ }
48
+ }
49
+ ],
50
+ attributes: commonDb.subscriptionPlan.selectedFields,
51
+ order: [["isFree", "DESC"], ["isCustom", "ASC"]],
52
+ });
53
+ data = data.map((item) => {
54
+ item = item.get({ plain: true });
55
+ item.subscriptionPlanPermission = item.subscriptionPlanPermission.map(
56
+ (permission) => permission.permission
57
+ );
58
+ return item;
59
+ })
60
+ return {
61
+ code: errorCodes.HTTP_OK,
62
+ message: errorMsgs.success,
63
+ data,
64
+ };
65
+ } catch (err) {
66
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
67
+ }
68
+ }
69
+ async subscriptionPlanByIdService(params) {
70
+ try {
71
+ const { id } = params;
72
+ let data = await commonDb.subscriptionPlan.findOne({
73
+ where: { status: true, id },
74
+ include: [
75
+ {
76
+ model: commonDb.subscriptionPlanPermission,
77
+ as: "subscriptionPlanPermission",
78
+ required: false,
79
+ attributes: commonDb.subscriptionPlanPermission.selectedFields,
80
+ include: {
81
+ model: commonDb.permission,
82
+ as: "permission",
83
+ required: false,
84
+ attributes: commonDb.permission.selectedFields,
85
+ }
86
+ }
87
+ ],
88
+ attributes: commonDb.subscriptionPlan.selectedFields,
89
+ });
90
+ data = data.get({ plain: true });
91
+ data.subscriptionPlanPermission = data.subscriptionPlanPermission.map(
92
+ (permission) => permission.permission
93
+ );
94
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
95
+ } catch (err) {
96
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
97
+ }
98
+ }
99
+ async updateSubscriptionPlanByIdService(params) {
100
+ try {
101
+ const { id, name, subscriptionPlanPermission = [], ...restData } = params;
102
+ const subscriptionPlanDetails = await commonDb.subscriptionPlan.findOne({
103
+ where: { id, status: true },
104
+ attributes: commonDb.subscriptionPlan.selectedFields,
105
+ raw: true,
106
+ });
107
+ if (!subscriptionPlanDetails)
108
+ return {
109
+ code: errorCodes.HTTP_BAD_REQUEST,
110
+ message: errorMsgs.invalidId,
111
+ };
112
+ const checkSubscriptionPlanExists = await commonDb.subscriptionPlan.findOne({
113
+ where: { id: { [Op.ne]: id }, name: { [Op.like]: `%${name}%` } },
114
+ raw: true,
115
+ });
116
+ if (checkSubscriptionPlanExists)
117
+ return {
118
+ code: errorCodes.HTTP_CONFLICT,
119
+ message: errorMsgs.subscriptionAlreadyExists,
120
+ };
121
+ await commonDb.subscriptionPlan.update(
122
+ { name, ...restData },
123
+ { where: { id } }
124
+ );
125
+ const existingSubscriptionPlanPermission = await commonDb.subscriptionPlanPermission.findAll({
126
+ where: { subscriptionPlanId: id },
127
+ attributes: commonDb.subscriptionPlanPermission.selectedFields,
128
+ raw: true,
129
+ });
130
+ const permissionIds = existingSubscriptionPlanPermission.map(
131
+ (permission) => permission.permissionId
132
+ );
133
+ const newPermissionIds = subscriptionPlanPermission.map(
134
+ (permission) => permission.permissionId
135
+ );
136
+ const newPermission = newPermissionIds.filter(
137
+ (permission) => !permissionIds.includes(permission)
138
+ );
139
+ const deletePermission = permissionIds.filter(
140
+ (permission) => !newPermissionIds.includes(permission)
141
+ );
142
+ if (newPermission.length) {
143
+ await commonDb.subscriptionPlanPermission.bulkCreate(
144
+ newPermission.map((permission) => ({
145
+ subscriptionPlanId: id,
146
+ permissionId: permission,
147
+ }))
148
+ );
149
+ }
150
+ if (deletePermission.length) {
151
+ await commonDb.subscriptionPlanPermission.destroy({
152
+ where: {
153
+ subscriptionPlanId: id,
154
+ permissionId: deletePermission,
155
+ },
156
+ });
157
+ }
158
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
159
+ } catch (err) {
160
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
161
+ }
162
+ }
163
+ async deleteSubscriptionPlanByIdService(params) {
164
+ try {
165
+ const { id } = params;
166
+ await commonDb.subscriptionPlan.update(
167
+ { status: false },
168
+ { where: { id } }
169
+ );
170
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
171
+ } catch (err) {
172
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
173
+ }
174
+ }
175
+
176
+ async addRoleService(params) {
177
+ try {
178
+ const { name } = params;
179
+ const alreadyExists = await commonDb.role.findOne({
180
+ where: { name },
181
+ attributes: commonDb.role.selectedFields,
182
+ raw: true,
183
+ });
184
+ if (alreadyExists)
185
+ return {
186
+ code: errorCodes.HTTP_CONFLICT,
187
+ message: errorMsgs.roleAlreadyExists,
188
+ };
189
+ await commonDb.role.create({ ...params });
190
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
191
+ } catch (err) {
192
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
193
+ }
194
+ }
195
+ async allRoleService(params) {
196
+ try {
197
+ const { search = null } = params;
198
+ const searchCondition = !!search
199
+ ? { name: { [Op.like]: `%${search}%` } }
200
+ : {};
201
+ const data = await commonDb.role.findAll({
202
+ where: { status: true, ...searchCondition },
203
+ attributes: commonDb.role.selectedFields,
204
+ raw: true,
205
+ });
206
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
207
+ } catch (err) {
208
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
209
+ }
210
+ }
211
+ async roleByIdService(params) {
212
+ try {
213
+ const { id } = params;
214
+ const data = await commonDb.role.findOne({
215
+ where: { status: true, id },
216
+ attributes: commonDb.role.selectedFields,
217
+ raw: true,
218
+ });
219
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
220
+ } catch (err) {
221
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
222
+ }
223
+ }
224
+ async updateRoleByIdService(params) {
225
+ try {
226
+ const { id, name } = params;
227
+ const alreadyExists = await commonDb.role.findOne({
228
+ where: { name, id: { [Op.ne]: id } },
229
+ attributes: commonDb.role.selectedFields,
230
+ raw: true,
231
+ });
232
+ if (alreadyExists)
233
+ return {
234
+ code: errorCodes.HTTP_CONFLICT,
235
+ message: errorMsgs.masterAlreadyExists,
236
+ };
237
+ await commonDb.role.update({ name }, { where: { id } });
238
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
239
+ } catch (err) {
240
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
241
+ }
242
+ }
243
+ async deleteRoleByIdService(params) {
244
+ try {
245
+ const { id } = params;
246
+ await commonDb.role.update({ status: false }, { where: { id } });
247
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
248
+ } catch (err) {
249
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
250
+ }
251
+ }
252
+ async addPermission(params) {
253
+ try {
254
+ const { name } = params;
255
+ const checkPermissionExists = await commonDb.permission.findOne({
256
+ where: { name: { [Op.like]: `%${name}%` } },
257
+ raw: true,
258
+ });
259
+ if (checkPermissionExists)
260
+ return {
261
+ code: errorCodes.HTTP_CONFLICT,
262
+ message: errorMsgs.permissionExists,
263
+ };
264
+ const response = await commonDb.permission.create({ name });
265
+ const data = response.get({ plain: true });
266
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
267
+ } catch (err) {
268
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
269
+ }
270
+ }
271
+ async getPermissionService() {
272
+ try {
273
+ const data = await commonDb.permission.findAll({
274
+ where: { status: true },
275
+ attributes: commonDb.permission.selectedFields,
276
+ raw: true,
277
+ });
278
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
279
+ } catch (err) {
280
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
281
+ }
282
+ }
283
+ async getPermissionByIdService(params) {
284
+ try {
285
+ const { id } = params;
286
+ const data = await commonDb.permission.findOne({
287
+ where: { id, status: true },
288
+ attributes: commonDb.permission.selectedFields,
289
+ raw: true,
290
+ });
291
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success, data };
292
+ } catch (err) {
293
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
294
+ }
295
+ }
296
+ async updatePermissionByIdService(params) {
297
+ try {
298
+ const { id, name } = params;
299
+ const permissionDetails = await commonDb.permission.findOne({
300
+ where: { id, status: true },
301
+ attributes: commonDb.permission.selectedFields,
302
+ raw: true,
303
+ });
304
+ if (!permissionDetails)
305
+ return {
306
+ code: errorCodes.HTTP_BAD_REQUEST,
307
+ message: errorMsgs.invalidId,
308
+ };
309
+ const checkPermissionExists = await commonDb.permission.findOne({
310
+ where: { id: { [Op.ne]: id }, name: { [Op.like]: `%${name}%` } },
311
+ raw: true,
312
+ });
313
+ if (checkPermissionExists)
314
+ return {
315
+ code: errorCodes.HTTP_CONFLICT,
316
+ message: errorMsgs.permissionExists,
317
+ };
318
+ await commonDb.permission.update({ name }, { where: { id } });
319
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.updated };
320
+ } catch (err) {
321
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
322
+ }
323
+ }
324
+ async deletePermissionByIdService(params) {
325
+ try {
326
+ const { id } = params;
327
+ const permissionDetails = await commonDb.permission.findOne({
328
+ where: { id, status: true },
329
+ attributes: commonDb.permission.selectedFields,
330
+ raw: true,
331
+ });
332
+ if (!permissionDetails)
333
+ return {
334
+ code: errorCodes.HTTP_BAD_REQUEST,
335
+ message: errorMsgs.invalidId,
336
+ };
337
+ await commonDb.permission.update({ status: false }, { where: { id } });
338
+ return { code: errorCodes.HTTP_OK, message: errorMsgs.success };
339
+ } catch (err) {
340
+ return { code: errorCodes.HTTP_INTERNAL_SERVER_ERROR, message: err };
341
+ }
342
+ }
343
+ }
344
+ module.exports = new MasterService();