@steedos-labs/content-compliance 0.7.19 → 0.7.20

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 (143) hide show
  1. package/dist/index.js +1 -0
  2. package/lib/actions/addBulkMaterials.d.ts +15 -0
  3. package/lib/actions/addBulkMaterials.js +69 -0
  4. package/lib/actions/addBulkMaterials.js.map +1 -0
  5. package/lib/actions/briefFlows.d.ts +14 -0
  6. package/lib/actions/briefFlows.js +46 -0
  7. package/lib/actions/briefFlows.js.map +1 -0
  8. package/lib/actions/bypassApproval.d.ts +10 -0
  9. package/lib/actions/bypassApproval.js +269 -0
  10. package/lib/actions/bypassApproval.js.map +1 -0
  11. package/lib/actions/bypassMaterial.d.ts +10 -0
  12. package/lib/actions/bypassMaterial.js +190 -0
  13. package/lib/actions/bypassMaterial.js.map +1 -0
  14. package/lib/actions/calculateSpotCheckRates.d.ts +13 -0
  15. package/lib/actions/calculateSpotCheckRates.js +94 -0
  16. package/lib/actions/calculateSpotCheckRates.js.map +1 -0
  17. package/lib/actions/confirmDeployment.d.ts +7 -0
  18. package/lib/actions/confirmDeployment.js +31 -0
  19. package/lib/actions/confirmDeployment.js.map +1 -0
  20. package/lib/actions/dashboard_sync_data.d.ts +7 -0
  21. package/lib/actions/dashboard_sync_data.js +30 -0
  22. package/lib/actions/dashboard_sync_data.js.map +1 -0
  23. package/lib/actions/fixStuckPersonnelReview.d.ts +20 -0
  24. package/lib/actions/fixStuckPersonnelReview.js +145 -0
  25. package/lib/actions/fixStuckPersonnelReview.js.map +1 -0
  26. package/lib/actions/hasDuplicateMaterials.d.ts +9 -0
  27. package/lib/actions/hasDuplicateMaterials.js +30 -0
  28. package/lib/actions/hasDuplicateMaterials.js.map +1 -0
  29. package/lib/actions/imageComparison.d.ts +34 -0
  30. package/lib/actions/imageComparison.js +95 -0
  31. package/lib/actions/imageComparison.js.map +1 -0
  32. package/lib/actions/index.d.ts +27 -0
  33. package/lib/actions/index.js +31 -0
  34. package/lib/actions/index.js.map +1 -0
  35. package/lib/actions/initCollaborator.d.ts +13 -0
  36. package/lib/actions/initCollaborator.js +87 -0
  37. package/lib/actions/initCollaborator.js.map +1 -0
  38. package/lib/actions/initUrgentQuota.d.ts +17 -0
  39. package/lib/actions/initUrgentQuota.js +99 -0
  40. package/lib/actions/initUrgentQuota.js.map +1 -0
  41. package/lib/actions/migrateReviewCompletedDate.d.ts +21 -0
  42. package/lib/actions/migrateReviewCompletedDate.js +150 -0
  43. package/lib/actions/migrateReviewCompletedDate.js.map +1 -0
  44. package/lib/actions/migrateSpotCheckData.d.ts +23 -0
  45. package/lib/actions/migrateSpotCheckData.js +143 -0
  46. package/lib/actions/migrateSpotCheckData.js.map +1 -0
  47. package/lib/actions/migrateSpotCheckDepartments.d.ts +25 -0
  48. package/lib/actions/migrateSpotCheckDepartments.js +142 -0
  49. package/lib/actions/migrateSpotCheckDepartments.js.map +1 -0
  50. package/lib/actions/postponeDeployment.d.ts +7 -0
  51. package/lib/actions/postponeDeployment.js +30 -0
  52. package/lib/actions/postponeDeployment.js.map +1 -0
  53. package/lib/actions/postponeReview.d.ts +7 -0
  54. package/lib/actions/postponeReview.js +30 -0
  55. package/lib/actions/postponeReview.js.map +1 -0
  56. package/lib/actions/progress.d.ts +18 -0
  57. package/lib/actions/progress.js +71 -0
  58. package/lib/actions/progress.js.map +1 -0
  59. package/lib/actions/rule.d.ts +7 -0
  60. package/lib/actions/rule.js +27 -0
  61. package/lib/actions/rule.js.map +1 -0
  62. package/lib/actions/sendToContentHub.d.ts +7 -0
  63. package/lib/actions/sendToContentHub.js +37 -0
  64. package/lib/actions/sendToContentHub.js.map +1 -0
  65. package/lib/actions/spotCheckMaterial.d.ts +46 -0
  66. package/lib/actions/spotCheckMaterial.js +591 -0
  67. package/lib/actions/spotCheckMaterial.js.map +1 -0
  68. package/lib/actions/submit.d.ts +7 -0
  69. package/lib/actions/submit.js +48 -0
  70. package/lib/actions/submit.js.map +1 -0
  71. package/lib/actions/submitKids.d.ts +7 -0
  72. package/lib/actions/submitKids.js +30 -0
  73. package/lib/actions/submitKids.js.map +1 -0
  74. package/lib/actions/submitMaterial.d.ts +7 -0
  75. package/lib/actions/submitMaterial.js +30 -0
  76. package/lib/actions/submitMaterial.js.map +1 -0
  77. package/lib/actions/submitPreReview.d.ts +7 -0
  78. package/lib/actions/submitPreReview.js +34 -0
  79. package/lib/actions/submitPreReview.js.map +1 -0
  80. package/lib/actions/terminate.d.ts +7 -0
  81. package/lib/actions/terminate.js +30 -0
  82. package/lib/actions/terminate.js.map +1 -0
  83. package/lib/actions/urgentApproval.d.ts +14 -0
  84. package/lib/actions/urgentApproval.js +51 -0
  85. package/lib/actions/urgentApproval.js.map +1 -0
  86. package/lib/const.d.ts +1 -0
  87. package/lib/const.js +6 -0
  88. package/lib/const.js.map +1 -0
  89. package/lib/index.d.ts +1 -0
  90. package/lib/index.js +1238 -0
  91. package/lib/index.js.map +1 -0
  92. package/lib/methods/AI.d.ts +1 -0
  93. package/lib/methods/AI.js +45 -0
  94. package/lib/methods/AI.js.map +1 -0
  95. package/lib/methods/__tests__/__mocks__/empty.d.ts +2 -0
  96. package/lib/methods/__tests__/__mocks__/empty.js +4 -0
  97. package/lib/methods/__tests__/__mocks__/empty.js.map +1 -0
  98. package/lib/methods/__tests__/postponeReview.test.d.ts +1 -0
  99. package/lib/methods/__tests__/postponeReview.test.js +102 -0
  100. package/lib/methods/__tests__/postponeReview.test.js.map +1 -0
  101. package/lib/methods/__tests__/urgent.test.d.ts +1 -0
  102. package/lib/methods/__tests__/urgent.test.js +121 -0
  103. package/lib/methods/__tests__/urgent.test.js.map +1 -0
  104. package/lib/methods/agent.d.ts +4 -0
  105. package/lib/methods/agent.js +86 -0
  106. package/lib/methods/agent.js.map +1 -0
  107. package/lib/methods/approval_engine.d.ts +40 -0
  108. package/lib/methods/approval_engine.js +2302 -0
  109. package/lib/methods/approval_engine.js.map +1 -0
  110. package/lib/methods/consts.d.ts +209 -0
  111. package/lib/methods/consts.js +46 -0
  112. package/lib/methods/consts.js.map +1 -0
  113. package/lib/methods/content_hub.d.ts +2 -0
  114. package/lib/methods/content_hub.js +228 -0
  115. package/lib/methods/content_hub.js.map +1 -0
  116. package/lib/methods/dashboard_sync_data.d.ts +4 -0
  117. package/lib/methods/dashboard_sync_data.js +346 -0
  118. package/lib/methods/dashboard_sync_data.js.map +1 -0
  119. package/lib/methods/docx.d.ts +3 -0
  120. package/lib/methods/docx.js +12 -0
  121. package/lib/methods/docx.js.map +1 -0
  122. package/lib/methods/image_comparison.d.ts +39 -0
  123. package/lib/methods/image_comparison.js +454 -0
  124. package/lib/methods/image_comparison.js.map +1 -0
  125. package/lib/methods/index.d.ts +7 -0
  126. package/lib/methods/index.js +11 -0
  127. package/lib/methods/index.js.map +1 -0
  128. package/lib/methods/material.d.ts +15 -0
  129. package/lib/methods/material.js +756 -0
  130. package/lib/methods/material.js.map +1 -0
  131. package/lib/methods/notification.d.ts +4 -0
  132. package/lib/methods/notification.js +270 -0
  133. package/lib/methods/notification.js.map +1 -0
  134. package/lib/methods/password_expiry.d.ts +1 -0
  135. package/lib/methods/password_expiry.js +151 -0
  136. package/lib/methods/password_expiry.js.map +1 -0
  137. package/lib/methods/pls.d.ts +1 -0
  138. package/lib/methods/pls.js +217 -0
  139. package/lib/methods/pls.js.map +1 -0
  140. package/lib/methods/urgent.d.ts +20 -0
  141. package/lib/methods/urgent.js +259 -0
  142. package/lib/methods/urgent.js.map +1 -0
  143. package/package.json +1 -1
@@ -0,0 +1,756 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadDocFromOneDriveDoc = exports.downloadBulkFromOneDriveDoc = exports.deleteDocOneDriveShareLink = exports.deleteBulkDocOneDriveShareLink = exports.uploadBulkDocToOneDrive = exports.getOneDriveMaterials = exports.getPendingUploadsToOneDriveMaterials = exports.uploadDocToOneDrive = exports.getUserReviewedAllMaterialsStatus = exports.getApproverFieldByType = exports.getApproverField = exports.submitMaterial = exports.addBulkMaterials = exports.hasDuplicateMaterials = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var consts_1 = require("./consts");
6
+ var _ = require("lodash");
7
+ var mime_types_1 = require("mime-types");
8
+ var const_1 = require("../const");
9
+ var hasDuplicateMaterials = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
10
+ var materials, md5s, md5Files;
11
+ return tslib_1.__generator(this, function (_a) {
12
+ switch (_a.label) {
13
+ case 0: return [4, ctx.getObject("pepsico_material").directFind({
14
+ filters: [['pepsico_material_approval', '=', approvalId], ['void_material', '!=', true], ['is_bypassed', '!=', true]],
15
+ fields: ['_id', 'material', 'md5']
16
+ })];
17
+ case 1:
18
+ materials = _a.sent();
19
+ md5s = _.compact(_.map(materials, 'md5'));
20
+ if (md5s.length !== _.uniq(md5s).length) {
21
+ return [2, true];
22
+ }
23
+ return [4, ctx.getObject("pepsico_material").directFind({
24
+ filters: ['md5', '=', md5s],
25
+ fields: ['_id']
26
+ })];
27
+ case 2:
28
+ md5Files = _a.sent();
29
+ return [2, md5s.length < md5Files.length];
30
+ }
31
+ });
32
+ }); };
33
+ exports.hasDuplicateMaterials = hasDuplicateMaterials;
34
+ var addBulkMaterials = function (ctx, approvalId, fileIds) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
35
+ var user, approval, materialsQuantity, quantityLimit, sizeLimit, pepsico_material, allFileIds, result, totalUsed, files, files_1, files_1_1, file, e_1_1;
36
+ var e_1, _a;
37
+ var _b;
38
+ return tslib_1.__generator(this, function (_c) {
39
+ switch (_c.label) {
40
+ case 0:
41
+ user = ctx.meta.user;
42
+ return [4, ctx.getObject('pepsico_material_approval').findOne(approvalId)];
43
+ case 1:
44
+ approval = _c.sent();
45
+ if (user.userId != approval.owner) {
46
+ throw new Error('只有创建者才能添加素材');
47
+ }
48
+ materialsQuantity = approval.materials_quantity || 0;
49
+ quantityLimit = _.includes(const_1.DCO_TYPES, approval.classification) ? 300 : 50;
50
+ if (materialsQuantity >= quantityLimit) {
51
+ throw new Error("\u7D20\u6750\u6570\u91CF\uFF1A\u6700\u591A".concat(quantityLimit, "\u4E2A"));
52
+ }
53
+ if (materialsQuantity + fileIds.length > quantityLimit) {
54
+ throw new Error("\u7D20\u6750\u6570\u91CF\uFF1A\u6700\u591A".concat(quantityLimit, "\u4E2A. \u60A8\u672C\u6B21\u6DFB\u52A0\u4E86").concat(fileIds.length, "\u4E2A\u7D20\u6750"));
55
+ }
56
+ sizeLimit = _.includes(const_1.DCO_TYPES, approval.classification) ? 10 * 1024 * 1024 * 1024 : 1 * 1024 * 1024 * 1024;
57
+ return [4, ctx.getObject('pepsico_material').find({ filters: ['pepsico_material_approval', '=', approval._id], fields: ['material'] })];
58
+ case 2:
59
+ pepsico_material = _c.sent();
60
+ allFileIds = _.concat(fileIds, _.map(pepsico_material, 'material'));
61
+ return [4, ctx.getObject("cfs_files_filerecord").aggregate({}, [
62
+ {
63
+ $match: {
64
+ _id: { $in: allFileIds }
65
+ }
66
+ },
67
+ {
68
+ $group: {
69
+ _id: null,
70
+ totalSize: { $sum: "$copies.files.size" }
71
+ }
72
+ }
73
+ ])];
74
+ case 3:
75
+ result = _c.sent();
76
+ totalUsed = ((_b = result[0]) === null || _b === void 0 ? void 0 : _b.totalSize) || 0;
77
+ if (totalUsed > sizeLimit) {
78
+ throw new Error("附件总大小超过 10GB,禁止添加素材");
79
+ }
80
+ return [4, ctx.getObject("cfs_files_filerecord").find({
81
+ filters: ['_id', '=', fileIds]
82
+ })];
83
+ case 4:
84
+ files = _c.sent();
85
+ if (!(approval.current_step == consts_1.Step.draft || approval.current_step == consts_1.Step.submitter_revisions)) return [3, 12];
86
+ _c.label = 5;
87
+ case 5:
88
+ _c.trys.push([5, 10, 11, 12]);
89
+ files_1 = tslib_1.__values(files), files_1_1 = files_1.next();
90
+ _c.label = 6;
91
+ case 6:
92
+ if (!!files_1_1.done) return [3, 9];
93
+ file = files_1_1.value;
94
+ return [4, ctx.getObject('pepsico_material').insert({
95
+ pepsico_material_approval: approval._id,
96
+ product: _.first(_.split(approval.product, '-')),
97
+ shop_tag: approval.shop_tag,
98
+ material: file._id,
99
+ material_original: file._id,
100
+ md5: file.original.md5,
101
+ name: _.trim(file.original.name),
102
+ classification: approval.classification,
103
+ extension_type: (0, mime_types_1.extension)(file.original.type),
104
+ material_type: approval.material_type,
105
+ social_media: approval.social_media,
106
+ followers: approval.followers,
107
+ kol_classification: approval.kol_classification,
108
+ owner_department: approval.owner_department,
109
+ brief_flow: approval.brief_flow,
110
+ owner: approval.owner,
111
+ space: approval.space,
112
+ created: new Date(),
113
+ created_by: user.userId,
114
+ modified: new Date(),
115
+ modified_by: user.userId
116
+ })];
117
+ case 7:
118
+ _c.sent();
119
+ _c.label = 8;
120
+ case 8:
121
+ files_1_1 = files_1.next();
122
+ return [3, 6];
123
+ case 9: return [3, 12];
124
+ case 10:
125
+ e_1_1 = _c.sent();
126
+ e_1 = { error: e_1_1 };
127
+ return [3, 12];
128
+ case 11:
129
+ try {
130
+ if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1);
131
+ }
132
+ finally { if (e_1) throw e_1.error; }
133
+ return [7];
134
+ case 12: return [2, {}];
135
+ }
136
+ });
137
+ }); };
138
+ exports.addBulkMaterials = addBulkMaterials;
139
+ var submitMaterial = function (ctx, materialId, approvalStatus) {
140
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
141
+ var _a;
142
+ return tslib_1.__generator(this, function (_b) {
143
+ switch (_b.label) {
144
+ case 0:
145
+ _a = approvalStatus;
146
+ switch (_a) {
147
+ case consts_1.ApprovalStatus.approved: return [3, 1];
148
+ case consts_1.ApprovalStatus.pass: return [3, 3];
149
+ case consts_1.ApprovalStatus.rejected: return [3, 5];
150
+ }
151
+ return [3, 7];
152
+ case 1: return [4, approveMaterial.call(this, ctx, materialId)];
153
+ case 2: return [2, _b.sent()];
154
+ case 3: return [4, approveMaterial.call(this, ctx, materialId, consts_1.ApprovalStatus.pass)];
155
+ case 4: return [2, _b.sent()];
156
+ case 5: return [4, rejectMaterial.call(this, ctx, materialId)];
157
+ case 6: return [2, _b.sent()];
158
+ case 7: return [2, {}];
159
+ }
160
+ });
161
+ });
162
+ };
163
+ exports.submitMaterial = submitMaterial;
164
+ var getApproverField = function (ctx, approval, material, userId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
165
+ var fieldName, activeProcess, processType;
166
+ return tslib_1.__generator(this, function (_a) {
167
+ switch (_a.label) {
168
+ case 0:
169
+ fieldName = '';
170
+ console.log("[getApproverField]", JSON.stringify({
171
+ userId: userId,
172
+ ca_reviewer: approval.ca_reviewer,
173
+ sra_reviewer: approval.sra_reviewer,
174
+ ns_reviewer: approval.ns_reviewer,
175
+ legal_reviewer: approval.legal_reviewer,
176
+ reviewer: approval.reviewer,
177
+ current_step: approval.current_step
178
+ }));
179
+ return [4, ctx.getObject("pepsico_approval_process").find({
180
+ filters: [
181
+ ["owner", "=", userId],
182
+ ["pepsico_material_approval", "=", approval._id],
183
+ ["current_step", "=", approval.current_step],
184
+ ["space", "=", approval.space],
185
+ ["approved", "=", 'progess']
186
+ ],
187
+ top: 1,
188
+ sort: "modified asc"
189
+ })];
190
+ case 1:
191
+ activeProcess = _a.sent();
192
+ if (activeProcess.length > 0) {
193
+ processType = activeProcess[0].type;
194
+ if (processType === 'Kids') {
195
+ fieldName = 'kids_approval_status';
196
+ }
197
+ else {
198
+ fieldName = (0, exports.getApproverFieldByType)(processType);
199
+ }
200
+ }
201
+ if (!fieldName) {
202
+ if (approval.current_step == consts_1.Step.departmental_review) {
203
+ if (approval.pre_ns_reviewer === userId) {
204
+ fieldName = 'pre_ns_approval_status';
205
+ }
206
+ else if (approval.pre_legal_reviewer === userId) {
207
+ fieldName = 'pre_legal_approval_status';
208
+ }
209
+ else if (approval.pre_sra_reviewer === userId) {
210
+ fieldName = 'pre_sra_approval_status';
211
+ }
212
+ else if (approval.pre_ca_reviewer === userId) {
213
+ fieldName = 'pre_ca_approval_status';
214
+ }
215
+ else if (_.includes(approval.ca_reviewer, userId)) {
216
+ fieldName = 'ca_approval_status';
217
+ }
218
+ else if (_.includes(approval.sra_reviewer, userId)) {
219
+ fieldName = 'sra_approval_status';
220
+ }
221
+ else if (_.includes(approval.ns_reviewer, userId)) {
222
+ fieldName = 'ns_approval_status';
223
+ }
224
+ else if (_.includes(approval.legal_reviewer, userId)) {
225
+ fieldName = 'legal_approval_status';
226
+ }
227
+ }
228
+ if (approval.current_step == consts_1.Step.personnel_review) {
229
+ if (approval.pre_reviewer === userId) {
230
+ fieldName = 'pre_approval_status';
231
+ }
232
+ else if (_.includes(approval.reviewer, userId) && material.approval_status != true) {
233
+ fieldName = 'approval_status';
234
+ }
235
+ }
236
+ }
237
+ if (_.includes([approval.kids_reviewer], userId)) {
238
+ fieldName = 'kids_approval_status';
239
+ }
240
+ console.log('[getApproverField] fieldName:', fieldName);
241
+ return [2, fieldName];
242
+ }
243
+ });
244
+ }); };
245
+ exports.getApproverField = getApproverField;
246
+ var getApproverFieldByType = function (type) {
247
+ var fieldName = '';
248
+ switch (type) {
249
+ case consts_1.ProcessApprovalType.CA:
250
+ fieldName = 'ca_approval_status';
251
+ break;
252
+ case consts_1.ProcessApprovalType.Legal:
253
+ fieldName = 'legal_approval_status';
254
+ break;
255
+ case consts_1.ProcessApprovalType.NS:
256
+ fieldName = 'ns_approval_status';
257
+ break;
258
+ case consts_1.ProcessApprovalType.SRA:
259
+ fieldName = 'sra_approval_status';
260
+ break;
261
+ case consts_1.ProcessApprovalType.Kids:
262
+ fieldName = 'kids_approval_status';
263
+ break;
264
+ case consts_1.ProcessApprovalType.guding:
265
+ fieldName = 'approval_status';
266
+ break;
267
+ case consts_1.ProcessApprovalType.PreNS:
268
+ fieldName = 'pre_ns_approval_status';
269
+ break;
270
+ case consts_1.ProcessApprovalType.PreLegal:
271
+ fieldName = 'pre_legal_approval_status';
272
+ break;
273
+ case consts_1.ProcessApprovalType.PreSRA:
274
+ fieldName = 'pre_sra_approval_status';
275
+ break;
276
+ case consts_1.ProcessApprovalType.PreCA:
277
+ fieldName = 'pre_ca_approval_status';
278
+ break;
279
+ case consts_1.ProcessApprovalType.Preguding:
280
+ fieldName = 'pre_approval_status';
281
+ break;
282
+ default:
283
+ break;
284
+ }
285
+ return fieldName;
286
+ };
287
+ exports.getApproverFieldByType = getApproverFieldByType;
288
+ var approveMaterial = function (ctx, materialId, approvalStatus) {
289
+ if (approvalStatus === void 0) { approvalStatus = consts_1.ApprovalStatus.approved; }
290
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
291
+ var user, material, approval, approveField, materialStatus;
292
+ var _a;
293
+ return tslib_1.__generator(this, function (_b) {
294
+ switch (_b.label) {
295
+ case 0:
296
+ user = ctx.meta.user;
297
+ return [4, ctx.getObject('pepsico_material').findOne(materialId)];
298
+ case 1:
299
+ material = _b.sent();
300
+ return [4, ctx.getObject('pepsico_material_approval').findOne(material.pepsico_material_approval)];
301
+ case 2:
302
+ approval = _b.sent();
303
+ return [4, (0, exports.getApproverField)(ctx, approval, material, user.userId)];
304
+ case 3:
305
+ approveField = _b.sent();
306
+ if (!approveField) {
307
+ return [2];
308
+ }
309
+ return [4, ctx.getObject('pepsico_material').update(materialId, (_a = {},
310
+ _a[approveField] = approvalStatus === consts_1.ApprovalStatus.approved ? true : 'pass',
311
+ _a))];
312
+ case 4:
313
+ _b.sent();
314
+ if (approveField && approveField === 'kids_approval_status' && approvalStatus != 'pass') {
315
+ return [2, {}];
316
+ }
317
+ console.log('[approveMaterial] approveField', approveField);
318
+ return [4, (0, exports.getUserReviewedAllMaterialsStatus)(ctx, approval._id, approveField)];
319
+ case 5:
320
+ materialStatus = _b.sent();
321
+ console.log('[approveMaterial] materialStatus', materialStatus);
322
+ if (!(materialStatus != consts_1.ApprovalStatus.pending)) return [3, 9];
323
+ if (!(materialStatus == consts_1.ApprovalStatus.approved || materialStatus === consts_1.ApprovalStatus.pass)) return [3, 7];
324
+ return [4, this.approvalContent(ctx, approval._id, { approveField: approveField, materialStatus: materialStatus })];
325
+ case 6:
326
+ _b.sent();
327
+ return [3, 9];
328
+ case 7:
329
+ if (!(materialStatus == consts_1.ApprovalStatus.rejected)) return [3, 9];
330
+ return [4, this.rejectContent(ctx, approval._id, { approveField: approveField, materialStatus: materialStatus })];
331
+ case 8:
332
+ _b.sent();
333
+ _b.label = 9;
334
+ case 9: return [2];
335
+ }
336
+ });
337
+ });
338
+ };
339
+ var rejectMaterial = function (ctx, materialId) {
340
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
341
+ var user, material, approval, approveField, materialStatus;
342
+ var _a;
343
+ return tslib_1.__generator(this, function (_b) {
344
+ switch (_b.label) {
345
+ case 0:
346
+ user = ctx.meta.user;
347
+ return [4, ctx.getObject('pepsico_material').findOne(materialId)];
348
+ case 1:
349
+ material = _b.sent();
350
+ return [4, ctx.getObject('pepsico_material_approval').findOne(material.pepsico_material_approval)];
351
+ case 2:
352
+ approval = _b.sent();
353
+ return [4, (0, exports.getApproverField)(ctx, approval, material, user.userId)];
354
+ case 3:
355
+ approveField = _b.sent();
356
+ if (!approveField) {
357
+ return [2];
358
+ }
359
+ return [4, ctx.getObject('pepsico_material').update(materialId, (_a = {},
360
+ _a[approveField] = false,
361
+ _a))];
362
+ case 4:
363
+ _b.sent();
364
+ return [4, (0, exports.getUserReviewedAllMaterialsStatus)(ctx, approval._id, approveField)];
365
+ case 5:
366
+ materialStatus = _b.sent();
367
+ if (!(materialStatus != consts_1.ApprovalStatus.pending)) return [3, 7];
368
+ return [4, this.rejectContent(ctx, approval._id, { approveField: approveField, materialStatus: materialStatus })];
369
+ case 6:
370
+ _b.sent();
371
+ _b.label = 7;
372
+ case 7: return [2];
373
+ }
374
+ });
375
+ });
376
+ };
377
+ var getUserReviewedAllMaterialsStatus = function (ctx, approvalId, approveField) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
378
+ var records, hasPending, hasFalse, isAllPass;
379
+ return tslib_1.__generator(this, function (_a) {
380
+ switch (_a.label) {
381
+ case 0: return [4, ctx.getObject('pepsico_material').find({
382
+ filters: [
383
+ ['pepsico_material_approval', '=', approvalId],
384
+ ['void_material', '!=', true],
385
+ ['is_bypassed', '!=', true]
386
+ ]
387
+ })];
388
+ case 1:
389
+ records = _a.sent();
390
+ hasPending = _.filter(records, function (record) {
391
+ return record[approveField] === null || !_.has(record, approveField) || record[approveField] === '' || record[approveField] === undefined;
392
+ }).length > 0;
393
+ console.log('getUserReviewedAllMaterialsStatus:', approvalId, "\u672A\u4F5C\u5E9F/\u8DF3\u8FC7\u7684\u7D20\u6750\u6570\u91CF\u4E3A:", records.length, 'hasPending:', hasPending, approveField);
394
+ if (hasPending) {
395
+ return [2, consts_1.ApprovalStatus.pending];
396
+ }
397
+ hasFalse = _.filter(records, function (record) {
398
+ return record[approveField] === false;
399
+ }).length > 0;
400
+ if (hasFalse) {
401
+ return [2, consts_1.ApprovalStatus.rejected];
402
+ }
403
+ isAllPass = _.filter(records, function (record) {
404
+ return record[approveField] === 'pass';
405
+ }).length === records.length;
406
+ if (isAllPass) {
407
+ return [2, consts_1.ApprovalStatus.pass];
408
+ }
409
+ return [2, consts_1.ApprovalStatus.approved];
410
+ }
411
+ });
412
+ }); };
413
+ exports.getUserReviewedAllMaterialsStatus = getUserReviewedAllMaterialsStatus;
414
+ var uploadDocToOneDrive = function (ctx, material) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
415
+ var _a, fileInfo, viewSharedLink, editSharedLink, error_1;
416
+ return tslib_1.__generator(this, function (_b) {
417
+ switch (_b.label) {
418
+ case 0:
419
+ _b.trys.push([0, 4, , 7]);
420
+ return [4, ctx.broker.call('content-version-bridge.material_uploadDocToOneDrive', { material: material })];
421
+ case 1:
422
+ _a = _b.sent(), fileInfo = _a.item, viewSharedLink = _a.viewSharedLink, editSharedLink = _a.editSharedLink;
423
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
424
+ uploaded_to_onedrive: true,
425
+ onedrive_item: fileInfo,
426
+ onedrive_shared_link_view: viewSharedLink,
427
+ onedrive_shared_link_edit: editSharedLink
428
+ })];
429
+ case 2:
430
+ _b.sent();
431
+ return [4, ctx.logger.info("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u7D20\u6750\u4E0A\u4F20\u5230oneDrive\u6210\u529F]"), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval, fileInfo: fileInfo, viewSharedLink: viewSharedLink, editSharedLink: editSharedLink })];
432
+ case 3:
433
+ _b.sent();
434
+ return [2, true];
435
+ case 4:
436
+ error_1 = _b.sent();
437
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
438
+ uploaded_to_onedrive: false
439
+ })];
440
+ case 5:
441
+ _b.sent();
442
+ return [4, ctx.logger.error("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u7D20\u6750\u4E0A\u4F20\u5230oneDrive\u5931\u8D25]:").concat(error_1.message), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval })];
443
+ case 6:
444
+ _b.sent();
445
+ console.log('uploadDocToOneDrive error:', error_1);
446
+ return [2, false];
447
+ case 7: return [2];
448
+ }
449
+ });
450
+ }); };
451
+ exports.uploadDocToOneDrive = uploadDocToOneDrive;
452
+ var getPendingUploadsToOneDriveMaterials = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
453
+ var materials;
454
+ return tslib_1.__generator(this, function (_a) {
455
+ switch (_a.label) {
456
+ case 0: return [4, ctx.getObject("pepsico_material").find({
457
+ filters: [['pepsico_material_approval', '=', approvalId], ['extension_type', 'in', ['doc', 'docx', 'ppt', 'pptx']], ['void_material', '!=', true], ['uploaded_to_onedrive', '!=', true]]
458
+ })];
459
+ case 1:
460
+ materials = _a.sent();
461
+ return [2, materials];
462
+ }
463
+ });
464
+ }); };
465
+ exports.getPendingUploadsToOneDriveMaterials = getPendingUploadsToOneDriveMaterials;
466
+ var getOneDriveMaterials = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
467
+ var materials;
468
+ return tslib_1.__generator(this, function (_a) {
469
+ switch (_a.label) {
470
+ case 0: return [4, ctx.getObject("pepsico_material").find({
471
+ filters: [['pepsico_material_approval', '=', approvalId], ['extension_type', 'in', ['doc', 'docx', 'ppt', 'pptx']], ['void_material', '!=', true]]
472
+ })];
473
+ case 1:
474
+ materials = _a.sent();
475
+ return [2, materials];
476
+ }
477
+ });
478
+ }); };
479
+ exports.getOneDriveMaterials = getOneDriveMaterials;
480
+ var uploadBulkDocToOneDrive = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
481
+ var materials, allTrue, materials_1, materials_1_1, material, success, e_2_1;
482
+ var e_2, _a;
483
+ return tslib_1.__generator(this, function (_b) {
484
+ switch (_b.label) {
485
+ case 0: return [4, (0, exports.getPendingUploadsToOneDriveMaterials)(ctx, approvalId)];
486
+ case 1:
487
+ materials = _b.sent();
488
+ allTrue = true;
489
+ _b.label = 2;
490
+ case 2:
491
+ _b.trys.push([2, 7, 8, 9]);
492
+ materials_1 = tslib_1.__values(materials), materials_1_1 = materials_1.next();
493
+ _b.label = 3;
494
+ case 3:
495
+ if (!!materials_1_1.done) return [3, 6];
496
+ material = materials_1_1.value;
497
+ return [4, (0, exports.uploadDocToOneDrive)(ctx, material)];
498
+ case 4:
499
+ success = _b.sent();
500
+ if (success === false) {
501
+ allTrue = false;
502
+ }
503
+ _b.label = 5;
504
+ case 5:
505
+ materials_1_1 = materials_1.next();
506
+ return [3, 3];
507
+ case 6: return [3, 9];
508
+ case 7:
509
+ e_2_1 = _b.sent();
510
+ e_2 = { error: e_2_1 };
511
+ return [3, 9];
512
+ case 8:
513
+ try {
514
+ if (materials_1_1 && !materials_1_1.done && (_a = materials_1.return)) _a.call(materials_1);
515
+ }
516
+ finally { if (e_2) throw e_2.error; }
517
+ return [7];
518
+ case 9:
519
+ if (!(allTrue == true)) return [3, 11];
520
+ return [4, ctx.getObject("pepsico_material_approval").directUpdate(approvalId, {
521
+ materials_uploaded_to_onedrive_status: 'completed'
522
+ })];
523
+ case 10:
524
+ _b.sent();
525
+ return [3, 13];
526
+ case 11: return [4, ctx.getObject('pepsico_material_approval').directUpdate(approvalId, {
527
+ materials_uploaded_to_onedrive_status: 'failed',
528
+ $inc: {
529
+ materials_uploaded_to_onedrive_failed_count: 1
530
+ }
531
+ })];
532
+ case 12:
533
+ _b.sent();
534
+ _b.label = 13;
535
+ case 13:
536
+ ;
537
+ return [2, allTrue];
538
+ }
539
+ });
540
+ }); };
541
+ exports.uploadBulkDocToOneDrive = uploadBulkDocToOneDrive;
542
+ var deleteBulkDocOneDriveShareLink = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
543
+ var allTrue, materials, materials_2, materials_2_1, material, success, e_3_1;
544
+ var e_3, _a;
545
+ return tslib_1.__generator(this, function (_b) {
546
+ switch (_b.label) {
547
+ case 0:
548
+ allTrue = true;
549
+ return [4, ctx.getObject("pepsico_material").find({
550
+ filters: [['pepsico_material_approval', '=', approvalId], ['extension_type', 'in', ['doc', 'docx', 'ppt', 'pptx']]]
551
+ })];
552
+ case 1:
553
+ materials = _b.sent();
554
+ _b.label = 2;
555
+ case 2:
556
+ _b.trys.push([2, 7, 8, 9]);
557
+ materials_2 = tslib_1.__values(materials), materials_2_1 = materials_2.next();
558
+ _b.label = 3;
559
+ case 3:
560
+ if (!!materials_2_1.done) return [3, 6];
561
+ material = materials_2_1.value;
562
+ return [4, (0, exports.deleteDocOneDriveShareLink)(ctx, material)];
563
+ case 4:
564
+ success = _b.sent();
565
+ if (success === false) {
566
+ allTrue = false;
567
+ }
568
+ _b.label = 5;
569
+ case 5:
570
+ materials_2_1 = materials_2.next();
571
+ return [3, 3];
572
+ case 6: return [3, 9];
573
+ case 7:
574
+ e_3_1 = _b.sent();
575
+ e_3 = { error: e_3_1 };
576
+ return [3, 9];
577
+ case 8:
578
+ try {
579
+ if (materials_2_1 && !materials_2_1.done && (_a = materials_2.return)) _a.call(materials_2);
580
+ }
581
+ finally { if (e_3) throw e_3.error; }
582
+ return [7];
583
+ case 9:
584
+ if (!(allTrue == true)) return [3, 11];
585
+ return [4, ctx.getObject("pepsico_material_approval").directUpdate(approvalId, {
586
+ materials_remove_share_link_from_onedrive_status: 'completed'
587
+ })];
588
+ case 10:
589
+ _b.sent();
590
+ return [3, 13];
591
+ case 11: return [4, ctx.getObject("pepsico_material_approval").directUpdate(approvalId, {
592
+ materials_remove_share_link_from_onedrive_status: 'failed',
593
+ $inc: {
594
+ materials_remove_share_link_from_onedrive_failed_count: 1
595
+ }
596
+ })];
597
+ case 12:
598
+ _b.sent();
599
+ _b.label = 13;
600
+ case 13:
601
+ ;
602
+ return [2, allTrue];
603
+ }
604
+ });
605
+ }); };
606
+ exports.deleteBulkDocOneDriveShareLink = deleteBulkDocOneDriveShareLink;
607
+ var deleteDocOneDriveShareLink = function (ctx, material) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
608
+ var error_2;
609
+ return tslib_1.__generator(this, function (_a) {
610
+ switch (_a.label) {
611
+ case 0:
612
+ _a.trys.push([0, 4, 7, 9]);
613
+ console.log('deleteDocOneDriveShareLink', material.onedrive_item.id, material._id);
614
+ return [4, ctx.broker.call('content-version-bridge.material_deleteDocOneDriveShareLink', { material: material })];
615
+ case 1:
616
+ _a.sent();
617
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
618
+ remove_share_link_from_onedrive: true
619
+ })];
620
+ case 2:
621
+ _a.sent();
622
+ return [4, ctx.logger.info("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u4ECEoneDrive\u5220\u9664\u5171\u4EAB\u8FDE\u63A5\u6210\u529F]"), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval })];
623
+ case 3:
624
+ _a.sent();
625
+ return [2, true];
626
+ case 4:
627
+ error_2 = _a.sent();
628
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
629
+ remove_share_link_from_onedrive: false
630
+ })];
631
+ case 5:
632
+ _a.sent();
633
+ return [4, ctx.logger.error("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u4ECEoneDrive\u5220\u9664\u5171\u4EAB\u8FDE\u63A5\u5931\u8D25]:").concat(error_2.message), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval })];
634
+ case 6:
635
+ _a.sent();
636
+ console.log('deleteDocOneDriveShareLink error:', error_2);
637
+ return [2, false];
638
+ case 7: return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
639
+ onedrive_shared_link_edit: null
640
+ })];
641
+ case 8:
642
+ _a.sent();
643
+ return [7];
644
+ case 9: return [2];
645
+ }
646
+ });
647
+ }); };
648
+ exports.deleteDocOneDriveShareLink = deleteDocOneDriveShareLink;
649
+ var downloadBulkFromOneDriveDoc = function (ctx, approvalId) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
650
+ var materials, allTrue, materials_3, materials_3_1, material, success, e_4_1;
651
+ var e_4, _a;
652
+ return tslib_1.__generator(this, function (_b) {
653
+ switch (_b.label) {
654
+ case 0: return [4, ctx.getObject("pepsico_material").find({
655
+ filters: [['pepsico_material_approval', '=', approvalId], ['extension_type', 'in', ['doc', 'docx', 'ppt', 'pptx']], ['void_material', '!=', true], ['download_from_onedrive', '!=', true]]
656
+ })];
657
+ case 1:
658
+ materials = _b.sent();
659
+ allTrue = true;
660
+ _b.label = 2;
661
+ case 2:
662
+ _b.trys.push([2, 7, 8, 9]);
663
+ materials_3 = tslib_1.__values(materials), materials_3_1 = materials_3.next();
664
+ _b.label = 3;
665
+ case 3:
666
+ if (!!materials_3_1.done) return [3, 6];
667
+ material = materials_3_1.value;
668
+ return [4, (0, exports.downloadDocFromOneDriveDoc)(ctx, material)];
669
+ case 4:
670
+ success = _b.sent();
671
+ if (success === false) {
672
+ allTrue = false;
673
+ }
674
+ _b.label = 5;
675
+ case 5:
676
+ materials_3_1 = materials_3.next();
677
+ return [3, 3];
678
+ case 6: return [3, 9];
679
+ case 7:
680
+ e_4_1 = _b.sent();
681
+ e_4 = { error: e_4_1 };
682
+ return [3, 9];
683
+ case 8:
684
+ try {
685
+ if (materials_3_1 && !materials_3_1.done && (_a = materials_3.return)) _a.call(materials_3);
686
+ }
687
+ finally { if (e_4) throw e_4.error; }
688
+ return [7];
689
+ case 9:
690
+ if (!(allTrue == true)) return [3, 11];
691
+ return [4, ctx.getObject("pepsico_material_approval").directUpdate(approvalId, {
692
+ materials_download_from_onedrive_status: 'completed'
693
+ })];
694
+ case 10:
695
+ _b.sent();
696
+ return [3, 13];
697
+ case 11: return [4, ctx.getObject("pepsico_material_approval").directUpdate(approvalId, {
698
+ materials_download_from_onedrive_status: 'failed',
699
+ $inc: {
700
+ materials_download_from_onedrive_failed_count: 1
701
+ }
702
+ })];
703
+ case 12:
704
+ _b.sent();
705
+ _b.label = 13;
706
+ case 13:
707
+ ;
708
+ return [2, allTrue];
709
+ }
710
+ });
711
+ }); };
712
+ exports.downloadBulkFromOneDriveDoc = downloadBulkFromOneDriveDoc;
713
+ var downloadDocFromOneDriveDoc = function (ctx, material) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
714
+ var st, fileDoc, error_3;
715
+ return tslib_1.__generator(this, function (_a) {
716
+ switch (_a.label) {
717
+ case 0:
718
+ st = new Date().getTime();
719
+ _a.label = 1;
720
+ case 1:
721
+ _a.trys.push([1, 5, , 8]);
722
+ return [4, ctx.broker.call('content-version-bridge.material_downloadDocFromOneDriveDoc', { material: material })];
723
+ case 2:
724
+ fileDoc = _a.sent();
725
+ console.log("downloadDocFromOneDriveDoc-".concat(material._id), fileDoc._id, fileDoc);
726
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
727
+ material: fileDoc._id,
728
+ $push: {
729
+ material_one_drive_history: fileDoc._id
730
+ },
731
+ download_from_onedrive: true
732
+ })];
733
+ case 3:
734
+ _a.sent();
735
+ return [4, ctx.logger.info("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u4ECEoneDrive\u4E0B\u8F7D\u7D20\u6750\u6210\u529F]"), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval, time: (new Date().getTime()) - st })];
736
+ case 4:
737
+ _a.sent();
738
+ return [2, true];
739
+ case 5:
740
+ error_3 = _a.sent();
741
+ return [4, ctx.getObject('pepsico_material').directUpdate(material._id, {
742
+ download_from_onedrive: false
743
+ })];
744
+ case 6:
745
+ _a.sent();
746
+ return [4, ctx.logger.error("".concat(material.pepsico_material_approval, "-").concat(material._id, "-[\u4ECEoneDrive\u4E0B\u8F7D\u7D20\u6750\u5931\u8D25]:").concat(error_3.message), { objectName: 'pepsico_material', _id: material._id, pepsico_material_approval: material.pepsico_material_approval, time: (new Date().getTime()) - st })];
747
+ case 7:
748
+ _a.sent();
749
+ console.log('downloadDocFromOneDriveDoc error:', error_3);
750
+ return [2, false];
751
+ case 8: return [2];
752
+ }
753
+ });
754
+ }); };
755
+ exports.downloadDocFromOneDriveDoc = downloadDocFromOneDriveDoc;
756
+ //# sourceMappingURL=material.js.map