my-typescript-library-rahul52us 2.2.9 → 2.3.1

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.
@@ -148,8 +148,781 @@ const findOneByDocumentIdAndDelete = (data) => __awaiter(void 0, void 0, void 0,
148
148
  }
149
149
  });
150
150
  exports.findOneByDocumentIdAndDelete = findOneByDocumentIdAndDelete;
151
- function getAllDocument(workflowData, noOfLevels, workflow, searchValue, status, company, userId, differentiateFirstLevel, level, sort = "1", limit = "10", page = "1", exchangeType, billType, manual, startDate, endDate, searchField, dateFilterKey, sortByKey, additionalFiles) {
152
- var _a, _b;
151
+ // export async function getAllDocument(
152
+ // workflowData: any,
153
+ // noOfLevels: number,
154
+ // workflow: string,
155
+ // searchValue: string,
156
+ // status: string,
157
+ // company: string,
158
+ // userId: any,
159
+ // differentiateFirstLevel: any,
160
+ // level: string,
161
+ // sort: string | null = "1",
162
+ // limit: string | null = "10",
163
+ // page: string | null = "1",
164
+ // exchangeType: any | null,
165
+ // billType: string | null,
166
+ // manual: string | null,
167
+ // startDate: any,
168
+ // endDate: any,
169
+ // searchField: any,
170
+ // dateFilterKey: string,
171
+ // sortByKey: string,
172
+ // additionalFiles: string[]
173
+ // ) {
174
+ // try {
175
+ // let matchQuery: any = {};
176
+ // if (searchField && searchValue?.trim()) {
177
+ // matchQuery[`originalValues.${searchField}`] = {
178
+ // $regex: searchValue,
179
+ // $options: "i",
180
+ // };
181
+ // }
182
+ // if (startDate) {
183
+ // matchQuery[dateFilterKey] = { $gte: new Date(startDate) };
184
+ // }
185
+ // if (endDate) {
186
+ // matchQuery[dateFilterKey] = {
187
+ // ...matchQuery[dateFilterKey],
188
+ // $lte: new Date(endDate),
189
+ // };
190
+ // }
191
+ // var matchConditions: any = {
192
+ // ...matchQuery,
193
+ // // company: new mongoose.Types.ObjectId(company),
194
+ // workflow: new mongoose.Types.ObjectId(workflow),
195
+ // deleted_At: { $exists: false },
196
+ // };
197
+ // if (level === workflowData?.values?.approvalLevel) {
198
+ // matchConditions.isguaranteed = { $eq: true };
199
+ // }
200
+ // if (exchangeType && Array.isArray(exchangeType)) {
201
+ // exchangeType.forEach((typeObj) => {
202
+ // Object.entries(typeObj).forEach(([field, value]) => {
203
+ // if (!matchConditions[`originalValues.${field}`]) {
204
+ // matchConditions[`originalValues.${field}`] = [];
205
+ // }
206
+ // matchConditions[`originalValues.${field}`].push(value);
207
+ // });
208
+ // });
209
+ // }
210
+ // Object.entries(matchConditions).forEach(([field, value]) => {
211
+ // if (Array.isArray(value)) {
212
+ // matchConditions[field] = { $in: value };
213
+ // }
214
+ // });
215
+ // let pipeline: any = [];
216
+ // let expr: any = {};
217
+ // let levels = generateLevels(noOfLevels);
218
+ // switch (level) {
219
+ // case levels[0]:
220
+ // switch (status) {
221
+ // case "pending":
222
+ // expr = {
223
+ // $expr: {
224
+ // $and: [
225
+ // {
226
+ // $and: [
227
+ // {
228
+ // $not: [
229
+ // {
230
+ // $and: [
231
+ // {
232
+ // $in: [
233
+ // { $arrayElemAt: ["$approval.status", -1] },
234
+ // ["approved", "rejected"],
235
+ // ],
236
+ // },
237
+ // {
238
+ // $in: [
239
+ // { $arrayElemAt: ["$approval.level", -1] },
240
+ // [levels[0]],
241
+ // ],
242
+ // },
243
+ // ],
244
+ // },
245
+ // ],
246
+ // },
247
+ // {
248
+ // $not: [
249
+ // {
250
+ // $and: [
251
+ // {
252
+ // $in: [
253
+ // { $arrayElemAt: ["$approval.status", -1] },
254
+ // ["approved"],
255
+ // ],
256
+ // },
257
+ // {
258
+ // $in: [
259
+ // { $arrayElemAt: ["$approval.level", -1] },
260
+ // [levels[levels.length - 1]],
261
+ // ],
262
+ // },
263
+ // ],
264
+ // },
265
+ // ],
266
+ // },
267
+ // ],
268
+ // },
269
+ // ],
270
+ // },
271
+ // };
272
+ // break;
273
+ // case "approved":
274
+ // expr = {
275
+ // $expr: {
276
+ // $or: [
277
+ // {
278
+ // $and: [
279
+ // {
280
+ // $in: [
281
+ // { $arrayElemAt: ["$approval.status", -1] },
282
+ // [status],
283
+ // ],
284
+ // },
285
+ // {
286
+ // $in: [
287
+ // { $arrayElemAt: ["$approval.level", -1] },
288
+ // [levels[levels.length - 1], levels[0]],
289
+ // ],
290
+ // },
291
+ // {
292
+ // $not: [{ $eq: ["$approval", []] }],
293
+ // },
294
+ // ],
295
+ // },
296
+ // ],
297
+ // },
298
+ // };
299
+ // break;
300
+ // case "rejected":
301
+ // expr = {
302
+ // $expr: {
303
+ // $or: [
304
+ // {
305
+ // $and: [
306
+ // {
307
+ // $in: [
308
+ // { $arrayElemAt: ["$approval.status", -1] },
309
+ // [status],
310
+ // ],
311
+ // },
312
+ // {
313
+ // $in: [
314
+ // { $arrayElemAt: ["$approval.level", -1] },
315
+ // [levels[0]],
316
+ // ],
317
+ // },
318
+ // {
319
+ // $not: [{ $eq: ["$approval", []] }],
320
+ // },
321
+ // ],
322
+ // },
323
+ // ],
324
+ // },
325
+ // };
326
+ // break;
327
+ // }
328
+ // pipeline = [
329
+ // {
330
+ // $match: {
331
+ // ...matchConditions,
332
+ // ...expr,
333
+ // },
334
+ // },
335
+ // ];
336
+ // break;
337
+ // default:
338
+ // let { approvedRoles, rejectedRoles, approvedBy, rejectedBy } =
339
+ // getDynamicRoles(noOfLevels, level);
340
+ // switch (status) {
341
+ // case "pending":
342
+ // expr = {
343
+ // $expr: {
344
+ // $or: [
345
+ // {
346
+ // $and: [
347
+ // {
348
+ // $and: [
349
+ // {
350
+ // $not: [
351
+ // {
352
+ // $and: [
353
+ // {
354
+ // $in: [
355
+ // {
356
+ // $arrayElemAt: ["$approval.status", -1],
357
+ // },
358
+ // ["approved"],
359
+ // ],
360
+ // },
361
+ // {
362
+ // $in: [
363
+ // {
364
+ // $arrayElemAt: ["$approval.level", -1],
365
+ // },
366
+ // approvedRoles,
367
+ // ],
368
+ // },
369
+ // ],
370
+ // },
371
+ // ],
372
+ // },
373
+ // {
374
+ // $not: [
375
+ // {
376
+ // $and: [
377
+ // {
378
+ // $in: [
379
+ // {
380
+ // $arrayElemAt: ["$approval.status", -1],
381
+ // },
382
+ // ["rejected"],
383
+ // ],
384
+ // },
385
+ // {
386
+ // $in: [
387
+ // {
388
+ // $arrayElemAt: ["$approval.level", -1],
389
+ // },
390
+ // rejectedRoles,
391
+ // ],
392
+ // },
393
+ // ],
394
+ // },
395
+ // ],
396
+ // },
397
+ // level !== levels[1] && {
398
+ // $and: [
399
+ // {
400
+ // $in: [
401
+ // {
402
+ // $arrayElemAt: ["$approval.status", -1],
403
+ // },
404
+ // ["approved"],
405
+ // ],
406
+ // },
407
+ // {
408
+ // $in: [
409
+ // {
410
+ // $arrayElemAt: ["$approval.level", -1],
411
+ // },
412
+ // approvedBy,
413
+ // ],
414
+ // },
415
+ // ],
416
+ // },
417
+ // {
418
+ // $not: [{ $eq: ["$approval", []] }],
419
+ // },
420
+ // ],
421
+ // },
422
+ // ],
423
+ // },
424
+ // level !== levels[levels.length - 1] && {
425
+ // $and: [
426
+ // {
427
+ // $in: [
428
+ // {
429
+ // $arrayElemAt: ["$approval.status", -1],
430
+ // },
431
+ // ["rejected"],
432
+ // ],
433
+ // },
434
+ // {
435
+ // $in: [
436
+ // {
437
+ // $arrayElemAt: ["$approval.level", -1],
438
+ // },
439
+ // rejectedBy,
440
+ // ],
441
+ // },
442
+ // ],
443
+ // },
444
+ // level === levels[1] && {
445
+ // $and: [
446
+ // {
447
+ // $eq: ["$tags.extraction.type", "automatic"],
448
+ // },
449
+ // { $eq: ["$approval", []] },
450
+ // ],
451
+ // },
452
+ // ],
453
+ // },
454
+ // };
455
+ // // Only add the userId check for the first level if approval is not empty
456
+ // let userIdCheck = {};
457
+ // if (level === levels[1] && differentiateFirstLevel) {
458
+ // userIdCheck = {
459
+ // approval: {
460
+ // $elemMatch: {
461
+ // userId: { $in: [userId] },
462
+ // level: levels[1],
463
+ // },
464
+ // },
465
+ // };
466
+ // }
467
+ // pipeline = [
468
+ // {
469
+ // $match: {
470
+ // ...matchConditions,
471
+ // ...expr,
472
+ // ...userIdCheck,
473
+ // },
474
+ // },
475
+ // ];
476
+ // break;
477
+ // case "approved":
478
+ // pipeline = [
479
+ // {
480
+ // $addFields: {
481
+ // filteredApproval: {
482
+ // $filter: {
483
+ // input: "$approval",
484
+ // as: "item",
485
+ // cond: { $eq: ["$$item.level", level] },
486
+ // },
487
+ // },
488
+ // },
489
+ // },
490
+ // {
491
+ // $match: {
492
+ // ...matchConditions,
493
+ // $expr: {
494
+ // $and: [
495
+ // {
496
+ // $and: [
497
+ // {
498
+ // $eq: [
499
+ // {
500
+ // $arrayElemAt: ["$filteredApproval.status", -1],
501
+ // },
502
+ // status,
503
+ // ],
504
+ // },
505
+ // ],
506
+ // },
507
+ // {
508
+ // $cond: {
509
+ // if: differentiateFirstLevel,
510
+ // then: {
511
+ // $eq: [
512
+ // {
513
+ // $arrayElemAt: ["$filteredApproval.userId", -1],
514
+ // },
515
+ // userId,
516
+ // ],
517
+ // },
518
+ // else: true,
519
+ // },
520
+ // },
521
+ // {
522
+ // $not: [{ $eq: ["$approval", []] }],
523
+ // },
524
+ // {
525
+ // $not: [
526
+ // {
527
+ // $and: [
528
+ // {
529
+ // $in: [
530
+ // {
531
+ // $arrayElemAt: ["$approval.status", -1],
532
+ // },
533
+ // ["rejected"],
534
+ // ],
535
+ // },
536
+ // {
537
+ // $in: [
538
+ // {
539
+ // $arrayElemAt: ["$approval.level", -1],
540
+ // },
541
+ // rejectedBy,
542
+ // ],
543
+ // },
544
+ // ],
545
+ // },
546
+ // ],
547
+ // },
548
+ // // {
549
+ // // $not: [
550
+ // // {
551
+ // // $and: [
552
+ // // {
553
+ // // $in: [
554
+ // // {
555
+ // // $arrayElemAt: ["$approval.status", -1],
556
+ // // },
557
+ // // ["approved"],
558
+ // // ],
559
+ // // },
560
+ // // {
561
+ // // $in: [
562
+ // // {
563
+ // // $arrayElemAt: ["$approval.level", -1],
564
+ // // },
565
+ // // approvedBy,
566
+ // // ],
567
+ // // },
568
+ // // ],
569
+ // // },
570
+ // // ],
571
+ // // }
572
+ // ],
573
+ // },
574
+ // },
575
+ // },
576
+ // ];
577
+ // break;
578
+ // case "rejected":
579
+ // pipeline = [
580
+ // {
581
+ // $addFields: {
582
+ // filteredApproval: {
583
+ // $filter: {
584
+ // input: "$approval",
585
+ // as: "item",
586
+ // cond: { $eq: ["$$item.level", level] },
587
+ // },
588
+ // },
589
+ // },
590
+ // },
591
+ // {
592
+ // $match: {
593
+ // ...matchConditions,
594
+ // $expr: {
595
+ // $and: [
596
+ // {
597
+ // $and: [
598
+ // {
599
+ // $eq: [
600
+ // {
601
+ // $arrayElemAt: ["$filteredApproval.status", -1],
602
+ // },
603
+ // status,
604
+ // ],
605
+ // },
606
+ // ],
607
+ // },
608
+ // {
609
+ // $cond: {
610
+ // if: differentiateFirstLevel,
611
+ // then: {
612
+ // $eq: [
613
+ // {
614
+ // $arrayElemAt: ["$filteredApproval.userId", -1],
615
+ // },
616
+ // userId,
617
+ // ],
618
+ // },
619
+ // else: true,
620
+ // },
621
+ // },
622
+ // {
623
+ // $not: [{ $eq: ["$approval", []] }],
624
+ // },
625
+ // // {
626
+ // // $not: [
627
+ // // {
628
+ // // $and: [
629
+ // // {
630
+ // // $in: [
631
+ // // {
632
+ // // $arrayElemAt: ["$approval.status", -1],
633
+ // // },
634
+ // // ["rejected"],
635
+ // // ],
636
+ // // },
637
+ // // {
638
+ // // $in: [
639
+ // // {
640
+ // // $arrayElemAt: ["$approval.level", -1],
641
+ // // },
642
+ // // rejectedBy,
643
+ // // ],
644
+ // // },
645
+ // // ],
646
+ // // },
647
+ // // ],
648
+ // // },
649
+ // {
650
+ // $not: [
651
+ // {
652
+ // $and: [
653
+ // {
654
+ // $in: [
655
+ // {
656
+ // $arrayElemAt: ["$approval.status", -1],
657
+ // },
658
+ // ["approved"],
659
+ // ],
660
+ // },
661
+ // {
662
+ // $in: [
663
+ // {
664
+ // $arrayElemAt: ["$approval.level", -1],
665
+ // },
666
+ // approvedBy,
667
+ // ],
668
+ // },
669
+ // ],
670
+ // },
671
+ // ],
672
+ // },
673
+ // ],
674
+ // },
675
+ // },
676
+ // },
677
+ // ];
678
+ // }
679
+ // break;
680
+ // }
681
+ // if (manual && (level === levels[0] || level === levels[1])) {
682
+ // pipeline = [
683
+ // {
684
+ // $match: {
685
+ // ...matchQuery,
686
+ // ...matchConditions,
687
+ // "tags.extraction.type": "manual",
688
+ // approval: { $eq: [] },
689
+ // },
690
+ // },
691
+ // ];
692
+ // } else if (manual) {
693
+ // return {
694
+ // data: [],
695
+ // totalPages: 0,
696
+ // };
697
+ // }
698
+ // const approvalStage: any = [
699
+ // {
700
+ // $unwind: {
701
+ // path: "$approval",
702
+ // preserveNullAndEmptyArrays: true,
703
+ // },
704
+ // },
705
+ // {
706
+ // $lookup: {
707
+ // from: "fs.files",
708
+ // localField: "approval.fileId",
709
+ // foreignField: "_id",
710
+ // as: "approval.fileDetails",
711
+ // },
712
+ // },
713
+ // {
714
+ // $unwind: {
715
+ // path: "$approval.fileDetails",
716
+ // preserveNullAndEmptyArrays: true,
717
+ // },
718
+ // },
719
+ // {
720
+ // $lookup: {
721
+ // from: "accounts",
722
+ // localField: "approval.userId",
723
+ // foreignField: "_id",
724
+ // as: "approval.userDetails",
725
+ // pipeline: [
726
+ // {
727
+ // $project: {
728
+ // _id: 1,
729
+ // username: 1,
730
+ // role: 1,
731
+ // level: 1,
732
+ // },
733
+ // },
734
+ // ],
735
+ // },
736
+ // },
737
+ // {
738
+ // $unwind: {
739
+ // path: "$approval.userDetails",
740
+ // preserveNullAndEmptyArrays: true,
741
+ // },
742
+ // },
743
+ // {
744
+ // $group: {
745
+ // _id: "$_id",
746
+ // document: { $first: "$$ROOT" },
747
+ // approvals: {
748
+ // $push: {
749
+ // $mergeObjects: [
750
+ // "$approval",
751
+ // {
752
+ // file: "$approval.fileDetails",
753
+ // user: "$approval.userDetails",
754
+ // },
755
+ // ],
756
+ // },
757
+ // },
758
+ // },
759
+ // },
760
+ // {
761
+ // $addFields: {
762
+ // "document.approval": {
763
+ // $filter: {
764
+ // input: "$approvals",
765
+ // as: "approval",
766
+ // cond: { $ne: ["$$approval", {}] },
767
+ // },
768
+ // },
769
+ // },
770
+ // },
771
+ // {
772
+ // $replaceRoot: {
773
+ // newRoot: "$document",
774
+ // },
775
+ // },
776
+ // {
777
+ // $project: {
778
+ // "approval.fileDetails": 0,
779
+ // "approval.userDetails": 0,
780
+ // },
781
+ // },
782
+ // ];
783
+ // const lookupStages = additionalFiles.map((obj: any) => ({
784
+ // $lookup: {
785
+ // from: "fs.files",
786
+ // localField: `additionalFiles.${obj}`,
787
+ // foreignField: "_id",
788
+ // as: obj,
789
+ // },
790
+ // }));
791
+ // pipeline = [
792
+ // ...pipeline,
793
+ // {
794
+ // $lookup: {
795
+ // from: "fs.files",
796
+ // localField: "file",
797
+ // foreignField: "_id",
798
+ // as: "file",
799
+ // },
800
+ // },
801
+ // {
802
+ // "$unwind": {
803
+ // "path": "$additionalFiles",
804
+ // "preserveNullAndEmptyArrays": true
805
+ // }
806
+ // },
807
+ // {
808
+ // "$lookup": {
809
+ // "from": "fs.files",
810
+ // "localField": "additionalFiles.fileId",
811
+ // "foreignField": "_id",
812
+ // "as": "lookupResult"
813
+ // }
814
+ // },
815
+ // {
816
+ // "$addFields": {
817
+ // "lookupResult": {
818
+ // "$cond": {
819
+ // "if": { "$eq": [{ "$size": "$lookupResult" }, 0] },
820
+ // "then": [{}],
821
+ // "else": "$lookupResult"
822
+ // }
823
+ // }
824
+ // }
825
+ // },
826
+ // {
827
+ // "$group": {
828
+ // "_id": "$_id",
829
+ // "originalFields": { "$first": "$$ROOT" },
830
+ // "additionalFilesDetails": {
831
+ // "$push": {
832
+ // "$mergeObjects": [
833
+ // "$additionalFiles",
834
+ // { "$first": "$lookupResult" }
835
+ // ]
836
+ // }
837
+ // }
838
+ // }
839
+ // },
840
+ // {
841
+ // "$replaceRoot": {
842
+ // "newRoot": {
843
+ // "$mergeObjects": ["$originalFields", { "additionalFilesDetails": "$additionalFilesDetails" }]
844
+ // }
845
+ // }
846
+ // },
847
+ // {
848
+ // $lookup: {
849
+ // from: "fs.files",
850
+ // localField: "filexls",
851
+ // foreignField: "_id",
852
+ // as: "filexls",
853
+ // },
854
+ // },
855
+ // ...lookupStages,
856
+ // ...approvalStage,
857
+ // ];
858
+ // // pipeline = [
859
+ // // ...pipeline,
860
+ // // {
861
+ // // $lookup: {
862
+ // // from: "fs.files",
863
+ // // localField: "file",
864
+ // // foreignField: "_id",
865
+ // // as: "file",
866
+ // // },
867
+ // // },
868
+ // // {
869
+ // // $lookup: {
870
+ // // from: "fs.files",
871
+ // // localField: "additionalFiles",
872
+ // // foreignField: "_id",
873
+ // // as: "additionalFilesDetails",
874
+ // // },
875
+ // // },
876
+ // // {
877
+ // // $lookup: {
878
+ // // from: "fs.files",
879
+ // // localField: "filexls",
880
+ // // foreignField: "_id",
881
+ // // as: "filexls",
882
+ // // },
883
+ // // },
884
+ // // // ...lookupStages,
885
+ // // ...approvalStage,
886
+ // // ];
887
+ // if (sortByKey) {
888
+ // const sortStage: any = {};
889
+ // if (sortByKey === "created_At" || sortByKey === "updated_At") {
890
+ // sortStage[`${sortByKey}`] = Number(sort);
891
+ // } else {
892
+ // sortStage[`originalValues.${sortByKey}`] = Number(sort);
893
+ // }
894
+ // pipeline.push({
895
+ // $sort: sortStage,
896
+ // });
897
+ // }
898
+ // let countPipeline = [
899
+ // ...pipeline,
900
+ // { $group: { _id: null, count: { $sum: 1 } } },
901
+ // ];
902
+ // if (limit && page) {
903
+ // const skip = (parseInt(page) - 1) * parseInt(limit);
904
+ // pipeline.push({ $skip: skip } as any, { $limit: parseInt(limit) } as any);
905
+ // }
906
+ // const [pendingData, totalCount]: any = await Promise.all([
907
+ // Document.aggregate(pipeline),
908
+ // Document.aggregate(countPipeline),
909
+ // ]);
910
+ // // fs.writeFileSync('aggregationResult.json', JSON.stringify(pipeline, null, 2));
911
+ // let totalPages;
912
+ // if (limit) {
913
+ // totalPages = Math.ceil(totalCount?.[0]?.count / parseInt(limit));
914
+ // }
915
+ // return {
916
+ // data: pendingData,
917
+ // totalPages,
918
+ // };
919
+ // } catch (error) {
920
+ // console.log(error?.message);
921
+ // throw new Error(error.message);
922
+ // }
923
+ // }
924
+ function getAllDocument(noOfLevels, workflow, searchValue, status, company, userId, differentiateFirstLevel, level, sort = "1", limit = "10", page = "1", exchangeType, billType, manual, startDate, endDate, searchField, dateFilterKey, sortByKey, additionalFiles) {
925
+ var _a;
153
926
  return __awaiter(this, void 0, void 0, function* () {
154
927
  try {
155
928
  let matchQuery = {};
@@ -168,9 +941,6 @@ function getAllDocument(workflowData, noOfLevels, workflow, searchValue, status,
168
941
  var matchConditions = Object.assign(Object.assign({}, matchQuery), {
169
942
  // company: new mongoose.Types.ObjectId(company),
170
943
  workflow: new mongoose_1.default.Types.ObjectId(workflow), deleted_At: { $exists: false } });
171
- if (level === ((_a = workflowData === null || workflowData === void 0 ? void 0 : workflowData.values) === null || _a === void 0 ? void 0 : _a.approvalLevel)) {
172
- matchConditions.isguaranteed = { $eq: true };
173
- }
174
944
  if (exchangeType && Array.isArray(exchangeType)) {
175
945
  exchangeType.forEach((typeObj) => {
176
946
  Object.entries(typeObj).forEach(([field, value]) => {
@@ -755,50 +1525,67 @@ function getAllDocument(workflowData, noOfLevels, workflow, searchValue, status,
755
1525
  },
756
1526
  },
757
1527
  {
758
- "$unwind": {
759
- "path": "$additionalFiles",
760
- "preserveNullAndEmptyArrays": true
761
- }
1528
+ $unwind: {
1529
+ path: "$additionalFiles",
1530
+ preserveNullAndEmptyArrays: true,
1531
+ },
762
1532
  },
763
1533
  {
764
- "$lookup": {
765
- "from": "fs.files",
766
- "localField": "additionalFiles.fileId",
767
- "foreignField": "_id",
768
- "as": "lookupResult"
769
- }
1534
+ $lookup: {
1535
+ from: "fs.files",
1536
+ localField: "additionalFiles.fileId",
1537
+ foreignField: "_id",
1538
+ as: "lookupResult",
1539
+ },
770
1540
  },
771
1541
  {
772
- "$addFields": {
773
- "lookupResult": {
774
- "$cond": {
775
- "if": { "$eq": [{ "$size": "$lookupResult" }, 0] },
776
- "then": [{}],
777
- "else": "$lookupResult"
778
- }
779
- }
780
- }
1542
+ $addFields: {
1543
+ lookupResult: {
1544
+ $cond: {
1545
+ if: { $eq: [{ $size: "$lookupResult" }, 0] },
1546
+ then: [{}],
1547
+ else: "$lookupResult",
1548
+ },
1549
+ },
1550
+ },
781
1551
  },
782
1552
  {
783
- "$group": {
784
- "_id": "$_id",
785
- "originalFields": { "$first": "$$ROOT" },
786
- "additionalFilesDetails": {
787
- "$push": {
788
- "$mergeObjects": [
789
- "$additionalFiles",
790
- { "$first": "$lookupResult" }
791
- ]
792
- }
793
- }
794
- }
1553
+ $group: {
1554
+ _id: "$_id",
1555
+ originalFields: { $first: "$$ROOT" },
1556
+ additionalFilesDetails: {
1557
+ $push: {
1558
+ $cond: {
1559
+ if: { $or: [{ $eq: ["$additionalFiles", null] }, { $eq: ["$additionalFiles", {}] }] },
1560
+ then: {},
1561
+ else: {
1562
+ $mergeObjects: [
1563
+ { fileId: "$additionalFiles.fileId" },
1564
+ { $first: "$lookupResult" },
1565
+ ],
1566
+ },
1567
+ },
1568
+ },
1569
+ },
1570
+ },
795
1571
  },
796
1572
  {
797
- "$replaceRoot": {
798
- "newRoot": {
799
- "$mergeObjects": ["$originalFields", { "additionalFilesDetails": "$additionalFilesDetails" }]
800
- }
801
- }
1573
+ $replaceRoot: {
1574
+ newRoot: {
1575
+ $mergeObjects: [
1576
+ "$originalFields",
1577
+ {
1578
+ additionalFilesDetails: {
1579
+ $filter: {
1580
+ input: "$additionalFilesDetails",
1581
+ as: "file",
1582
+ cond: { $ne: ["$$file", {}] },
1583
+ },
1584
+ },
1585
+ },
1586
+ ],
1587
+ },
1588
+ },
802
1589
  },
803
1590
  {
804
1591
  $lookup: {
@@ -822,6 +1609,73 @@ function getAllDocument(workflowData, noOfLevels, workflow, searchValue, status,
822
1609
  // },
823
1610
  // },
824
1611
  // {
1612
+ // "$unwind": {
1613
+ // "path": "$additionalFiles",
1614
+ // "preserveNullAndEmptyArrays": true
1615
+ // }
1616
+ // },
1617
+ // {
1618
+ // "$lookup": {
1619
+ // "from": "fs.files",
1620
+ // "localField": "additionalFiles.fileId",
1621
+ // "foreignField": "_id",
1622
+ // "as": "lookupResult"
1623
+ // }
1624
+ // },
1625
+ // {
1626
+ // "$addFields": {
1627
+ // "lookupResult": {
1628
+ // "$cond": {
1629
+ // "if": { "$eq": [{ "$size": "$lookupResult" }, 0] },
1630
+ // "then": [{}],
1631
+ // "else": "$lookupResult"
1632
+ // }
1633
+ // }
1634
+ // }
1635
+ // },
1636
+ // {
1637
+ // "$group": {
1638
+ // "_id": "$_id",
1639
+ // "originalFields": { "$first": "$$ROOT" },
1640
+ // "additionalFilesDetails": {
1641
+ // "$push": {
1642
+ // "$mergeObjects": [
1643
+ // "$additionalFiles",
1644
+ // { "$first": "$lookupResult" }
1645
+ // ]
1646
+ // }
1647
+ // }
1648
+ // }
1649
+ // },
1650
+ // {
1651
+ // "$replaceRoot": {
1652
+ // "newRoot": {
1653
+ // "$mergeObjects": ["$originalFields", { "additionalFilesDetails": "$additionalFilesDetails" }]
1654
+ // }
1655
+ // }
1656
+ // },
1657
+ // {
1658
+ // $lookup: {
1659
+ // from: "fs.files",
1660
+ // localField: "filexls",
1661
+ // foreignField: "_id",
1662
+ // as: "filexls",
1663
+ // },
1664
+ // },
1665
+ // ...lookupStages,
1666
+ // ...approvalStage,
1667
+ // ];
1668
+ // pipeline = [
1669
+ // ...pipeline,
1670
+ // {
1671
+ // $lookup: {
1672
+ // from: "fs.files",
1673
+ // localField: "file",
1674
+ // foreignField: "_id",
1675
+ // as: "file",
1676
+ // },
1677
+ // },
1678
+ // {
825
1679
  // $lookup: {
826
1680
  // from: "fs.files",
827
1681
  // localField: "additionalFiles",
@@ -867,7 +1721,7 @@ function getAllDocument(workflowData, noOfLevels, workflow, searchValue, status,
867
1721
  // fs.writeFileSync('aggregationResult.json', JSON.stringify(pipeline, null, 2));
868
1722
  let totalPages;
869
1723
  if (limit) {
870
- totalPages = Math.ceil(((_b = totalCount === null || totalCount === void 0 ? void 0 : totalCount[0]) === null || _b === void 0 ? void 0 : _b.count) / parseInt(limit));
1724
+ totalPages = Math.ceil(((_a = totalCount === null || totalCount === void 0 ? void 0 : totalCount[0]) === null || _a === void 0 ? void 0 : _a.count) / parseInt(limit));
871
1725
  }
872
1726
  return {
873
1727
  data: pendingData,