@timardex/cluemart-server-shared 1.0.304 → 1.0.306

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.
package/dist/index.cjs CHANGED
@@ -7382,12 +7382,16 @@ var AFFILIATE_RESOURCE_FIELDS_FRAGMENT = gql`
7382
7382
  resourceDeletedAt
7383
7383
  resourceId
7384
7384
  resourceName
7385
+ resourceOwner {
7386
+ ...OwnerFields
7387
+ }
7385
7388
  resourceType
7386
7389
  rewards {
7387
7390
  ...AffiliateRewardFields
7388
7391
  }
7389
7392
  }
7390
7393
  ${AFFILIATE_REWARD_FIELDS_FRAGMENT}
7394
+ ${OWNER_FIELDS_FRAGMENT}
7391
7395
  `;
7392
7396
  var AFFILIATE_BANK_ACCOUNT_DETAILS_FIELDS_FRAGMENT = gql`
7393
7397
  fragment AffiliateBankAccountDetailsFields on AffiliateBankAccountDetailsType {
@@ -7442,6 +7446,7 @@ var AFFILIATE_FIELDS_FRAGMENT = gql`
7442
7446
  createdAt
7443
7447
  deletedAt
7444
7448
  redeemHistory {
7449
+ paidAt
7445
7450
  redeemedAt
7446
7451
  rewardValue
7447
7452
  }
@@ -9248,6 +9253,10 @@ var affiliateResourceSchema = new MongooseSchema25(
9248
9253
  type: import_mongoose25.default.Schema.Types.ObjectId
9249
9254
  },
9250
9255
  resourceName: { required: true, type: String },
9256
+ resourceOwner: {
9257
+ required: true,
9258
+ type: OwnerTypeSchema
9259
+ },
9251
9260
  resourceType: {
9252
9261
  enum: Object.values(EnumResourceType),
9253
9262
  required: true,
@@ -9299,6 +9308,7 @@ var affiliateDetailsSchema = new MongooseSchema25(
9299
9308
  );
9300
9309
  var redeemHistorySchema = new MongooseSchema25(
9301
9310
  {
9311
+ paidAt: { default: null, required: false, type: Date },
9302
9312
  redeemedAt: { required: true, type: Date },
9303
9313
  rewardValue: { required: true, type: Number }
9304
9314
  },
@@ -9413,7 +9423,7 @@ var SHARE_RESOURCE_LABEL2 = {
9413
9423
  school: "School"
9414
9424
  };
9415
9425
 
9416
- // node_modules/@timardex/cluemart-shared/dist/chunk-43SLZVBF.mjs
9426
+ // node_modules/@timardex/cluemart-shared/dist/chunk-OBZTGPBJ.mjs
9417
9427
  var PROMO_CODE_PREFIX2 = "CM-";
9418
9428
  var OBJECT_ID_PATH_SEGMENT2 = "[a-f0-9]{24}";
9419
9429
  var OBJECT_ID_PATH_SEGMENT_END2 = `${OBJECT_ID_PATH_SEGMENT2}$`;
@@ -9515,7 +9525,7 @@ var gameScreenIdentifierList2 = [
9515
9525
  }
9516
9526
  ];
9517
9527
 
9518
- // node_modules/@timardex/cluemart-shared/dist/chunk-MLNJAQVM.mjs
9528
+ // node_modules/@timardex/cluemart-shared/dist/chunk-QBU7N4P2.mjs
9519
9529
  var import_dayjs4 = __toESM(require("dayjs"), 1);
9520
9530
  var statusOptions2 = [
9521
9531
  ...Object.values(EnumInviteStatus2).map((status) => ({
@@ -10746,13 +10756,19 @@ async function findAffiliatesWithActiveVendorReferrals() {
10746
10756
  deletedAt: null
10747
10757
  }).select("_id affiliateCode affiliateResources owner").lean().exec();
10748
10758
  }
10749
- async function findEligibleReferredVendor(resourceId, affiliateCode) {
10750
- return await VendorModel.findOne({
10759
+ async function isEligibleReferredVendor({
10760
+ affiliateCode,
10761
+ resourceId,
10762
+ resourceOwnerUserId
10763
+ }) {
10764
+ const match = await VendorModel.exists({
10751
10765
  _id: resourceId,
10752
10766
  active: true,
10753
10767
  deletedAt: null,
10768
+ "owner.userId": resourceOwnerUserId,
10754
10769
  promoCodes: affiliateCode
10755
- }).select("_id name owner.userId").lean().exec();
10770
+ }).exec();
10771
+ return Boolean(match);
10756
10772
  }
10757
10773
  async function resolveSubscriptionRewardTypeForVendorOwner(vendorOwnerUserId, now) {
10758
10774
  const vendorOwner = await UserModel.findById(vendorOwnerUserId).select("licences stripe").lean().exec();
@@ -10794,8 +10810,7 @@ async function tryAwardSubscriptionReward({
10794
10810
  createdAt,
10795
10811
  period,
10796
10812
  resource,
10797
- rewardType,
10798
- vendor
10813
+ rewardType
10799
10814
  }) {
10800
10815
  const reward = createAffiliateReward(rewardType, createdAt);
10801
10816
  const updateResult = await AffiliateModel.updateOne(
@@ -10805,7 +10820,7 @@ async function tryAwardSubscriptionReward({
10805
10820
  $elemMatch: {
10806
10821
  resourceActive: true,
10807
10822
  resourceDeletedAt: null,
10808
- resourceId: vendor._id,
10823
+ resourceId: resource.resourceId,
10809
10824
  resourceType: EnumResourceType.VENDOR,
10810
10825
  rewards: {
10811
10826
  $not: {
@@ -10830,15 +10845,12 @@ async function tryAwardSubscriptionReward({
10830
10845
  if (updateResult.modifiedCount === 0) {
10831
10846
  return "skipped";
10832
10847
  }
10833
- const affiliateOwnerUserId = affiliate.owner?.userId;
10834
- if (affiliateOwnerUserId) {
10835
- await notifyAffiliateOwnerOfSubscriptionReward({
10836
- affiliateId: affiliate._id,
10837
- affiliateOwnerUserId,
10838
- resourceName: resource.resourceName || vendor.name || "vendor",
10839
- rewardValue: reward.rewardValue
10840
- });
10841
- }
10848
+ await notifyAffiliateOwnerOfSubscriptionReward({
10849
+ affiliateId: affiliate._id,
10850
+ affiliateOwnerUserId: affiliate.owner.userId,
10851
+ resourceName: resource.resourceName,
10852
+ rewardValue: reward.rewardValue
10853
+ });
10842
10854
  return "awarded";
10843
10855
  }
10844
10856
  async function processAffiliateVendorReferral({
@@ -10849,15 +10861,16 @@ async function processAffiliateVendorReferral({
10849
10861
  period,
10850
10862
  resource
10851
10863
  }) {
10852
- const vendor = await findEligibleReferredVendor(
10853
- resource.resourceId,
10854
- affiliateCode
10855
- );
10856
- if (!vendor?.owner?.userId) {
10864
+ const vendorEligible = await isEligibleReferredVendor({
10865
+ affiliateCode,
10866
+ resourceId: resource.resourceId,
10867
+ resourceOwnerUserId: resource.resourceOwner.userId
10868
+ });
10869
+ if (!vendorEligible) {
10857
10870
  return "skipped";
10858
10871
  }
10859
10872
  const rewardType = await resolveSubscriptionRewardTypeForVendorOwner(
10860
- vendor.owner.userId,
10873
+ resource.resourceOwner.userId,
10861
10874
  now
10862
10875
  );
10863
10876
  if (!rewardType) {
@@ -10868,8 +10881,7 @@ async function processAffiliateVendorReferral({
10868
10881
  createdAt,
10869
10882
  period,
10870
10883
  resource,
10871
- rewardType,
10872
- vendor
10884
+ rewardType
10873
10885
  });
10874
10886
  }
10875
10887
  async function awardAffiliateVendorSubscriptionRewards(now = /* @__PURE__ */ new Date()) {