@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.
- package/bundles/infrab4a-connect-angular.umd.js +101 -61
- 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 +74 -8
- package/esm2015/services/coupon.service.js +26 -41
- package/esm2015/services/shipping.service.js +7 -8
- package/fesm2015/infrab4a-connect-angular.js +105 -55
- 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,
|
|
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 =
|
|
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 =>
|
|
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 =>
|
|
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
|
-
|
|
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({
|
|
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
|
}] });
|