@infrab4a/connect-angular 3.6.0-beta.2 → 3.6.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, 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';
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';
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 = yield this.userValidationAndSubscriptionStatus(coupon, userEmail);
167
+ const validUser = this.userValidationAndSubscriptionStatus(coupon, checkout.user);
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,56 +249,41 @@ 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, 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
- }
261
+ userValidationAndSubscriptionStatus(coupon, user) {
262
+ if (coupon.exclusivityType === Exclusivities.ALL_USERS)
294
263
  return true;
295
- });
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;
296
279
  }
297
280
  getCouponCategoriesId(coupon) {
298
281
  return __awaiter(this, void 0, void 0, function* () {
299
282
  let couponCategories = [];
300
283
  for (let index = 0; index < coupon.productsCategories.length; index++) {
301
- let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
284
+ let c = yield this.categoryRepository.get({
285
+ id: coupon.productsCategories[index],
286
+ });
302
287
  couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
303
288
  }
304
289
  return couponCategories;
@@ -713,13 +698,12 @@ class ShippingService {
713
698
  getShippingMethods(shop, zip, weightGrams, totalPrice, personId, subscriptionPlan) {
714
699
  return combineLatest([
715
700
  this.homeService.getHomeData(),
716
- this.http.get(`${this.apiUrl}open/checkshippingcompany?personId=${personId}&postalCode=${zip}&weightGrams=${weightGrams}`)
717
- ])
718
- .pipe(map(([datas, shippingMethodsResponse]) => {
701
+ this.http.get(`${this.apiUrl}open/checkshippingcompany?personId=${personId}&postalCode=${zip}&weightGrams=${weightGrams}`),
702
+ ]).pipe(map(([datas, shippingMethodsResponse]) => {
719
703
  let shippingMethods = shippingMethodsResponse.result;
720
704
  if (!shippingMethods.length)
721
705
  return [];
722
- shippingMethods = shippingMethods.map(s => {
706
+ shippingMethods = shippingMethods.map((s) => {
723
707
  if (s.ShippingCompanyName == 'Same Day EG')
724
708
  s.ShippingCompanyName = 'Same Day';
725
709
  else
@@ -730,7 +714,7 @@ class ShippingService {
730
714
  shippingMethods = shippingMethods.filter((method) => method.ShippingCompanyName !== 'Same Day');
731
715
  }
732
716
  if (totalPrice >= 200) {
733
- shippingMethods = shippingMethods.map(s => {
717
+ shippingMethods = shippingMethods.map((s) => {
734
718
  if (s.serviceName !== 'Same Day')
735
719
  return Object.assign(Object.assign({}, s), { totalPrice: 0 });
736
720
  else
@@ -740,7 +724,7 @@ class ShippingService {
740
724
  if (shop == Shops.GLAMSHOP)
741
725
  return shippingMethods;
742
726
  if (this.isFreeShippingBySubscription(shop, subscriptionPlan)) {
743
- shippingMethods = shippingMethods.map(s => {
727
+ shippingMethods = shippingMethods.map((s) => {
744
728
  if (s.serviceName == 'Same Day')
745
729
  return Object.assign(Object.assign({}, s), { totalPrice: s.totalPrice / 2 });
746
730
  else
@@ -748,7 +732,7 @@ class ShippingService {
748
732
  });
749
733
  }
750
734
  if (this.isHalfShippingBySubscription(shop, subscriptionPlan)) {
751
- shippingMethods = shippingMethods.map(s => {
735
+ shippingMethods = shippingMethods.map((s) => {
752
736
  return Object.assign(Object.assign({}, s), { totalPrice: s.totalPrice / 2 });
753
737
  });
754
738
  }
@@ -1311,10 +1295,10 @@ AngularHasuraGraphQLModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.
1311
1295
  },
1312
1296
  {
1313
1297
  provide: CategoryHasuraGraphQLRepository,
1314
- useFactory: (options, productRepository) => {
1315
- return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
1298
+ useFactory: (options, productRepository, categoryFilterRepository) => {
1299
+ return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
1316
1300
  },
1317
- deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository],
1301
+ deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1318
1302
  },
1319
1303
  {
1320
1304
  provide: 'ProductRepository',
@@ -1338,6 +1322,39 @@ AngularHasuraGraphQLModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.
1338
1322
  },
1339
1323
  deps: [HASURA_OPTIONS],
1340
1324
  },
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
+ },
1341
1358
  ] });
1342
1359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule, decorators: [{
1343
1360
  type: NgModule,
@@ -1349,10 +1366,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1349
1366
  },
1350
1367
  {
1351
1368
  provide: CategoryHasuraGraphQLRepository,
1352
- useFactory: (options, productRepository) => {
1353
- return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
1369
+ useFactory: (options, productRepository, categoryFilterRepository) => {
1370
+ return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
1354
1371
  },
1355
- deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository],
1372
+ deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
1356
1373
  },
1357
1374
  {
1358
1375
  provide: 'ProductRepository',
@@ -1376,6 +1393,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1376
1393
  },
1377
1394
  deps: [HASURA_OPTIONS],
1378
1395
  },
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
+ },
1379
1429
  ],
1380
1430
  }]
1381
1431
  }] });
@@ -1405,7 +1455,7 @@ AngularConnectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
1405
1455
  CouponService,
1406
1456
  HomeShopService,
1407
1457
  OrderService,
1408
- ShippingService
1458
+ ShippingService,
1409
1459
  ], imports: [[AngularFireModule, AngularFirestoreModule, AngularHasuraGraphQLModule]] });
1410
1460
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularConnectModule, decorators: [{
1411
1461
  type: NgModule,
@@ -1419,7 +1469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
1419
1469
  CouponService,
1420
1470
  HomeShopService,
1421
1471
  OrderService,
1422
- ShippingService
1472
+ ShippingService,
1423
1473
  ],
1424
1474
  }]
1425
1475
  }] });