@infrab4a/connect-angular 3.6.0 → 3.7.0-beta.0

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.
@@ -6,7 +6,7 @@ import { of, combineLatest, from, throwError, Subject, iif, forkJoin } from 'rxj
6
6
  import { catchError, map, mergeMap, concatMap, tap } from 'rxjs/operators';
7
7
  import { __awaiter } from 'tslib';
8
8
  import * as i1$1 from '@infrab4a/connect';
9
- import { Coupon, Where, Shops, CheckoutTypes, CouponTypes, Exclusivities, isNil, NotFoundError, Checkout, pick, LineItem, CheckoutSubscription, Category, Product, RequiredArgumentError, add, Order, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ProductsIndex, AxiosAdapter, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, SubscriptionEditionFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, ProductVariantFirestoreRepository, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, VariantHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, FilterHasuraGraphQLRepository } from '@infrab4a/connect';
9
+ import { Coupon, Where, Shops, CheckoutTypes, CouponTypes, Exclusivities, Status, isNil, NotFoundError, Checkout, pick, LineItem, CheckoutSubscription, Category, Product, RequiredArgumentError, add, Order, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ProductsIndex, AxiosAdapter, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, SubscriptionEditionFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, ProductVariantFirestoreRepository, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, VariantHasuraGraphQLRepository } from '@infrab4a/connect';
10
10
  import cookie from 'js-cookie';
11
11
  import { CustomError } from 'ts-custom-error';
12
12
  import * as i1$2 from '@angular/fire/firestore';
@@ -164,7 +164,7 @@ class CouponService {
164
164
  // Verifica o limite de uso geral por usuario
165
165
  if (coupon.useLimit && orders.data.length >= coupon.useLimit)
166
166
  throw new InvalidCouponError('Limite de uso atingido.');
167
- const validUser = this.userValidationAndSubscriptionStatus(coupon, checkout.user);
167
+ const validUser = yield this.userValidationAndSubscriptionStatus(coupon, userEmail);
168
168
  if (!validUser)
169
169
  throw new InvalidCouponError('Usuário não elegível.');
170
170
  const hasProductCategories = yield this.hasProductCategories(coupon, checkout);
@@ -209,7 +209,7 @@ class CouponService {
209
209
  lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
210
210
  var _a;
211
211
  if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
212
- return i.categories.some((c) => couponCategories.some((cat) => cat.id == c || cat.firestoreId == c));
212
+ return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
213
213
  }
214
214
  return true;
215
215
  });
@@ -249,41 +249,56 @@ class CouponService {
249
249
  return true;
250
250
  }
251
251
  const couponCategories = yield this.getCouponCategoriesId(coupon);
252
- const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
252
+ const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter(i => {
253
253
  var _a;
254
254
  if (!i.categories || !((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length))
255
255
  return true;
256
- return i.categories.some((c) => couponCategories.some((cat) => cat.id == c || cat.firestoreId == c));
256
+ return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
257
257
  });
258
258
  return hasCategories.length ? true : false;
259
259
  });
260
260
  }
261
- userValidationAndSubscriptionStatus(coupon, user) {
262
- if (coupon.exclusivityType === Exclusivities.ALL_USERS)
261
+ userValidationAndSubscriptionStatus(coupon, userEmail) {
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ // Verifica se o email do usuário é coorporativo
264
+ if (!this.emailIsFromCollaborator(userEmail) && coupon.exclusivityType === Exclusivities.COLLABORATORS)
265
+ throw new InvalidCouponError('Você não é colaborador.');
266
+ // Verifica se o email do usuário é associado ao cupom de uso por usuario
267
+ if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.userExclusiveEmail !== userEmail)
268
+ throw new InvalidCouponError('Cupom não é válido para este usuário.');
269
+ const couponRuleSubscription = coupon.exclusivityType === Exclusivities.ACTIVE_SUBSCRIBER ||
270
+ coupon.exclusivityType === Exclusivities.INACTIVE_SUBSCRIBER ||
271
+ coupon.exclusivityType === Exclusivities.NON_SUBSCRIBER;
272
+ if (couponRuleSubscription && userEmail) {
273
+ const sub = yield this.subscriptionRepository
274
+ .find({
275
+ filters: {
276
+ user: {
277
+ email: { operator: Where.EQUALS, value: userEmail },
278
+ },
279
+ },
280
+ })
281
+ .then((sub) => sub.data);
282
+ const activeSubs = sub === null || sub === void 0 ? void 0 : sub.filter((s) => s.status === Status.ACTIVE);
283
+ switch (coupon.exclusivityType) {
284
+ case Exclusivities.ACTIVE_SUBSCRIBER:
285
+ return activeSubs.length > 0;
286
+ case Exclusivities.INACTIVE_SUBSCRIBER:
287
+ return activeSubs.length === 0;
288
+ case Exclusivities.NON_SUBSCRIBER:
289
+ return sub.length === 0;
290
+ default:
291
+ return false;
292
+ }
293
+ }
263
294
  return true;
264
- // Verifica se o email do usuário é coorporativo
265
- if (!this.emailIsFromCollaborator(user.email) && coupon.exclusivityType === Exclusivities.COLLABORATORS)
266
- throw new InvalidCouponError('Você não é colaborador.');
267
- // Verifica se o email do usuário é associado ao cupom de uso por usuario
268
- if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.userExclusiveEmail !== user.email)
269
- throw new InvalidCouponError('Cupom não é válido para este usuário.');
270
- switch (coupon.exclusivityType) {
271
- case Exclusivities.ACTIVE_SUBSCRIBER:
272
- return user.isSubscriber ? true : false;
273
- case Exclusivities.INACTIVE_SUBSCRIBER:
274
- return user.isSubscriber ? false : true;
275
- case Exclusivities.NON_SUBSCRIBER:
276
- return user.isSubscriber ? false : true;
277
- }
278
- return true;
295
+ });
279
296
  }
280
297
  getCouponCategoriesId(coupon) {
281
298
  return __awaiter(this, void 0, void 0, function* () {
282
299
  let couponCategories = [];
283
300
  for (let index = 0; index < coupon.productsCategories.length; index++) {
284
- let c = yield this.categoryRepository.get({
285
- id: coupon.productsCategories[index],
286
- });
301
+ let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
287
302
  couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
288
303
  }
289
304
  return couponCategories;
@@ -698,12 +713,13 @@ class ShippingService {
698
713
  getShippingMethods(shop, zip, weightGrams, totalPrice, personId, subscriptionPlan) {
699
714
  return combineLatest([
700
715
  this.homeService.getHomeData(),
701
- this.http.get(`${this.apiUrl}open/checkshippingcompany?personId=${personId}&postalCode=${zip}&weightGrams=${weightGrams}`),
702
- ]).pipe(map(([datas, shippingMethodsResponse]) => {
716
+ this.http.get(`${this.apiUrl}open/checkshippingcompany?personId=${personId}&postalCode=${zip}&weightGrams=${weightGrams}`)
717
+ ])
718
+ .pipe(map(([datas, shippingMethodsResponse]) => {
703
719
  let shippingMethods = shippingMethodsResponse.result;
704
720
  if (!shippingMethods.length)
705
721
  return [];
706
- shippingMethods = shippingMethods.map((s) => {
722
+ shippingMethods = shippingMethods.map(s => {
707
723
  if (s.ShippingCompanyName == 'Same Day EG')
708
724
  s.ShippingCompanyName = 'Same Day';
709
725
  else
@@ -714,7 +730,7 @@ class ShippingService {
714
730
  shippingMethods = shippingMethods.filter((method) => method.ShippingCompanyName !== 'Same Day');
715
731
  }
716
732
  if (totalPrice >= 200) {
717
- shippingMethods = shippingMethods.map((s) => {
733
+ shippingMethods = shippingMethods.map(s => {
718
734
  if (s.serviceName !== 'Same Day')
719
735
  return Object.assign(Object.assign({}, s), { totalPrice: 0 });
720
736
  else
@@ -724,7 +740,7 @@ class ShippingService {
724
740
  if (shop == Shops.GLAMSHOP)
725
741
  return shippingMethods;
726
742
  if (this.isFreeShippingBySubscription(shop, subscriptionPlan)) {
727
- shippingMethods = shippingMethods.map((s) => {
743
+ shippingMethods = shippingMethods.map(s => {
728
744
  if (s.serviceName == 'Same Day')
729
745
  return Object.assign(Object.assign({}, s), { totalPrice: s.totalPrice / 2 });
730
746
  else
@@ -732,7 +748,7 @@ class ShippingService {
732
748
  });
733
749
  }
734
750
  if (this.isHalfShippingBySubscription(shop, subscriptionPlan)) {
735
- shippingMethods = shippingMethods.map((s) => {
751
+ shippingMethods = shippingMethods.map(s => {
736
752
  return Object.assign(Object.assign({}, s), { totalPrice: s.totalPrice / 2 });
737
753
  });
738
754
  }
@@ -1295,10 +1311,10 @@ AngularHasuraGraphQLModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.
1295
1311
  },
1296
1312
  {
1297
1313
  provide: CategoryHasuraGraphQLRepository,
1298
- useFactory: (options, productRepository, categoryFilterRepository) => {
1299
- return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
1314
+ useFactory: (options, productRepository) => {
1315
+ return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
1300
1316
  },
1301
- deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1317
+ deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository],
1302
1318
  },
1303
1319
  {
1304
1320
  provide: 'ProductRepository',
@@ -1322,39 +1338,6 @@ AngularHasuraGraphQLModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.
1322
1338
  },
1323
1339
  deps: [HASURA_OPTIONS],
1324
1340
  },
1325
- {
1326
- provide: 'CategoryFilterRepository',
1327
- useExisting: CategoryFilterHasuraGraphQLRepository,
1328
- },
1329
- {
1330
- provide: CategoryFilterHasuraGraphQLRepository,
1331
- useFactory: (options) => {
1332
- return new CategoryFilterHasuraGraphQLRepository(options.endpoint, options.credentials);
1333
- },
1334
- deps: [HASURA_OPTIONS],
1335
- },
1336
- {
1337
- provide: 'FilterOptionRepository',
1338
- useExisting: FilterOptionHasuraGraphQLRepository,
1339
- },
1340
- {
1341
- provide: FilterOptionHasuraGraphQLRepository,
1342
- useFactory: (options) => {
1343
- return new FilterOptionHasuraGraphQLRepository(options.endpoint, options.credentials);
1344
- },
1345
- deps: [HASURA_OPTIONS],
1346
- },
1347
- {
1348
- provide: 'FilterRepository',
1349
- useExisting: FilterHasuraGraphQLRepository,
1350
- },
1351
- {
1352
- provide: FilterHasuraGraphQLRepository,
1353
- useFactory: (options, filterOptionRepository, categoryFilterRepository) => {
1354
- return new FilterHasuraGraphQLRepository(options.endpoint, options.credentials, filterOptionRepository, categoryFilterRepository);
1355
- },
1356
- deps: [HASURA_OPTIONS, FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1357
- },
1358
1341
  ] });
1359
1342
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule, decorators: [{
1360
1343
  type: NgModule,
@@ -1366,10 +1349,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1366
1349
  },
1367
1350
  {
1368
1351
  provide: CategoryHasuraGraphQLRepository,
1369
- useFactory: (options, productRepository, categoryFilterRepository) => {
1370
- return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
1352
+ useFactory: (options, productRepository) => {
1353
+ return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
1371
1354
  },
1372
- deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1355
+ deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository],
1373
1356
  },
1374
1357
  {
1375
1358
  provide: 'ProductRepository',
@@ -1393,39 +1376,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1393
1376
  },
1394
1377
  deps: [HASURA_OPTIONS],
1395
1378
  },
1396
- {
1397
- provide: 'CategoryFilterRepository',
1398
- useExisting: CategoryFilterHasuraGraphQLRepository,
1399
- },
1400
- {
1401
- provide: CategoryFilterHasuraGraphQLRepository,
1402
- useFactory: (options) => {
1403
- return new CategoryFilterHasuraGraphQLRepository(options.endpoint, options.credentials);
1404
- },
1405
- deps: [HASURA_OPTIONS],
1406
- },
1407
- {
1408
- provide: 'FilterOptionRepository',
1409
- useExisting: FilterOptionHasuraGraphQLRepository,
1410
- },
1411
- {
1412
- provide: FilterOptionHasuraGraphQLRepository,
1413
- useFactory: (options) => {
1414
- return new FilterOptionHasuraGraphQLRepository(options.endpoint, options.credentials);
1415
- },
1416
- deps: [HASURA_OPTIONS],
1417
- },
1418
- {
1419
- provide: 'FilterRepository',
1420
- useExisting: FilterHasuraGraphQLRepository,
1421
- },
1422
- {
1423
- provide: FilterHasuraGraphQLRepository,
1424
- useFactory: (options, filterOptionRepository, categoryFilterRepository) => {
1425
- return new FilterHasuraGraphQLRepository(options.endpoint, options.credentials, filterOptionRepository, categoryFilterRepository);
1426
- },
1427
- deps: [HASURA_OPTIONS, FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1428
- },
1429
1379
  ],
1430
1380
  }]
1431
1381
  }] });
@@ -1455,7 +1405,7 @@ AngularConnectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
1455
1405
  CouponService,
1456
1406
  HomeShopService,
1457
1407
  OrderService,
1458
- ShippingService,
1408
+ ShippingService
1459
1409
  ], imports: [[AngularFireModule, AngularFirestoreModule, AngularHasuraGraphQLModule]] });
1460
1410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularConnectModule, decorators: [{
1461
1411
  type: NgModule,
@@ -1469,7 +1419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1469
1419
  CouponService,
1470
1420
  HomeShopService,
1471
1421
  OrderService,
1472
- ShippingService,
1422
+ ShippingService
1473
1423
  ],
1474
1424
  }]
1475
1425
  }] });