@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.
- package/bundles/infrab4a-connect-angular.umd.js +61 -101
- package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
- package/esm2015/angular-connect.module.js +5 -5
- package/esm2015/angular-hasura-graphql.module.js +8 -74
- package/esm2015/services/coupon.service.js +41 -26
- package/esm2015/services/shipping.service.js +8 -7
- package/fesm2015/infrab4a-connect-angular.js +55 -105
- package/fesm2015/infrab4a-connect-angular.js.map +1 -1
- package/package.json +2 -2
|
@@ -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,
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
|
262
|
-
|
|
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
|
-
|
|
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
|
-
])
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
1299
|
-
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository
|
|
1314
|
+
useFactory: (options, productRepository) => {
|
|
1315
|
+
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
|
|
1300
1316
|
},
|
|
1301
|
-
deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository
|
|
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
|
|
1370
|
-
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository
|
|
1352
|
+
useFactory: (options, productRepository) => {
|
|
1353
|
+
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository);
|
|
1371
1354
|
},
|
|
1372
|
-
deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository
|
|
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
|
}] });
|