@infrab4a/connect 4.9.7-beta.25 → 4.9.7-beta.27

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/index.cjs.js CHANGED
@@ -57,6 +57,15 @@ exports.Shops = void 0;
57
57
  Shops["ALL"] = "ALL";
58
58
  })(exports.Shops || (exports.Shops = {}));
59
59
 
60
+ exports.WishlistLogType = void 0;
61
+ (function (WishlistLogType) {
62
+ WishlistLogType["CREATE"] = "create";
63
+ WishlistLogType["UPDATE"] = "update";
64
+ WishlistLogType["DELETE"] = "delete";
65
+ WishlistLogType["ADD_PRODUCT"] = "add_product";
66
+ WishlistLogType["REMOVE_PRODUCT"] = "remove_product";
67
+ })(exports.WishlistLogType || (exports.WishlistLogType = {}));
68
+
60
69
  class Filter extends BaseModel {
61
70
  static get identifiersFields() {
62
71
  return ['id'];
@@ -2130,6 +2139,9 @@ exports.CouponCategory = void 0;
2130
2139
  CouponCategory["Desculpas"] = "Desculpas";
2131
2140
  CouponCategory["BFlu"] = "BFlu";
2132
2141
  CouponCategory["ROYAL"] = "Royal";
2142
+ CouponCategory["Glamqueen"] = "Glamqueen";
2143
+ CouponCategory["Glampartner"] = "Glampartner";
2144
+ CouponCategory["Glamgirl"] = "Glamgirl";
2133
2145
  CouponCategory["Glamdiva"] = "Glamdiva";
2134
2146
  CouponCategory["Impulsionamento"] = "Impulsionamento";
2135
2147
  CouponCategory["PaidMedia"] = "Paid Media";
@@ -2231,6 +2243,12 @@ class RoundProductPricesHelper {
2231
2243
  }
2232
2244
  }
2233
2245
 
2246
+ class LogDocument extends BaseModel {
2247
+ static get identifiersFields() {
2248
+ return ['id'];
2249
+ }
2250
+ }
2251
+
2234
2252
  exports.FilterType = void 0;
2235
2253
  (function (FilterType) {
2236
2254
  FilterType["ACCESSORY_IMPORTANCE"] = "accessoryImportance";
@@ -3098,180 +3116,6 @@ const withCrudFirestore = (MixinBase) => {
3098
3116
  };
3099
3117
  };
3100
3118
 
3101
- class LeadFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3102
- constructor({ firestore, interceptors }) {
3103
- super({
3104
- firestore,
3105
- collectionName: 'leads',
3106
- model: Lead,
3107
- interceptors,
3108
- });
3109
- }
3110
- }
3111
-
3112
- class SubscriptionEditionFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3113
- constructor({ firestore, interceptors }, parentRepository) {
3114
- super({
3115
- firestore,
3116
- collectionName: 'editions',
3117
- parentIdField: 'subscriptionId',
3118
- model: Edition,
3119
- interceptors,
3120
- });
3121
- this.parentRepository = parentRepository;
3122
- }
3123
- }
3124
-
3125
- class SubscriptionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3126
- constructor({ firestore, interceptors, }) {
3127
- super({
3128
- firestore,
3129
- collectionName: 'subscription',
3130
- model: Subscription,
3131
- interceptors,
3132
- });
3133
- }
3134
- }
3135
-
3136
- class SubscriptionMaterializationFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3137
- constructor({ firestore, interceptors }) {
3138
- super({
3139
- firestore,
3140
- collectionName: 'subscriptionMaterialization',
3141
- model: SubscriptionMaterialization,
3142
- interceptors,
3143
- });
3144
- }
3145
- }
3146
-
3147
- class SubscriptionPaymentFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3148
- constructor({ firestore, interceptors }, parentRepository) {
3149
- super({
3150
- firestore,
3151
- collectionName: 'payments',
3152
- parentIdField: 'subscriptionId',
3153
- model: SubscriptionPayment,
3154
- interceptors,
3155
- });
3156
- this.parentRepository = parentRepository;
3157
- }
3158
- }
3159
-
3160
- class SubscriptionSummaryFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3161
- constructor({ firestore, interceptors, }) {
3162
- super({
3163
- firestore,
3164
- collectionName: 'subscriptionSummary',
3165
- model: SubscriptionSummary,
3166
- interceptors,
3167
- });
3168
- }
3169
- }
3170
-
3171
- class UserAddressFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3172
- constructor({ firestore, interceptors }, parentRepository) {
3173
- super({
3174
- firestore,
3175
- collectionName: 'address',
3176
- parentIdField: 'userId',
3177
- model: UserAddress,
3178
- interceptors,
3179
- });
3180
- this.parentRepository = parentRepository;
3181
- }
3182
- }
3183
-
3184
- class UserBeautyProfileFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3185
- constructor({ firestore, interceptors }, parentRepository) {
3186
- super({
3187
- firestore,
3188
- collectionName: 'CX',
3189
- parentIdField: 'userId',
3190
- model: BeautyProfile,
3191
- interceptors,
3192
- });
3193
- this.parentRepository = parentRepository;
3194
- }
3195
- }
3196
-
3197
- class UserFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3198
- constructor({ firestore, interceptors }) {
3199
- super({
3200
- firestore,
3201
- collectionName: 'users',
3202
- model: User,
3203
- interceptors,
3204
- });
3205
- }
3206
- async get(identifiers) {
3207
- const user = await super.get({ id: identifiers.id });
3208
- user.beautyProfile = await this.getBeautyProfile(user.id);
3209
- user.isSubscriber = await this.checkIfIsSubscriber(user.id);
3210
- return user;
3211
- }
3212
- async checkIfExistsByField(field, value) {
3213
- const result = await this.find({ filters: { [field]: value } });
3214
- return result.count > 0;
3215
- }
3216
- buildModelInstance() {
3217
- const { fromFirestore, toFirestore } = super.buildModelInstance();
3218
- return {
3219
- toFirestore: (data) => {
3220
- const plain = toFirestore(data);
3221
- delete plain.isSubscriber;
3222
- return plain;
3223
- },
3224
- fromFirestore,
3225
- };
3226
- }
3227
- async getBeautyProfile(userId) {
3228
- const beautyProfile = await this.firestore
3229
- .getCollection(`${this.collectionName}/${userId}/CX`)
3230
- .withConverter(this.buildBeautyProfileModelInstance())
3231
- .getDoc('beautyProfile')
3232
- .get();
3233
- return beautyProfile.data();
3234
- }
3235
- async checkIfIsSubscriber(userId) {
3236
- const docs = await this.collection('subscription')
3237
- .where('user.id', '==', userId)
3238
- .where('status', '==', 'active')
3239
- .getDocs();
3240
- return !!docs && !!docs.size;
3241
- }
3242
- buildBeautyProfileModelInstance() {
3243
- return {
3244
- toFirestore: (data) => data.toPlain(),
3245
- fromFirestore: (snap) => BeautyProfile.toInstance(snap.data()),
3246
- };
3247
- }
3248
- }
3249
- tslib.__decorate([
3250
- Log(),
3251
- tslib.__metadata("design:type", Function),
3252
- tslib.__metadata("design:paramtypes", [Object]),
3253
- tslib.__metadata("design:returntype", Promise)
3254
- ], UserFirestoreRepository.prototype, "get", null);
3255
- tslib.__decorate([
3256
- Log(),
3257
- tslib.__metadata("design:type", Function),
3258
- tslib.__metadata("design:paramtypes", [String, String]),
3259
- tslib.__metadata("design:returntype", Promise)
3260
- ], UserFirestoreRepository.prototype, "checkIfExistsByField", null);
3261
-
3262
- class UserPaymentMethodFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3263
- constructor({ firestore, interceptors }, parentRepository) {
3264
- super({
3265
- firestore,
3266
- collectionName: 'payment_method',
3267
- parentIdField: 'userId',
3268
- model: UserPaymentMethod,
3269
- interceptors,
3270
- });
3271
- this.parentRepository = parentRepository;
3272
- }
3273
- }
3274
-
3275
3119
  class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3276
3120
  constructor({ firestore, interceptors }) {
3277
3121
  super({
@@ -3293,7 +3137,7 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
3293
3137
  throw new NotFoundError(`Document with slug ${slug} not found`);
3294
3138
  return categoryDocs.docs[0].data();
3295
3139
  }
3296
- async getCategoriesForHome(categoryIds, limit = 4, gender) {
3140
+ async getCategoriesForHome(categoryIds, shop, limit = 4) {
3297
3141
  const categorySnap = await this.collection(this.collectionName)
3298
3142
  .where('id', 'in', categoryIds.filter(Boolean))
3299
3143
  .where('published', '==', true)
@@ -3303,11 +3147,11 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
3303
3147
  const categories = categorySnap.docs.map((doc) => doc.data());
3304
3148
  const homeSections = await Promise.all(categories.map(async (category) => ({
3305
3149
  category,
3306
- products: await this.mountCategory(category, { limit, hasStock: true, gender }),
3150
+ products: await this.mountCategory(category, shop, { limit, hasStock: true }),
3307
3151
  })));
3308
3152
  return homeSections;
3309
3153
  }
3310
- async mountCategory(category, options) {
3154
+ async mountCategory(category, shop, options) {
3311
3155
  if (!category.products)
3312
3156
  throw new RequiredArgumentError(['Category products is empty']);
3313
3157
  const chunks = lodash.chunk(category.products, 10);
@@ -3351,13 +3195,13 @@ tslib.__decorate([
3351
3195
  tslib.__decorate([
3352
3196
  Log(),
3353
3197
  tslib.__metadata("design:type", Function),
3354
- tslib.__metadata("design:paramtypes", [Array, Object, String]),
3198
+ tslib.__metadata("design:paramtypes", [Array, String, Object]),
3355
3199
  tslib.__metadata("design:returntype", Promise)
3356
3200
  ], CategoryFirestoreRepository.prototype, "getCategoriesForHome", null);
3357
3201
  tslib.__decorate([
3358
3202
  Log(),
3359
3203
  tslib.__metadata("design:type", Function),
3360
- tslib.__metadata("design:paramtypes", [Category, Object]),
3204
+ tslib.__metadata("design:paramtypes", [Category, String, Object]),
3361
3205
  tslib.__metadata("design:returntype", Promise)
3362
3206
  ], CategoryFirestoreRepository.prototype, "mountCategory", null);
3363
3207
 
@@ -3456,6 +3300,101 @@ class SubscriptionProductFirestoreRepository extends withCrudFirestore(withHelpe
3456
3300
  }
3457
3301
  }
3458
3302
 
3303
+ class LogFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3304
+ constructor({ firestore, interceptors, }) {
3305
+ super({
3306
+ firestore,
3307
+ collectionName: 'logs',
3308
+ model: LogDocument,
3309
+ interceptors,
3310
+ });
3311
+ }
3312
+ }
3313
+
3314
+ class HomeFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3315
+ constructor({ firestore, interceptors }) {
3316
+ super({
3317
+ firestore,
3318
+ collectionName: 'dms',
3319
+ model: Home,
3320
+ interceptors,
3321
+ });
3322
+ this.homeCategoryGroupToPlain = (homeCategoryGroup) => {
3323
+ var _a, _b, _c;
3324
+ return ({
3325
+ category: ((_a = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category) === null || _a === void 0 ? void 0 : _a.toPlain)
3326
+ ? (_b = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category) === null || _b === void 0 ? void 0 : _b.toPlain()
3327
+ : homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category,
3328
+ products: ((_c = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.products) === null || _c === void 0 ? void 0 : _c.map((product) => ((product === null || product === void 0 ? void 0 : product.toPlain) ? product === null || product === void 0 ? void 0 : product.toPlain() : product)).filter(Boolean)) || [],
3329
+ });
3330
+ };
3331
+ this.plainToHomeCategoryGroup = (homeCategoryGroup) => {
3332
+ var _a;
3333
+ return ({
3334
+ category: Category.toInstance(homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category),
3335
+ products: (_a = homeCategoryGroup.products) === null || _a === void 0 ? void 0 : _a.map((product) => Product.toInstance(product)),
3336
+ });
3337
+ };
3338
+ }
3339
+ buildModelInstance() {
3340
+ const { fromFirestore, toFirestore } = super.buildModelInstance();
3341
+ return {
3342
+ toFirestore: (data) => {
3343
+ const modifiedData = this.homeToFirestore(data);
3344
+ return toFirestore(modifiedData);
3345
+ },
3346
+ fromFirestore: (snap) => {
3347
+ const instance = fromFirestore(snap);
3348
+ return this.homeFromFirestore(instance);
3349
+ },
3350
+ };
3351
+ }
3352
+ homeToFirestore(home) {
3353
+ var _a, _b, _c, _d;
3354
+ if ((_a = home.data) === null || _a === void 0 ? void 0 : _a.data) {
3355
+ home.data.data.discoverProducts = ((_b = home.data.data.discoverProducts) === null || _b === void 0 ? void 0 : _b.map(this.homeCategoryGroupToPlain)) || [];
3356
+ home.data.data.featuredProducts = ((_c = home.data.data.featuredProducts) === null || _c === void 0 ? void 0 : _c.map(this.homeCategoryGroupToPlain)) || [];
3357
+ home.data.data.verticalProducts = ((_d = home.data.data.verticalProducts) === null || _d === void 0 ? void 0 : _d.map(this.homeCategoryGroupToPlain)) || [];
3358
+ }
3359
+ return home;
3360
+ }
3361
+ homeFromFirestore(home) {
3362
+ var _a;
3363
+ if ((_a = home.data) === null || _a === void 0 ? void 0 : _a.data) {
3364
+ home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup);
3365
+ home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup);
3366
+ home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup);
3367
+ home.data.createdAt =
3368
+ home.data.createdAt instanceof firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt;
3369
+ home.data.expiresAt =
3370
+ home.data.expiresAt instanceof firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt;
3371
+ }
3372
+ return home;
3373
+ }
3374
+ }
3375
+
3376
+ class ShopMenuFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3377
+ constructor({ firestore, interceptors }) {
3378
+ super({
3379
+ firestore,
3380
+ collectionName: 'shopMenus',
3381
+ model: ShopMenu,
3382
+ interceptors,
3383
+ });
3384
+ }
3385
+ }
3386
+
3387
+ class ShopSettingsFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3388
+ constructor({ firestore, interceptors, }) {
3389
+ super({
3390
+ firestore,
3391
+ collectionName: 'shopSettings',
3392
+ model: ShopSettings,
3393
+ interceptors,
3394
+ });
3395
+ }
3396
+ }
3397
+
3459
3398
  class Buy2WinFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3460
3399
  constructor({ firestore, interceptors }) {
3461
3400
  super({
@@ -3649,90 +3588,180 @@ class SubscriptionPlanFirestoreRepository extends withCrudFirestore(withHelpers(
3649
3588
  }
3650
3589
  }
3651
3590
 
3652
- class HomeFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3591
+ class LeadFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3653
3592
  constructor({ firestore, interceptors }) {
3654
3593
  super({
3655
3594
  firestore,
3656
- collectionName: 'dms',
3657
- model: Home,
3595
+ collectionName: 'leads',
3596
+ model: Lead,
3658
3597
  interceptors,
3659
3598
  });
3660
- this.homeCategoryGroupToPlain = (homeCategoryGroup) => {
3661
- var _a, _b, _c;
3662
- return ({
3663
- category: ((_a = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category) === null || _a === void 0 ? void 0 : _a.toPlain)
3664
- ? (_b = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category) === null || _b === void 0 ? void 0 : _b.toPlain()
3665
- : homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category,
3666
- products: ((_c = homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.products) === null || _c === void 0 ? void 0 : _c.map((product) => ((product === null || product === void 0 ? void 0 : product.toPlain) ? product === null || product === void 0 ? void 0 : product.toPlain() : product)).filter(Boolean)) || [],
3667
- });
3668
- };
3669
- this.plainToHomeCategoryGroup = (homeCategoryGroup) => {
3670
- var _a;
3671
- return ({
3672
- category: Category.toInstance(homeCategoryGroup === null || homeCategoryGroup === void 0 ? void 0 : homeCategoryGroup.category),
3673
- products: (_a = homeCategoryGroup.products) === null || _a === void 0 ? void 0 : _a.map((product) => Product.toInstance(product)),
3674
- });
3675
- };
3676
- }
3677
- buildModelInstance() {
3678
- const { fromFirestore, toFirestore } = super.buildModelInstance();
3679
- return {
3680
- toFirestore: (data) => {
3681
- const modifiedData = this.homeToFirestore(data);
3682
- return toFirestore(modifiedData);
3683
- },
3684
- fromFirestore: (snap) => {
3685
- const instance = fromFirestore(snap);
3686
- return this.homeFromFirestore(instance);
3687
- },
3688
- };
3689
3599
  }
3690
- homeToFirestore(home) {
3691
- var _a, _b, _c, _d;
3692
- if ((_a = home.data) === null || _a === void 0 ? void 0 : _a.data) {
3693
- home.data.data.discoverProducts = ((_b = home.data.data.discoverProducts) === null || _b === void 0 ? void 0 : _b.map(this.homeCategoryGroupToPlain)) || [];
3694
- home.data.data.featuredProducts = ((_c = home.data.data.featuredProducts) === null || _c === void 0 ? void 0 : _c.map(this.homeCategoryGroupToPlain)) || [];
3695
- home.data.data.verticalProducts = ((_d = home.data.data.verticalProducts) === null || _d === void 0 ? void 0 : _d.map(this.homeCategoryGroupToPlain)) || [];
3696
- }
3697
- return home;
3600
+ }
3601
+
3602
+ class SubscriptionEditionFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3603
+ constructor({ firestore, interceptors }, parentRepository) {
3604
+ super({
3605
+ firestore,
3606
+ collectionName: 'editions',
3607
+ parentIdField: 'subscriptionId',
3608
+ model: Edition,
3609
+ interceptors,
3610
+ });
3611
+ this.parentRepository = parentRepository;
3698
3612
  }
3699
- homeFromFirestore(home) {
3700
- var _a;
3701
- if ((_a = home.data) === null || _a === void 0 ? void 0 : _a.data) {
3702
- home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup);
3703
- home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup);
3704
- home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup);
3705
- home.data.createdAt =
3706
- home.data.createdAt instanceof firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt;
3707
- home.data.expiresAt =
3708
- home.data.expiresAt instanceof firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt;
3709
- }
3710
- return home;
3613
+ }
3614
+
3615
+ class SubscriptionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3616
+ constructor({ firestore, interceptors, }) {
3617
+ super({
3618
+ firestore,
3619
+ collectionName: 'subscription',
3620
+ model: Subscription,
3621
+ interceptors,
3622
+ });
3711
3623
  }
3712
3624
  }
3713
3625
 
3714
- class ShopMenuFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3626
+ class SubscriptionMaterializationFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3715
3627
  constructor({ firestore, interceptors }) {
3716
3628
  super({
3717
3629
  firestore,
3718
- collectionName: 'shopMenus',
3719
- model: ShopMenu,
3630
+ collectionName: 'subscriptionMaterialization',
3631
+ model: SubscriptionMaterialization,
3720
3632
  interceptors,
3721
3633
  });
3722
3634
  }
3723
3635
  }
3724
3636
 
3725
- class ShopSettingsFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3637
+ class SubscriptionPaymentFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3638
+ constructor({ firestore, interceptors }, parentRepository) {
3639
+ super({
3640
+ firestore,
3641
+ collectionName: 'payments',
3642
+ parentIdField: 'subscriptionId',
3643
+ model: SubscriptionPayment,
3644
+ interceptors,
3645
+ });
3646
+ this.parentRepository = parentRepository;
3647
+ }
3648
+ }
3649
+
3650
+ class SubscriptionSummaryFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3726
3651
  constructor({ firestore, interceptors, }) {
3727
3652
  super({
3728
3653
  firestore,
3729
- collectionName: 'shopSettings',
3730
- model: ShopSettings,
3654
+ collectionName: 'subscriptionSummary',
3655
+ model: SubscriptionSummary,
3731
3656
  interceptors,
3732
3657
  });
3733
3658
  }
3734
3659
  }
3735
3660
 
3661
+ class UserAddressFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3662
+ constructor({ firestore, interceptors }, parentRepository) {
3663
+ super({
3664
+ firestore,
3665
+ collectionName: 'address',
3666
+ parentIdField: 'userId',
3667
+ model: UserAddress,
3668
+ interceptors,
3669
+ });
3670
+ this.parentRepository = parentRepository;
3671
+ }
3672
+ }
3673
+
3674
+ class UserBeautyProfileFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3675
+ constructor({ firestore, interceptors }, parentRepository) {
3676
+ super({
3677
+ firestore,
3678
+ collectionName: 'CX',
3679
+ parentIdField: 'userId',
3680
+ model: BeautyProfile,
3681
+ interceptors,
3682
+ });
3683
+ this.parentRepository = parentRepository;
3684
+ }
3685
+ }
3686
+
3687
+ class UserFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
3688
+ constructor({ firestore, interceptors }) {
3689
+ super({
3690
+ firestore,
3691
+ collectionName: 'users',
3692
+ model: User,
3693
+ interceptors,
3694
+ });
3695
+ }
3696
+ async get(identifiers) {
3697
+ const user = await super.get({ id: identifiers.id });
3698
+ user.beautyProfile = await this.getBeautyProfile(user.id);
3699
+ user.isSubscriber = await this.checkIfIsSubscriber(user.id);
3700
+ return user;
3701
+ }
3702
+ async checkIfExistsByField(field, value) {
3703
+ const result = await this.find({ filters: { [field]: value } });
3704
+ return result.count > 0;
3705
+ }
3706
+ buildModelInstance() {
3707
+ const { fromFirestore, toFirestore } = super.buildModelInstance();
3708
+ return {
3709
+ toFirestore: (data) => {
3710
+ const plain = toFirestore(data);
3711
+ delete plain.isSubscriber;
3712
+ return plain;
3713
+ },
3714
+ fromFirestore,
3715
+ };
3716
+ }
3717
+ async getBeautyProfile(userId) {
3718
+ const beautyProfile = await this.firestore
3719
+ .getCollection(`${this.collectionName}/${userId}/CX`)
3720
+ .withConverter(this.buildBeautyProfileModelInstance())
3721
+ .getDoc('beautyProfile')
3722
+ .get();
3723
+ return beautyProfile.data();
3724
+ }
3725
+ async checkIfIsSubscriber(userId) {
3726
+ const docs = await this.collection('subscription')
3727
+ .where('user.id', '==', userId)
3728
+ .where('status', '==', 'active')
3729
+ .getDocs();
3730
+ return !!docs && !!docs.size;
3731
+ }
3732
+ buildBeautyProfileModelInstance() {
3733
+ return {
3734
+ toFirestore: (data) => data.toPlain(),
3735
+ fromFirestore: (snap) => BeautyProfile.toInstance(snap.data()),
3736
+ };
3737
+ }
3738
+ }
3739
+ tslib.__decorate([
3740
+ Log(),
3741
+ tslib.__metadata("design:type", Function),
3742
+ tslib.__metadata("design:paramtypes", [Object]),
3743
+ tslib.__metadata("design:returntype", Promise)
3744
+ ], UserFirestoreRepository.prototype, "get", null);
3745
+ tslib.__decorate([
3746
+ Log(),
3747
+ tslib.__metadata("design:type", Function),
3748
+ tslib.__metadata("design:paramtypes", [String, String]),
3749
+ tslib.__metadata("design:returntype", Promise)
3750
+ ], UserFirestoreRepository.prototype, "checkIfExistsByField", null);
3751
+
3752
+ class UserPaymentMethodFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base)))) {
3753
+ constructor({ firestore, interceptors }, parentRepository) {
3754
+ super({
3755
+ firestore,
3756
+ collectionName: 'payment_method',
3757
+ parentIdField: 'userId',
3758
+ model: UserPaymentMethod,
3759
+ interceptors,
3760
+ });
3761
+ this.parentRepository = parentRepository;
3762
+ }
3763
+ }
3764
+
3736
3765
  class ConnectBaseDocumentSnapshot {
3737
3766
  constructor(connectDocumentSnapshot) {
3738
3767
  this.connectDocumentSnapshot = connectDocumentSnapshot;
@@ -4423,6 +4452,7 @@ const withFindHasuraGraphQL = (MixinBase) => {
4423
4452
  return class FindHasuraGraphQLMixin extends MixinBase {
4424
4453
  constructor() {
4425
4454
  super(...arguments);
4455
+ this.lastDistinct = {};
4426
4456
  this.bindOrderByAttributes = (orderBy, fields) => Object.keys(orderBy).reduce((acc, current) => [
4427
4457
  ...acc,
4428
4458
  {
@@ -4458,9 +4488,10 @@ const withFindHasuraGraphQL = (MixinBase) => {
4458
4488
  });
4459
4489
  }
4460
4490
  async find(params) {
4461
- var _a, _b, _c, _d, _e, _f, _g, _h;
4491
+ var _a, _b, _c, _d, _e, _f, _g;
4462
4492
  this.logger = DebugHelper.from(this, 'find');
4463
4493
  const { filters, limits, orderBy, options } = params || {};
4494
+ const tableFiltersNamed = `${this.tableName}:${JSON.stringify(filters)}`;
4464
4495
  const enableCount = (_a = options === null || options === void 0 ? void 0 : options.enableCount) !== null && _a !== void 0 ? _a : true;
4465
4496
  const variablesFilters = lodash.isNil(filters)
4466
4497
  ? {}
@@ -4511,8 +4542,8 @@ const withFindHasuraGraphQL = (MixinBase) => {
4511
4542
  },
4512
4543
  ]
4513
4544
  : []),
4514
- ...((!((_b = params.limits) === null || _b === void 0 ? void 0 : _b.offset) &&
4515
- ((_d = (_c = params.options) === null || _c === void 0 ? void 0 : _c.distinct) === null || _d === void 0 ? void 0 : _d.map((distinct) => {
4545
+ ...((!this.lastDistinct[tableFiltersNamed] &&
4546
+ ((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.distinct) === null || _c === void 0 ? void 0 : _c.map((distinct) => {
4516
4547
  var _a, _b;
4517
4548
  const distinctOption = (_a = this.fields.find((fieldOption) => fieldOption === distinct)) !== null && _a !== void 0 ? _a : this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === distinct);
4518
4549
  const fieldName = ((_b = Object.values(distinctOption).shift()) === null || _b === void 0 ? void 0 : _b.columnName) || distinct;
@@ -4533,28 +4564,27 @@ const withFindHasuraGraphQL = (MixinBase) => {
4533
4564
  []),
4534
4565
  ]);
4535
4566
  const data = result[this.tableName].map((row) => this.convertDataFromHasura(row));
4536
- return Object.assign(Object.assign(Object.assign({ data, count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity }, (((_e = options === null || options === void 0 ? void 0 : options.minimal) === null || _e === void 0 ? void 0 : _e.length)
4567
+ return Object.assign(Object.assign(Object.assign({ data, count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity }, (((_d = options === null || options === void 0 ? void 0 : options.minimal) === null || _d === void 0 ? void 0 : _d.length)
4537
4568
  ? {
4538
4569
  minimal: options.minimal.reduce((minimals, current) => {
4539
4570
  var _a;
4540
4571
  return (Object.assign(Object.assign({}, minimals), lodash.set(minimals, current, result[`${this.tableName}_aggregate`].aggregate.min[((_a = AttributeOptionHelper.FindByAttribute(current.toString().split('.').pop(), this.fields)) === null || _a === void 0 ? void 0 : _a.columnName) || current])));
4541
4572
  }, {}),
4542
4573
  }
4543
- : {})), (((_f = options === null || options === void 0 ? void 0 : options.maximum) === null || _f === void 0 ? void 0 : _f.length)
4574
+ : {})), (((_e = options === null || options === void 0 ? void 0 : options.maximum) === null || _e === void 0 ? void 0 : _e.length)
4544
4575
  ? {
4545
4576
  maximum: options.maximum.reduce((maximums, current) => {
4546
4577
  var _a;
4547
4578
  return (Object.assign(Object.assign({}, maximums), lodash.set(maximums, current, result[`${this.tableName}_aggregate`].aggregate.max[((_a = AttributeOptionHelper.FindByAttribute(current.toString().split('.').pop(), this.fields)) === null || _a === void 0 ? void 0 : _a.columnName) || current])));
4548
4579
  }, {}),
4549
4580
  }
4550
- : {})), (!((_g = params.limits) === null || _g === void 0 ? void 0 : _g.offset) &&
4551
- ((_h = options === null || options === void 0 ? void 0 : options.distinct) === null || _h === void 0 ? void 0 : _h.length) && {
4552
- distinct: options === null || options === void 0 ? void 0 : options.distinct.reduce((distinct, current) => {
4581
+ : {})), (((_f = options === null || options === void 0 ? void 0 : options.distinct) === null || _f === void 0 ? void 0 : _f.length) && {
4582
+ distinct: (_g = this.lastDistinct[tableFiltersNamed]) !== null && _g !== void 0 ? _g : (this.lastDistinct[tableFiltersNamed] = options === null || options === void 0 ? void 0 : options.distinct.reduce((distinct, current) => {
4553
4583
  var _a, _b;
4554
4584
  const distinctOption = (_a = this.fields.find((fieldOption) => fieldOption === current)) !== null && _a !== void 0 ? _a : this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === current);
4555
4585
  const fieldName = ((_b = Object.values(distinctOption).shift()) === null || _b === void 0 ? void 0 : _b.columnName) || current;
4556
4586
  return Object.assign(Object.assign({}, distinct), { [current.toString()]: result[`${this.tableName}_${current.toString()}_distinct`].map((obj) => obj[fieldName]) });
4557
- }, {}),
4587
+ }, {})),
4558
4588
  }));
4559
4589
  }
4560
4590
  };
@@ -4920,7 +4950,7 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
4920
4950
  });
4921
4951
  return data;
4922
4952
  }
4923
- async getCategoriesForHome(categoryIds, limit = 4, gender) {
4953
+ async getCategoriesForHome(categoryIds, shop, limit = 4) {
4924
4954
  if (!(categoryIds === null || categoryIds === void 0 ? void 0 : categoryIds.length))
4925
4955
  return [];
4926
4956
  const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId));
@@ -4932,22 +4962,32 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
4932
4962
  }).then(({ data }) => data)));
4933
4963
  if (categoriesHasura.length)
4934
4964
  categories.push(...(await this.find({
4935
- filters: { id: { operator: exports.Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },
4965
+ filters: {
4966
+ id: { operator: exports.Where.IN, value: categoriesHasura.filter(Boolean) },
4967
+ published: true,
4968
+ },
4936
4969
  }).then(({ data }) => data)));
4937
4970
  if (!categories.length)
4938
4971
  return [];
4939
4972
  const homeSections = await Promise.all(categories.map(async (category) => ({
4940
4973
  category,
4941
- products: await this.mountCategory(category, { limit, hasStock: true, gender }),
4974
+ products: await this.mountCategory(category, shop, { limit, hasStock: true }),
4942
4975
  })));
4943
4976
  return homeSections;
4944
4977
  }
4945
- async mountCategory(category, options) {
4978
+ async mountCategory(category, shop, options) {
4946
4979
  var _a;
4947
4980
  if (!((_a = category === null || category === void 0 ? void 0 : category.products) === null || _a === void 0 ? void 0 : _a.length))
4948
4981
  return [];
4982
+ const mostRelevants = category.getMostRelevantByShop(shop);
4983
+ const mostRelevantProductsIds = [...new Set(mostRelevants.concat(category.products))];
4949
4984
  const products = [];
4950
- const { data: productsData } = await this.productRepository.find(Object.assign(Object.assign({ filters: Object.assign(Object.assign({ id: { operator: exports.Where.IN, value: category.products }, published: true }, ((options === null || options === void 0 ? void 0 : options.hasStock) ? { stock: { quantity: { operator: exports.Where.GT, value: 0 } } } : {})), ((options === null || options === void 0 ? void 0 : options.gender) ? { tags: { operator: exports.Where.IN, value: [options === null || options === void 0 ? void 0 : options.gender] } } : {})), fields: [
4985
+ const { data: productsData } = await this.productRepository.findCatalog({
4986
+ filters: {
4987
+ id: { operator: exports.Where.IN, value: mostRelevantProductsIds },
4988
+ published: true,
4989
+ },
4990
+ fields: [
4951
4991
  'id',
4952
4992
  'name',
4953
4993
  'slug',
@@ -4973,8 +5013,25 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
4973
5013
  'shoppingCount',
4974
5014
  'gender',
4975
5015
  'createdAt',
4976
- ] }, ((options === null || options === void 0 ? void 0 : options.limit) ? { limits: { limit: options === null || options === void 0 ? void 0 : options.limit } } : {})), { options: { enableCount: false } }));
4977
- products.push(...productsData);
5016
+ ],
5017
+ options: { enableCount: false },
5018
+ orderBy: {
5019
+ shoppingCount: 'desc',
5020
+ rate: 'desc',
5021
+ stock: 'desc',
5022
+ name: 'asc',
5023
+ },
5024
+ }, shop === exports.Shops.MENSMARKET ? 'male' : 'female');
5025
+ const mostRelevantWithouyStock = productsData.filter((product) => mostRelevants.includes(product.id) && product.stock.quantity <= 0);
5026
+ const firstProducts = productsData
5027
+ .filter((product) => mostRelevants.includes(product.id) && product.stock.quantity > 0)
5028
+ .sort((a, b) => mostRelevants.indexOf(a.id) - mostRelevants.indexOf(b.id));
5029
+ const lastProducts = productsData
5030
+ .filter((product) => !mostRelevants.includes(product.id) && product.stock.quantity > 0)
5031
+ .concat(mostRelevantWithouyStock);
5032
+ const categoryMostRelevants = firstProducts.concat(lastProducts);
5033
+ const resultFinal = categoryMostRelevants.slice(0, options.limit);
5034
+ products.push(...resultFinal);
4978
5035
  return products;
4979
5036
  }
4980
5037
  async getChildren(parentId) {
@@ -5149,13 +5206,13 @@ tslib.__decorate([
5149
5206
  tslib.__decorate([
5150
5207
  Log(),
5151
5208
  tslib.__metadata("design:type", Function),
5152
- tslib.__metadata("design:paramtypes", [Array, Object, String]),
5209
+ tslib.__metadata("design:paramtypes", [Array, String, Object]),
5153
5210
  tslib.__metadata("design:returntype", Promise)
5154
5211
  ], CategoryHasuraGraphQLRepository.prototype, "getCategoriesForHome", null);
5155
5212
  tslib.__decorate([
5156
5213
  Log(),
5157
5214
  tslib.__metadata("design:type", Function),
5158
- tslib.__metadata("design:paramtypes", [Category, Object]),
5215
+ tslib.__metadata("design:paramtypes", [Category, String, Object]),
5159
5216
  tslib.__metadata("design:returntype", Promise)
5160
5217
  ], CategoryHasuraGraphQLRepository.prototype, "mountCategory", null);
5161
5218
  tslib.__decorate([
@@ -6286,10 +6343,10 @@ class WishlistHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
6286
6343
  value: [exports.PersonTypes.BFLU, exports.PersonTypes.GLAMGIRL],
6287
6344
  } }), orderBy: Object.assign({ personHasPhoto: 'desc' }, lodash.omit(params.orderBy, ['personHasPhoto'])) }));
6288
6345
  }
6289
- getCategoriesForHome(categoryIds, limit, gender) {
6346
+ getCategoriesForHome(categoryIds, gender, limit) {
6290
6347
  return;
6291
6348
  }
6292
- mountCategory(category, options) {
6349
+ mountCategory(category, shop, options) {
6293
6350
  return;
6294
6351
  }
6295
6352
  getChildren(parentId) {
@@ -6721,6 +6778,8 @@ exports.LeadFirestoreRepository = LeadFirestoreRepository;
6721
6778
  exports.LegacyOrderFirestoreRepository = LegacyOrderFirestoreRepository;
6722
6779
  exports.LineItem = LineItem;
6723
6780
  exports.Log = Log;
6781
+ exports.LogDocument = LogDocument;
6782
+ exports.LogFirestoreRepository = LogFirestoreRepository;
6724
6783
  exports.Logger = Logger;
6725
6784
  exports.NotFoundError = NotFoundError;
6726
6785
  exports.Order = Order;