@infrab4a/connect-angular 0.13.3 → 0.14.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.
Files changed (73) hide show
  1. package/{lib/angular-connect.module.d.ts → angular-connect.module.d.ts} +5 -2
  2. package/angular-elastic-search.module.d.ts +9 -0
  3. package/{lib/angular-firestore.module.d.ts → angular-firestore.module.d.ts} +7 -2
  4. package/bundles/infrab4a-connect-angular.umd.js +52 -12
  5. package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
  6. package/consts/es-config.const.d.ts +1 -0
  7. package/{lib/consts → consts}/index.d.ts +1 -0
  8. package/esm2015/angular-connect.module.js +47 -0
  9. package/esm2015/angular-elastic-search.module.js +38 -0
  10. package/esm2015/angular-firebase-auth.module.js +113 -0
  11. package/esm2015/angular-firestore.module.js +340 -0
  12. package/esm2015/consts/default-shop.const.js +2 -0
  13. package/esm2015/consts/es-config.const.js +2 -0
  14. package/esm2015/consts/index.js +3 -0
  15. package/esm2015/index.js +5 -0
  16. package/esm2015/infrab4a-connect-angular.js +2 -2
  17. package/esm2015/services/auth.service.js +42 -0
  18. package/esm2015/services/cart.service.js +166 -0
  19. package/esm2015/services/checkout-subscription.service.js +68 -0
  20. package/esm2015/services/checkout.service.js +79 -0
  21. package/esm2015/services/coupon.service.js +70 -0
  22. package/esm2015/services/errors/group-invalid-coupon.error.js +7 -0
  23. package/esm2015/services/errors/index.js +3 -0
  24. package/esm2015/services/errors/invalid-coupon.error.js +7 -0
  25. package/esm2015/services/home-shop.service.js +108 -0
  26. package/esm2015/services/index.js +8 -0
  27. package/esm2015/services/order.service.js +32 -0
  28. package/esm2015/services/types/index.js +3 -0
  29. package/esm2015/services/types/required-checkout-data.type.js +2 -0
  30. package/esm2015/services/types/required-checkout-subscription-data.type.js +2 -0
  31. package/fesm2015/infrab4a-connect-angular.js +52 -14
  32. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  33. package/infrab4a-connect-angular.d.ts +1 -1
  34. package/package.json +2 -2
  35. package/esm2015/lib/angular-connect.module.js +0 -46
  36. package/esm2015/lib/angular-firebase-auth.module.js +0 -113
  37. package/esm2015/lib/angular-firestore.module.js +0 -337
  38. package/esm2015/lib/consts/default-shop.const.js +0 -2
  39. package/esm2015/lib/consts/index.js +0 -2
  40. package/esm2015/lib/index.js +0 -5
  41. package/esm2015/lib/services/auth.service.js +0 -42
  42. package/esm2015/lib/services/cart.service.js +0 -166
  43. package/esm2015/lib/services/checkout-subscription.service.js +0 -68
  44. package/esm2015/lib/services/checkout.service.js +0 -79
  45. package/esm2015/lib/services/coupon.service.js +0 -70
  46. package/esm2015/lib/services/errors/group-invalid-coupon.error.js +0 -7
  47. package/esm2015/lib/services/errors/index.js +0 -3
  48. package/esm2015/lib/services/errors/invalid-coupon.error.js +0 -7
  49. package/esm2015/lib/services/home-shop.service.js +0 -108
  50. package/esm2015/lib/services/index.js +0 -8
  51. package/esm2015/lib/services/order.service.js +0 -32
  52. package/esm2015/lib/services/types/index.js +0 -3
  53. package/esm2015/lib/services/types/required-checkout-data.type.js +0 -2
  54. package/esm2015/lib/services/types/required-checkout-subscription-data.type.js +0 -2
  55. package/esm2015/public-api.js +0 -2
  56. package/public-api.d.ts +0 -1
  57. /package/{lib/angular-firebase-auth.module.d.ts → angular-firebase-auth.module.d.ts} +0 -0
  58. /package/{lib/consts → consts}/default-shop.const.d.ts +0 -0
  59. /package/{lib/index.d.ts → index.d.ts} +0 -0
  60. /package/{lib/services → services}/auth.service.d.ts +0 -0
  61. /package/{lib/services → services}/cart.service.d.ts +0 -0
  62. /package/{lib/services → services}/checkout-subscription.service.d.ts +0 -0
  63. /package/{lib/services → services}/checkout.service.d.ts +0 -0
  64. /package/{lib/services → services}/coupon.service.d.ts +0 -0
  65. /package/{lib/services → services}/errors/group-invalid-coupon.error.d.ts +0 -0
  66. /package/{lib/services → services}/errors/index.d.ts +0 -0
  67. /package/{lib/services → services}/errors/invalid-coupon.error.d.ts +0 -0
  68. /package/{lib/services → services}/home-shop.service.d.ts +0 -0
  69. /package/{lib/services → services}/index.d.ts +0 -0
  70. /package/{lib/services → services}/order.service.d.ts +0 -0
  71. /package/{lib/services → services}/types/index.d.ts +0 -0
  72. /package/{lib/services → services}/types/required-checkout-data.type.d.ts +0 -0
  73. /package/{lib/services → services}/types/required-checkout-subscription-data.type.d.ts +0 -0
@@ -0,0 +1,166 @@
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { Checkout, CouponSubtypes, CouponTypes, FinancialCoupon, isNil, LineItem, Shops, } from '@infrab4a/connect';
3
+ import { iif, of, Subject } from 'rxjs';
4
+ import { catchError, concatMap, map, tap } from 'rxjs/operators';
5
+ import { DEFAULT_SHOP } from '../consts';
6
+ import { AuthService } from './auth.service';
7
+ import { CheckoutService } from './checkout.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./auth.service";
10
+ import * as i2 from "./checkout.service";
11
+ import * as i3 from "@infrab4a/connect";
12
+ export class CartService {
13
+ constructor(authService, checkoutService, defaultShop) {
14
+ this.authService = authService;
15
+ this.checkoutService = checkoutService;
16
+ this.defaultShop = defaultShop;
17
+ this.cartSubject = new Subject();
18
+ this.updateLineItemInCart = (lineItem, quantity, checkout) => (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(concatMap((checkoutLoaded) => {
19
+ var _a;
20
+ const items = [];
21
+ const index = (_a = checkoutLoaded.lineItems) === null || _a === void 0 ? void 0 : _a.map((checkoutItem) => checkoutItem.sku).indexOf(lineItem.sku);
22
+ if (index > -1) {
23
+ checkoutLoaded.lineItems[index].quantity += quantity;
24
+ checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid;
25
+ }
26
+ else
27
+ checkoutLoaded.lineItems = items.concat(checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem]);
28
+ return this.checkoutService
29
+ .updateCheckoutLineItems(checkoutLoaded)
30
+ .pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)));
31
+ }));
32
+ this.generateCartObject = (items) => {
33
+ const cart = {};
34
+ items === null || items === void 0 ? void 0 : items.forEach((item) => {
35
+ var _a;
36
+ return (cart[item.sku] = LineItem.toInstance(Object.assign(Object.assign({}, (cart[item.sku] || item)), { quantity: (((_a = cart[item.sku]) === null || _a === void 0 ? void 0 : _a.quantity) || 0) + (item.quantity ? item.quantity : 1) })));
37
+ });
38
+ return cart;
39
+ };
40
+ this.buildLineItem = ({ checkout, item, quantity, }) => {
41
+ var _a, _b, _c, _d, _e;
42
+ item.quantity = (item === null || item === void 0 ? void 0 : item.quantity) || ((_b = (_a = checkout === null || checkout === void 0 ? void 0 : checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.sku === item.sku)) === null || _b === void 0 ? void 0 : _b.quantity) || 0;
43
+ if (this.checkMaxStock(item, quantity || 0))
44
+ throw new Error('Desculpe! Temos apenas ' + ((_c = item.stock) === null || _c === void 0 ? void 0 : _c.quantity) + ' em estoque.');
45
+ const image = item.image || ((_d = item.images) === null || _d === void 0 ? void 0 : _d.shift());
46
+ const { id, name, brand, slug, stock, price, weight, categories, sku } = item;
47
+ const isGift = item.isGift || null;
48
+ const pricePaid = this.getProductPrice({
49
+ product: item,
50
+ shop: checkout.shop || this.defaultShop,
51
+ isSubscriber: (_e = checkout.user) === null || _e === void 0 ? void 0 : _e.isSubscriber,
52
+ });
53
+ return LineItem.toInstance({
54
+ id,
55
+ name,
56
+ brand,
57
+ slug,
58
+ sku,
59
+ stock,
60
+ price,
61
+ image,
62
+ weight,
63
+ quantity: (item.quantity || 0) + (quantity || 0),
64
+ pricePaid,
65
+ categories,
66
+ isGift,
67
+ costPrice: item === null || item === void 0 ? void 0 : item.costPrice,
68
+ });
69
+ };
70
+ this.getProductPrice = ({ product, shop, isSubscriber, }) => {
71
+ const info = product.getInfoByShop(shop);
72
+ if (product.isGift)
73
+ return 0;
74
+ return isSubscriber && info.subscriberPrice > 0 ? info.subscriberPrice : info.price;
75
+ };
76
+ this.checkMaxStock = (item, quantity) => {
77
+ var _a;
78
+ const maxStock = ((_a = item.stock) === null || _a === void 0 ? void 0 : _a.quantity) || 0;
79
+ const currentItemAmount = item.quantity || 0;
80
+ return currentItemAmount + quantity > maxStock;
81
+ };
82
+ }
83
+ addItem(item, quantity = 1) {
84
+ return this.checkoutService.getCheckout().pipe(map((checkout) => ({
85
+ checkout,
86
+ lineItem: this.buildLineItem({ checkout, item, quantity: quantity || 1 }),
87
+ })), concatMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout)), tap((cart) => this.cartSubject.next(cart)));
88
+ }
89
+ decreaseItem(item) {
90
+ return this.checkoutService.getCheckout().pipe(map((checkout) => {
91
+ var _a;
92
+ const checkoutItem = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.sku === item.sku);
93
+ if (!isNil(checkoutItem))
94
+ checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0;
95
+ return checkout;
96
+ }), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
97
+ }
98
+ getCart(checkout) {
99
+ this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart));
100
+ return this.cartSubject;
101
+ }
102
+ /**
103
+ * @deprecated The method should not be used
104
+ */
105
+ getDiscount(coupon) {
106
+ switch (coupon.type) {
107
+ case CouponTypes.FINANCIAL:
108
+ return this.getFinancialDiscount(coupon);
109
+ case CouponTypes.PRODUCT:
110
+ return (subTotalPrice) => subTotalPrice;
111
+ case CouponTypes.GIFTCARD:
112
+ return this.getFinancialDiscount(coupon);
113
+ case CouponTypes.VOUCHER:
114
+ return (subTotalPrice) => subTotalPrice;
115
+ }
116
+ }
117
+ /**
118
+ * @deprecated The method should not be used
119
+ */
120
+ getVariantPriceDiscount(item, shop) {
121
+ return this.authService.getUser().pipe(concatMap((user) => iif(() => user.isSubscriber && !!item.getInfoByShop(shop).subscriberPrice, of(item.getInfoByShop(shop).subscriberPrice), of(item.getInfoByShop(shop).price))), catchError(() => of(item.getInfoByShop(shop).price)));
122
+ }
123
+ removeItem(item) {
124
+ return this.checkoutService.getCheckout().pipe(map((checkout) => {
125
+ const index = checkout.lineItems.findIndex((lineItem) => lineItem.sku === item.sku);
126
+ if (index >= 0)
127
+ checkout.lineItems.splice(index, 1);
128
+ return checkout;
129
+ }), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
130
+ }
131
+ updateUserCart(user) {
132
+ return this.checkoutService.getCheckout().pipe(concatMap((checkout) => this.checkoutService.updateCheckoutUser(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { user })))), concatMap((checkout) => {
133
+ var _a;
134
+ return this.checkoutService.updateCheckoutLineItems(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { lineItems: ((_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.map((item) => this.buildLineItem({ checkout, item }))) || [] })));
135
+ }), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
136
+ }
137
+ clearCart() {
138
+ return this.checkoutService.getCheckout().pipe(map((checkout) => {
139
+ this.checkoutService.clearCheckoutFromSession();
140
+ return checkout;
141
+ }), concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)), tap((cart) => this.cartSubject.next(cart)));
142
+ }
143
+ buildCartFromCheckout(checkoutData) {
144
+ return this.checkoutService.getCheckout(checkoutData).pipe(map((checkout) => checkout.lineItems), concatMap((lineItems) => of(this.generateCartObject(lineItems))));
145
+ }
146
+ getFinancialDiscount(coupon) {
147
+ return (subTotalPrice) => {
148
+ if (FinancialCoupon.isFinancialCoupon(coupon))
149
+ switch (coupon.subtype) {
150
+ case CouponSubtypes.ABSOLUTE:
151
+ return subTotalPrice - coupon.discount * 100;
152
+ case CouponSubtypes.PERCENTAGE:
153
+ return subTotalPrice * (1 - coupon.discount / 100);
154
+ }
155
+ };
156
+ }
157
+ }
158
+ CartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, deps: [{ token: i1.AuthService }, { token: i2.CheckoutService }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
159
+ CartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService });
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, decorators: [{
161
+ type: Injectable
162
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.CheckoutService }, { type: i3.Shops, decorators: [{
163
+ type: Inject,
164
+ args: [DEFAULT_SHOP]
165
+ }] }]; } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFDZixLQUFLLEVBQ0wsUUFBUSxFQUNSLEtBQUssR0FFTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBOzs7OztBQVFwRCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNtQixXQUF3QixFQUN4QixlQUFnQyxFQUNWLFdBQWtCO1FBRnhDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBTG5ELGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUE7UUEySDFDLHlCQUFvQixHQUFHLENBQUMsUUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQW1CLEVBQW9CLEVBQUUsQ0FDN0csQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMs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O0lBb0dPLG9CQUFvQixDQUFDLE1BQStCO1FBQzFELE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN2QixJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7Z0JBQzNDLFFBQVEsTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDdEIsS0FBSyxjQUFjLENBQUMsUUFBUTt3QkFDMUIsT0FBTyxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUE7b0JBQzlDLEtBQUssY0FBYyxDQUFDLFVBQVU7d0JBQzVCLE9BQU8sYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUE7aUJBQ3JEO1FBQ0wsQ0FBQyxDQUFBO0lBQ0gsQ0FBQzs7eUdBeE9VLFdBQVcsNEVBTVosWUFBWTs2R0FOWCxXQUFXOzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQU9OLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDaGVja291dCxcbiAgQ291cG9uLFxuICBDb3Vwb25TdWJ0eXBlcyxcbiAgQ291cG9uVHlwZXMsXG4gIEZpbmFuY2lhbENvdXBvbixcbiAgaXNOaWwsXG4gIExpbmVJdGVtLFxuICBTaG9wcyxcbiAgVXNlcixcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBpaWYsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDYXJ0ID0ge1xuICBbaWQ6IHN0cmluZ106IExpbmVJdGVtXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XG4gIHByaXZhdGUgY2FydFN1YmplY3Q6IFN1YmplY3Q8Q2FydD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICkge31cblxuICBhZGRJdGVtKGl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyID0gMSk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiAoe1xuICAgICAgICBjaGVja291dCxcbiAgICAgICAgbGluZUl0ZW06IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtLCBxdWFudGl0eTogcXVhbnRpdHkgfHwgMSB9KSxcbiAgICAgIH0pKSxcbiAgICAgIGNvbmNhdE1hcCgoeyBjaGVja291dCwgbGluZUl0ZW0gfSkgPT4gdGhpcy51cGRhdGVMaW5lSXRlbUluQ2FydChsaW5lSXRlbSwgcXVhbnRpdHkgfHwgMSwgY2hlY2tvdXQpKSxcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcbiAgICApXG4gIH1cblxuICBkZWNyZWFzZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja291dEl0ZW0gPSBjaGVja291dC5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5za3UgPT09IGl0ZW0uc2t1KVxuXG4gICAgICAgIGlmICghaXNOaWwoY2hlY2tvdXRJdGVtKSkgY2hlY2tvdXRJdGVtLnF1YW50aXR5IC09IGNoZWNrb3V0SXRlbS5xdWFudGl0eSA+IDEgPyAxIDogMFxuXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgZ2V0Q2FydChjaGVja291dD86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgdGhpcy5idWlsZENhcnRGcm9tQ2hlY2tvdXQoY2hlY2tvdXQpLnN1YnNjcmliZSgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKVxuXG4gICAgcmV0dXJuIHRoaXMuY2FydFN1YmplY3RcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZFxuICAgKi9cbiAgZ2V0RGlzY291bnQoY291cG9uOiBDb3Vwb24gJiB7IGlkOiBzdHJpbmcgfSk6IChzdWJUb3RhbFByaWNlOiBudW1iZXIpID0+IG51bWJlciB7XG4gICAgc3dpdGNoIChjb3Vwb24udHlwZSkge1xuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5GSU5BTkNJQUw6XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbmFuY2lhbERpc2NvdW50KGNvdXBvbilcbiAgICAgIGNhc2UgQ291cG9uVHlwZXMuUFJPRFVDVDpcbiAgICAgICAgcmV0dXJuIChzdWJUb3RhbFByaWNlOiBudW1iZXIpID0+IHN1YlRvdGFsUHJpY2VcbiAgICAgIGNhc2UgQ291cG9uVHlwZXMuR0lGVENBUkQ6XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbmFuY2lhbERpc2NvdW50KGNvdXBvbilcbiAgICAgIGNhc2UgQ291cG9uVHlwZXMuVk9VQ0hFUjpcbiAgICAgICAgcmV0dXJuIChzdWJUb3RhbFByaWNlOiBudW1iZXIpID0+IHN1YlRvdGFsUHJpY2VcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWRcbiAgICovXG4gIGdldFZhcmlhbnRQcmljZURpc2NvdW50KGl0ZW06IExpbmVJdGVtLCBzaG9wOiBTaG9wcyk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+XG4gICAgICAgIGlpZihcbiAgICAgICAgICAoKSA9PiB1c2VyLmlzU3Vic2NyaWJlciAmJiAhIWl0ZW0uZ2V0SW5mb0J5U2hvcChzaG9wKS5zdWJzY3JpYmVyUHJpY2UsXG4gICAgICAgICAgb2YoaXRlbS5nZXRJbmZvQnlTaG9wKHNob3ApLnN1YnNjcmliZXJQcmljZSksXG4gICAgICAgICAgb2YoaXRlbS5nZXRJbmZvQnlTaG9wKHNob3ApLnByaWNlKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGl0ZW0uZ2V0SW5mb0J5U2hvcChzaG9wKS5wcmljZSkpLFxuICAgIClcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0LmxpbmVJdGVtcy5maW5kSW5kZXgoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5za3UgPT09IGl0ZW0uc2t1KVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSBjaGVja291dC5saW5lSXRlbXMuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgdXBkYXRlVXNlckNhcnQodXNlcjogVXNlcik6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dFVzZXIoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IC4uLmNoZWNrb3V0LnRvUGxhaW4oKSwgdXNlciB9KSksXG4gICAgICApLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoXG4gICAgICAgICAgQ2hlY2tvdXQudG9JbnN0YW5jZSh7XG4gICAgICAgICAgICAuLi5jaGVja291dC50b1BsYWluKCksXG4gICAgICAgICAgICBsaW5lSXRlbXM6IGNoZWNrb3V0LmxpbmVJdGVtcz8ubWFwKChpdGVtKSA9PiB0aGlzLmJ1aWxkTGluZUl0ZW0oeyBjaGVja291dCwgaXRlbSB9KSkgfHwgW10sXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgY2xlYXJDYXJ0KCk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKG9sZENoZWNrb3V0KSA9PiB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChvbGRDaGVja291dCkpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KGNoZWNrb3V0RGF0YSkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmxpbmVJdGVtcyksXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGluZUl0ZW1JbkNhcnQgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyLCBjaGVja291dD86IENoZWNrb3V0KTogT2JzZXJ2YWJsZTxDYXJ0PiA9PlxuICAgIChpc05pbChjaGVja291dCkgPyB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpIDogb2YoY2hlY2tvdXQpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogTGluZUl0ZW1bXSA9IFtdXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zPy5tYXAoKGNoZWNrb3V0SXRlbSkgPT4gY2hlY2tvdXRJdGVtLnNrdSkuaW5kZXhPZihsaW5lSXRlbS5za3UpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICBjaGVja291dExvYWRlZC5saW5lSXRlbXNbaW5kZXhdLnF1YW50aXR5ICs9IHF1YW50aXR5XG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5wcmljZVBhaWQgPSBsaW5lSXRlbS5wcmljZVBhaWRcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zID8gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zLmNvbmNhdChbbGluZUl0ZW1dKSA6IFtsaW5lSXRlbV0sXG4gICAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZVxuICAgICAgICAgIC51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dExvYWRlZClcbiAgICAgICAgICAucGlwZShtYXAoKHVwZGF0ZWRDaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QodXBkYXRlZENoZWNrb3V0LmxpbmVJdGVtcykpKVxuICAgICAgfSksXG4gICAgKVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXJ0T2JqZWN0ID0gKGl0ZW1zOiBMaW5lSXRlbVtdKTogQ2FydCA9PiB7XG4gICAgY29uc3QgY2FydDogQ2FydCA9IHt9XG5cbiAgICBpdGVtcz8uZm9yRWFjaChcbiAgICAgIChpdGVtKSA9PlxuICAgICAgICAoY2FydFtpdGVtLnNrdV0gPSBMaW5lSXRlbS50b0luc3RhbmNlKHtcbiAgICAgICAgICAuLi4oY2FydFtpdGVtLnNrdV0gfHwgaXRlbSksXG4gICAgICAgICAgcXVhbnRpdHk6IChjYXJ0W2l0ZW0uc2t1XT8ucXVhbnRpdHkgfHwgMCkgKyAoaXRlbS5xdWFudGl0eSA/IGl0ZW0ucXVhbnRpdHkgOiAxKSxcbiAgICAgICAgfSkpLFxuICAgIClcblxuICAgIHJldHVybiBjYXJ0XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGluZUl0ZW0gPSAoe1xuICAgIGNoZWNrb3V0LFxuICAgIGl0ZW0sXG4gICAgcXVhbnRpdHksXG4gIH06IHtcbiAgICBjaGVja291dDogUmVxdWlyZWRDaGVja291dERhdGFcbiAgICBpdGVtOiBMaW5lSXRlbVxuICAgIHF1YW50aXR5PzogbnVtYmVyXG4gIH0pOiBMaW5lSXRlbSA9PiB7XG4gICAgaXRlbS5xdWFudGl0eSA9IGl0ZW0/LnF1YW50aXR5IHx8IGNoZWNrb3V0Py5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5za3UgPT09IGl0ZW0uc2t1KT8ucXVhbnRpdHkgfHwgMFxuXG4gICAgaWYgKHRoaXMuY2hlY2tNYXhTdG9jayhpdGVtLCBxdWFudGl0eSB8fCAwKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGVzY3VscGUhIFRlbW9zIGFwZW5hcyAnICsgaXRlbS5zdG9jaz8ucXVhbnRpdHkgKyAnIGVtIGVzdG9xdWUuJylcblxuICAgIGNvbnN0IGltYWdlID0gaXRlbS5pbWFnZSB8fCBpdGVtLmltYWdlcz8uc2hpZnQoKVxuICAgIGNvbnN0IHsgaWQsIG5hbWUsIGJyYW5kLCBzbHVnLCBzdG9jaywgcHJpY2UsIHdlaWdodCwgY2F0ZWdvcmllcywgc2t1IH0gPSBpdGVtXG4gICAgY29uc3QgaXNHaWZ0ID0gaXRlbS5pc0dpZnQgfHwgbnVsbFxuICAgIGNvbnN0IHByaWNlUGFpZCA9IHRoaXMuZ2V0UHJvZHVjdFByaWNlKHtcbiAgICAgIHByb2R1Y3Q6IGl0ZW0sXG4gICAgICBzaG9wOiBjaGVja291dC5zaG9wIHx8IHRoaXMuZGVmYXVsdFNob3AsXG4gICAgICBpc1N1YnNjcmliZXI6IGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlcixcbiAgICB9KVxuXG4gICAgcmV0dXJuIExpbmVJdGVtLnRvSW5zdGFuY2Uoe1xuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgYnJhbmQsXG4gICAgICBzbHVnLFxuICAgICAgc2t1LFxuICAgICAgc3RvY2ssXG4gICAgICBwcmljZSxcbiAgICAgIGltYWdlLFxuICAgICAgd2VpZ2h0LFxuICAgICAgcXVhbnRpdHk6IChpdGVtLnF1YW50aXR5IHx8IDApICsgKHF1YW50aXR5IHx8IDApLFxuICAgICAgcHJpY2VQYWlkLFxuICAgICAgY2F0ZWdvcmllcyxcbiAgICAgIGlzR2lmdCxcbiAgICAgIGNvc3RQcmljZTogaXRlbT8uY29zdFByaWNlLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGdldFByb2R1Y3RQcmljZSA9ICh7XG4gICAgcHJvZHVjdCxcbiAgICBzaG9wLFxuICAgIGlzU3Vic2NyaWJlcixcbiAgfToge1xuICAgIHByb2R1Y3Q6IExpbmVJdGVtXG4gICAgc2hvcDogU2hvcHNcbiAgICBpc1N1YnNjcmliZXI6IGJvb2xlYW5cbiAgfSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgaW5mbyA9IHByb2R1Y3QuZ2V0SW5mb0J5U2hvcChzaG9wKVxuXG4gICAgaWYgKHByb2R1Y3QuaXNHaWZ0KSByZXR1cm4gMFxuXG4gICAgcmV0dXJuIGlzU3Vic2NyaWJlciAmJiBpbmZvLnN1YnNjcmliZXJQcmljZSA+IDAgPyBpbmZvLnN1YnNjcmliZXJQcmljZSA6IGluZm8ucHJpY2VcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tNYXhTdG9jayA9IChpdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1heFN0b2NrID0gaXRlbS5zdG9jaz8ucXVhbnRpdHkgfHwgMFxuICAgIGNvbnN0IGN1cnJlbnRJdGVtQW1vdW50ID0gaXRlbS5xdWFudGl0eSB8fCAwXG5cbiAgICByZXR1cm4gY3VycmVudEl0ZW1BbW91bnQgKyBxdWFudGl0eSA+IG1heFN0b2NrXG4gIH1cblxuICBwcml2YXRlIGdldEZpbmFuY2lhbERpc2NvdW50KGNvdXBvbjogQ291cG9uICYgeyBpZDogc3RyaW5nIH0pOiAoc3ViVG90YWxQcmljZTogbnVtYmVyKSA9PiBudW1iZXIge1xuICAgIHJldHVybiAoc3ViVG90YWxQcmljZSkgPT4ge1xuICAgICAgaWYgKEZpbmFuY2lhbENvdXBvbi5pc0ZpbmFuY2lhbENvdXBvbihjb3Vwb24pKVxuICAgICAgICBzd2l0Y2ggKGNvdXBvbi5zdWJ0eXBlKSB7XG4gICAgICAgICAgY2FzZSBDb3Vwb25TdWJ0eXBlcy5BQlNPTFVURTpcbiAgICAgICAgICAgIHJldHVybiBzdWJUb3RhbFByaWNlIC0gY291cG9uLmRpc2NvdW50ICogMTAwXG4gICAgICAgICAgY2FzZSBDb3Vwb25TdWJ0eXBlcy5QRVJDRU5UQUdFOlxuICAgICAgICAgICAgcmV0dXJuIHN1YlRvdGFsUHJpY2UgKiAoMSAtIGNvdXBvbi5kaXNjb3VudCAvIDEwMClcbiAgICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { CheckoutSubscription, CheckoutTypes, FinancialCoupon, isNil, pick, } from '@infrab4a/connect';
4
+ import { forkJoin, from, of, throwError } from 'rxjs';
5
+ import { concatMap, map } from 'rxjs/operators';
6
+ import cookie from 'js-cookie';
7
+ import { CouponService } from './coupon.service';
8
+ import { GroupInvalidCouponError, InvalidCouponError } from './errors';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./coupon.service";
11
+ export class CheckoutSubscriptionService {
12
+ constructor(checkoutSubscriptionRepository, subscriptionRepository, couponService) {
13
+ this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
14
+ this.subscriptionRepository = subscriptionRepository;
15
+ this.couponService = couponService;
16
+ this.checkCouponsWithCheckout = (coupons, checkout) => forkJoin(coupons.map((coupon) => {
17
+ var _a;
18
+ return from(this.subscriptionRepository.find([{ user: { email: (_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email }, coupon: { id: coupon.id } }])).pipe(map((subscriptions) => ({ coupon, subscriptions })));
19
+ })).pipe(map((results) => results.map(({ coupon, subscriptions }) => {
20
+ if (subscriptions.data.length >= (coupon.useLimit || Infinity))
21
+ return new InvalidCouponError('Coupon is already applied');
22
+ return coupon;
23
+ })), map((validatedCoupons) => ({
24
+ valids: validatedCoupons.filter((coupon) => FinancialCoupon.isFinancialCoupon(coupon)),
25
+ invalids: validatedCoupons.filter((coupon) => coupon instanceof InvalidCouponError),
26
+ })), concatMap(({ valids, invalids }) => valids.length ? of(valids) : throwError(new GroupInvalidCouponError(invalids))));
27
+ }
28
+ getCheckoutSubscription(checkoutData) {
29
+ const checkoutId = cookie.get('checkoutSubscriptionId');
30
+ if (!isNil(checkoutId))
31
+ return from(this.checkoutSubscriptionRepository.get({ id: checkoutId }));
32
+ return from(this.createCheckoutSubscription(checkoutData));
33
+ }
34
+ createCheckoutSubscription(checkoutData) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const checkout = yield this.checkoutSubscriptionRepository.create(Object.assign({ createdAt: new Date() }, CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain()));
37
+ cookie.set('checkoutSubscriptionId', checkout.id);
38
+ return checkout;
39
+ });
40
+ }
41
+ clearCheckoutSubscriptionFromSession() {
42
+ cookie.remove('checkoutSubscriptionId');
43
+ return of();
44
+ }
45
+ checkCoupon(nickname, userEmail) {
46
+ return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.checkCoupon(nickname, userEmail, CheckoutTypes.SUBSCRIPTION).pipe(concatMap((coupons) => {
47
+ const couponsWithSamePlan = coupons.filter((coupon) => checkout.subscriptionPlan.name === coupon.plan);
48
+ const couponsWithNoPlan = coupons.filter((coupon) => !coupon.plan);
49
+ if (couponsWithSamePlan.length > 0)
50
+ return of(couponsWithSamePlan);
51
+ if (couponsWithNoPlan.length > 0)
52
+ return of(couponsWithNoPlan);
53
+ throw new Error(`Coupon subscription plan is invalid.`);
54
+ }), concatMap((coupons) => { var _a; return !!((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email) ? this.checkCouponsWithCheckout(coupons, checkout) : of(coupons); }), map((validatedCoupons) => validatedCoupons.shift()))));
55
+ }
56
+ }
57
+ CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: 'SubscriptionRepository' }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
58
+ CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
60
+ type: Injectable
61
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: ['CheckoutSubscriptionRepository']
64
+ }] }, { type: undefined, decorators: [{
65
+ type: Inject,
66
+ args: ['SubscriptionRepository']
67
+ }] }, { type: i1.CouponService }]; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLGFBQWEsRUFDYixlQUFlLEVBQ2YsS0FBSyxFQUNMLElBQUksR0FFTCxNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUE7QUFFOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7O0FBR3RFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFFbUIsOEJBQThELEVBQzVCLHNCQUE4QyxFQUNoRixhQUE0QjtRQUY1QixtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzVCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDaEYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFvRHZDLDZCQUF3QixHQUFHLENBQ2pDLE9BQTBCLEVBQzFCLFFBQThCLEVBQ0MsRUFBRSxDQUNqQyxRQUFRLENBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOztZQUNyQixPQUFBLElBQUksQ0FDRixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxD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NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUV2QyxNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDaGVja291dFN1YnNjcmlwdGlvbixcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICBDaGVja291dFR5cGVzLFxuICBGaW5hbmNpYWxDb3Vwb24sXG4gIGlzTmlsLFxuICBwaWNrLFxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IGNvb2tpZSBmcm9tICdqcy1jb29raWUnXG5cbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IsIEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTdWJzY3JpcHRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XG4gICAgY29uc3QgY2hlY2tvdXRJZCA9IGNvb2tpZS5nZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxuXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLmNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YSkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKFxuICAgIGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhLFxuICApOiBQcm9taXNlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5jcmVhdGUoe1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgLi4uQ2hlY2tvdXRTdWJzY3JpcHRpb24udG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcbiAgICB9KVxuXG4gICAgY29va2llLnNldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcsIGNoZWNrb3V0LmlkKVxuXG4gICAgcmV0dXJuIGNoZWNrb3V0XG4gIH1cblxuICBjbGVhckNoZWNrb3V0U3Vic2NyaXB0aW9uRnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29va2llLnJlbW92ZSgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXG5cbiAgICByZXR1cm4gb2YoKVxuICB9XG5cbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0U3Vic2NyaXB0aW9uKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZS5jaGVja0NvdXBvbihuaWNrbmFtZSwgdXNlckVtYWlsLCBDaGVja291dFR5cGVzLlNVQlNDUklQVElPTikucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvdXBvbnNXaXRoU2FtZVBsYW4gPSBjb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUgPT09IGNvdXBvbi5wbGFuKVxuICAgICAgICAgICAgY29uc3QgY291cG9uc1dpdGhOb1BsYW4gPSBjb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiAhY291cG9uLnBsYW4pXG5cbiAgICAgICAgICAgIGlmIChjb3Vwb25zV2l0aFNhbWVQbGFuLmxlbmd0aCA+IDApIHJldHVybiBvZihjb3Vwb25zV2l0aFNhbWVQbGFuKVxuICAgICAgICAgICAgaWYgKGNvdXBvbnNXaXRoTm9QbGFuLmxlbmd0aCA+IDApIHJldHVybiBvZihjb3Vwb25zV2l0aE5vUGxhbilcblxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3Vwb24gc3Vic2NyaXB0aW9uIHBsYW4gaXMgaW52YWxpZC5gKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT5cbiAgICAgICAgICAgICEhY2hlY2tvdXQudXNlcj8uZW1haWwgPyB0aGlzLmNoZWNrQ291cG9uc1dpdGhDaGVja291dChjb3Vwb25zLCBjaGVja291dCkgOiBvZihjb3Vwb25zKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgodmFsaWRhdGVkQ291cG9ucykgPT4gdmFsaWRhdGVkQ291cG9ucy5zaGlmdCgpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NvdXBvbnNXaXRoQ2hlY2tvdXQgPSAoXG4gICAgY291cG9uczogRmluYW5jaWFsQ291cG9uW10sXG4gICAgY2hlY2tvdXQ6IENoZWNrb3V0U3Vic2NyaXB0aW9uLFxuICApOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbltdPiA9PlxuICAgIGZvcmtKb2luKFxuICAgICAgY291cG9ucy5tYXAoKGNvdXBvbikgPT5cbiAgICAgICAgZnJvbShcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZmluZChbeyB1c2VyOiB7IGVtYWlsOiBjaGVja291dC51c2VyPy5lbWFpbCB9LCBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9IH1dKSxcbiAgICAgICAgKS5waXBlKG1hcCgoc3Vic2NyaXB0aW9ucykgPT4gKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pKSksXG4gICAgICApLFxuICAgICkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0cykgPT5cbiAgICAgICAgcmVzdWx0cy5tYXAoKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pID0+IHtcbiAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9ucy5kYXRhLmxlbmd0aCA+PSAoY291cG9uLnVzZUxpbWl0IHx8IEluZmluaXR5KSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgYWxyZWFkeSBhcHBsaWVkJylcblxuICAgICAgICAgIHJldHVybiBjb3Vwb25cbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgbWFwKCh2YWxpZGF0ZWRDb3Vwb25zKSA9PiAoe1xuICAgICAgICB2YWxpZHM6IHZhbGlkYXRlZENvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IEZpbmFuY2lhbENvdXBvbi5pc0ZpbmFuY2lhbENvdXBvbihjb3Vwb24pKSBhcyBGaW5hbmNpYWxDb3Vwb25bXSxcbiAgICAgICAgaW52YWxpZHM6IHZhbGlkYXRlZENvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IGNvdXBvbiBpbnN0YW5jZW9mIEludmFsaWRDb3Vwb25FcnJvcikgYXMgSW52YWxpZENvdXBvbkVycm9yW10sXG4gICAgICB9KSksXG4gICAgICBjb25jYXRNYXAoKHsgdmFsaWRzLCBpbnZhbGlkcyB9KSA9PlxuICAgICAgICB2YWxpZHMubGVuZ3RoID8gb2YodmFsaWRzKSA6IHRocm93RXJyb3IobmV3IEdyb3VwSW52YWxpZENvdXBvbkVycm9yKGludmFsaWRzKSksXG4gICAgICApLFxuICAgIClcbn1cbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable, Inject } from '@angular/core';
3
+ import { Checkout, CheckoutTypes, isNil, NotFoundError, pick, Shops, } from '@infrab4a/connect';
4
+ import cookie from 'js-cookie';
5
+ import { from, throwError, of } from 'rxjs';
6
+ import { concatMap } from 'rxjs/operators';
7
+ import { DEFAULT_SHOP } from '../consts';
8
+ import { CouponService } from './coupon.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./coupon.service";
11
+ import * as i2 from "@infrab4a/connect";
12
+ export class CheckoutService {
13
+ constructor(couponService, checkoutRepository, orderRepository, userRepository, defaultShop) {
14
+ this.couponService = couponService;
15
+ this.checkoutRepository = checkoutRepository;
16
+ this.orderRepository = orderRepository;
17
+ this.userRepository = userRepository;
18
+ this.defaultShop = defaultShop;
19
+ }
20
+ getCheckout(checkoutData) {
21
+ const checkoutId = cookie.get('checkoutId');
22
+ if (!isNil(checkoutId))
23
+ return from(this.checkoutRepository.get({ id: checkoutId }));
24
+ return from(this.createCheckout(checkoutData));
25
+ }
26
+ getUserByCheckout(checkoutId) {
27
+ return from(this.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => { var _a; return ((_a = checkout === null || checkout === void 0 ? void 0 : checkout.user) === null || _a === void 0 ? void 0 : _a.id) ? of(checkout.user) : from(this.userRepository.get({ id: checkout.user.id })); }), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
28
+ }
29
+ updateCheckoutLineItems(checkout) {
30
+ return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
31
+ }
32
+ updateCheckoutUser(checkout) {
33
+ return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
34
+ }
35
+ clearCheckoutFromSession() {
36
+ cookie.remove('checkoutId');
37
+ return of();
38
+ }
39
+ checkCoupon(nickname) {
40
+ return this.getCheckout().pipe(concatMap((checkout) => {
41
+ var _a;
42
+ return this.couponService.checkCoupon(nickname, (_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email, CheckoutTypes.ECOMMERCE).pipe(concatMap((coupons) => of(coupons.shift())), concatMap((coupon) => {
43
+ var _a, _b;
44
+ return !!((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email)
45
+ ? from(this.orderRepository.find([{ user: { email: (_b = checkout.user) === null || _b === void 0 ? void 0 : _b.email }, coupon: { id: coupon.id } }])).pipe(concatMap((orders) => {
46
+ if (orders.data.length >= (coupon.useLimit || Infinity))
47
+ return throwError(() => new Error('Coupon is already applied'));
48
+ return of(coupon);
49
+ }))
50
+ : of(coupon);
51
+ }));
52
+ }));
53
+ }
54
+ createCheckout(checkoutData) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ const checkout = yield this.checkoutRepository.create(Object.assign(Object.assign({ createdAt: new Date() }, Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain()), { shop: (checkoutData === null || checkoutData === void 0 ? void 0 : checkoutData.shop) || this.defaultShop }));
57
+ cookie.set('checkoutId', checkout.id);
58
+ return checkout;
59
+ });
60
+ }
61
+ }
62
+ CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CouponService }, { token: 'CheckoutRepository' }, { token: 'OrderRepository' }, { token: 'UserRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService, decorators: [{
65
+ type: Injectable
66
+ }], ctorParameters: function () { return [{ type: i1.CouponService }, { type: undefined, decorators: [{
67
+ type: Inject,
68
+ args: ['CheckoutRepository']
69
+ }] }, { type: undefined, decorators: [{
70
+ type: Inject,
71
+ args: ['OrderRepository']
72
+ }] }, { type: undefined, decorators: [{
73
+ type: Inject,
74
+ args: ['UserRepository']
75
+ }] }, { type: i2.Shops, decorators: [{
76
+ type: Inject,
77
+ args: [DEFAULT_SHOP]
78
+ }] }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxHQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFPLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDaGVja291dCxcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICBDaGVja291dFR5cGVzLFxuICBGaW5hbmNpYWxDb3Vwb24sXG4gIGlzTmlsLFxuICBOb3RGb3VuZEVycm9yLFxuICBPcmRlclJlcG9zaXRvcnksXG4gIHBpY2ssXG4gIFNob3BzLFxuICBVc2VyLFxuICBVc2VyUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcblxuaW1wb3J0IHsgQ291cG9uU2VydmljZSB9IGZyb20gJy4vY291cG9uLnNlcnZpY2UnXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblNlcnZpY2U6IENvdXBvblNlcnZpY2UsXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1VzZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB1c2VyUmVwb3NpdG9yeTogVXNlclJlcG9zaXRvcnksXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxuICApIHt9XG5cbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgY29uc3QgY2hlY2tvdXRJZCA9IGNvb2tpZS5nZXQoJ2NoZWNrb3V0SWQnKVxuXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLmNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YSkpXG4gIH1cblxuICBnZXRVc2VyQnlDaGVja291dChjaGVja291dElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIGNoZWNrb3V0Py51c2VyPy5pZCA/IG9mKGNoZWNrb3V0LnVzZXIpIDogZnJvbSh0aGlzLnVzZXJSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dC51c2VyLmlkIH0pKSxcbiAgICAgICksXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+IG9mKHVzZXIpIHx8IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ1VzZXIgaXMgbm90IGZvdW5kJykpKSxcbiAgICApXG4gIH1cblxuICB1cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcbiAgfVxuXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpKVxuICB9XG5cbiAgY2xlYXJDaGVja291dEZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvb2tpZS5yZW1vdmUoJ2NoZWNrb3V0SWQnKVxuXG4gICAgcmV0dXJuIG9mKClcbiAgfVxuXG4gIGNoZWNrQ291cG9uKG5pY2tuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZS5jaGVja0NvdXBvbihuaWNrbmFtZSwgY2hlY2tvdXQudXNlcj8uZW1haWwsIENoZWNrb3V0VHlwZXMuRUNPTU1FUkNFKS5waXBlKFxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT4gb2YoY291cG9ucy5zaGlmdCgpKSksXG4gICAgICAgICAgY29uY2F0TWFwKChjb3Vwb24pID0+XG4gICAgICAgICAgICAhIWNoZWNrb3V0LnVzZXI/LmVtYWlsXG4gICAgICAgICAgICAgID8gZnJvbShcbiAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoW3sgdXNlcjogeyBlbWFpbDogY2hlY2tvdXQudXNlcj8uZW1haWwgfSwgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSB9XSksXG4gICAgICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKChvcmRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZGVycy5kYXRhLmxlbmd0aCA+PSAoY291cG9uLnVzZUxpbWl0IHx8IEluZmluaXR5KSlcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0NvdXBvbiBpcyBhbHJlYWR5IGFwcGxpZWQnKSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY291cG9uKVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IG9mKGNvdXBvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IFByb21pc2U8Q2hlY2tvdXQ+IHtcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmNyZWF0ZSh7XG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAuLi5DaGVja291dC50b0luc3RhbmNlKHBpY2soY2hlY2tvdXREYXRhLCBbJ3VzZXInLCAnc2hvcCddKSkudG9QbGFpbigpLFxuICAgICAgc2hvcDogY2hlY2tvdXREYXRhPy5zaG9wIHx8IHRoaXMuZGVmYXVsdFNob3AsXG4gICAgfSlcblxuICAgIGNvb2tpZS5zZXQoJ2NoZWNrb3V0SWQnLCBjaGVja291dC5pZClcblxuICAgIHJldHVybiBjaGVja291dFxuICB9XG59XG4iXX0=
@@ -0,0 +1,70 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Exclusivities, FinancialCoupon, NotFoundError, Shops, Where, } from '@infrab4a/connect';
3
+ import { from, throwError, of } from 'rxjs';
4
+ import { concatMap, map } from 'rxjs/operators';
5
+ import { DEFAULT_SHOP } from '../consts';
6
+ import { GroupInvalidCouponError, InvalidCouponError } from './errors';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@infrab4a/connect";
9
+ export class CouponService {
10
+ constructor(couponRepository, defaultShop) {
11
+ this.couponRepository = couponRepository;
12
+ this.defaultShop = defaultShop;
13
+ this.emailIsFromCollaborator = (userEmail) => !!(userEmail === null || userEmail === void 0 ? void 0 : userEmail.match(/@b4a.com.br/g));
14
+ this.separateValidCoupons = (coupons, userEmail) => coupons
15
+ .map((coupon) => {
16
+ try {
17
+ if (!FinancialCoupon.isFinancialCoupon(coupon))
18
+ throw new InvalidCouponError('Coupon is not valid');
19
+ if (this.isValidCoupon(coupon, userEmail))
20
+ return coupon;
21
+ }
22
+ catch (error) {
23
+ return error;
24
+ }
25
+ })
26
+ .reduce((current, coupon) => (Object.assign(Object.assign({}, current), (FinancialCoupon.isFinancialCoupon(coupon)
27
+ ? { valids: [...current.valids, coupon] }
28
+ : { invalids: [...current.invalids, coupon] }))), {
29
+ valids: [],
30
+ invalids: [],
31
+ });
32
+ }
33
+ checkCoupon(nickname, userEmail, checkoutType) {
34
+ return from(this.couponRepository.find([
35
+ {
36
+ nickname: { operator: Where.EQUALS, value: nickname },
37
+ shopAvailability: { operator: Where.EQUALS, value: this.defaultShop },
38
+ checkoutType: { operator: Where.EQUALS, value: checkoutType },
39
+ },
40
+ ])).pipe(concatMap((coupons) => coupons.count < 1 ? throwError(() => new NotFoundError('Coupon not found')) : of(coupons.data)), map((coupons) => this.separateValidCoupons(coupons, userEmail)), map(({ valids, invalids }) => {
41
+ if (!valids.length)
42
+ throw new GroupInvalidCouponError(invalids);
43
+ return valids;
44
+ }));
45
+ }
46
+ isValidCoupon(coupon, userEmail) {
47
+ if (!this.emailIsFromCollaborator(userEmail) && coupon.exclusivityType === Exclusivities.COLLABORATORS)
48
+ throw new InvalidCouponError('User is not a collaborator');
49
+ if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.recipient !== userEmail)
50
+ throw new InvalidCouponError('Coupon is not valid for user');
51
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.expiresIn) < new Date())
52
+ throw new InvalidCouponError('Coupon is expired');
53
+ return true;
54
+ }
55
+ }
56
+ CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
57
+ CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, decorators: [{
59
+ type: Injectable,
60
+ args: [{
61
+ providedIn: 'root',
62
+ }]
63
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
64
+ type: Inject,
65
+ args: ['CouponRepository']
66
+ }] }, { type: i1.Shops, decorators: [{
67
+ type: Inject,
68
+ args: [DEFAULT_SHOP]
69
+ }] }]; } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFJTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBQ0wsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUt0RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0I7UUFEWixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBbUNuRCw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQUU1Rix5QkFBb0IsR0FBRyxDQUM3QixPQUFpQixFQUNqQixTQUFpQixFQUM4QyxFQUFFLENBQ2pFLE9BQU87YUFDSixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7b0JBQUUsTUFBTSxJQUFJLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLENBQUE7Z0JBQ25HLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO29CQUFFLE9BQU8sTUFBTSxDQUFBO2FBQ3pEO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxLQUEyQixDQUFBO2FBQ25DO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUNMLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsaUNBQ2hCLE9BQU8sR0FDUCxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQ2hELEVBQ0Y7WUFDRSxNQUFNLEVBQUUsRUFBdUI7WUFDL0IsUUFBUSxFQUFFLEVBQTBCO1NBQ3JDLENBQ0YsQ0FBQTtJQTVERixDQUFDO0lBRUosV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxZQUEyQjtRQUMxRSxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCO2dCQUNFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ3JELGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JFLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7YUFDOUQ7U0FDRixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQy9GLEVBQ0QsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQy9ELEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUUvRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQXVCLEVBQUUsU0FBaUI7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLGFBQWEsQ0FBQyxhQUFhO1lBQ3BHLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQzVELElBQUksTUFBTSxDQUFDLGVBQWUsS0FBSyxhQUFhLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUztZQUMxRixNQUFNLElBQUksa0JBQWtCLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUM5RCxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsSUFBRyxJQUFJLElBQUksRUFBRTtZQUFFLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRXJGLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzs7MkdBcENVLGFBQWEsa0JBRWQsa0JBQWtCLGFBQ2xCLFlBQVk7K0dBSFgsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgRXhjbHVzaXZpdGllcyxcbiAgRmluYW5jaWFsQ291cG9uLFxuICBOb3RGb3VuZEVycm9yLFxuICBTaG9wcyxcbiAgV2hlcmUsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xuXG5pbXBvcnQgeyBHcm91cEludmFsaWRDb3Vwb25FcnJvciwgSW52YWxpZENvdXBvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb3Vwb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY291cG9uUmVwb3NpdG9yeTogQ291cG9uUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICkge31cblxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCB1c2VyRW1haWw6IHN0cmluZywgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb25bXT4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5jb3Vwb25SZXBvc2l0b3J5LmZpbmQoW1xuICAgICAgICB7XG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXG4gICAgICAgICAgc2hvcEF2YWlsYWJpbGl0eTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdGhpcy5kZWZhdWx0U2hvcCB9LFxuICAgICAgICAgIGNoZWNrb3V0VHlwZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogY2hlY2tvdXRUeXBlIH0sXG4gICAgICAgIH0sXG4gICAgICBdKSxcbiAgICApLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+XG4gICAgICAgIGNvdXBvbnMuY291bnQgPCAxID8gdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignQ291cG9uIG5vdCBmb3VuZCcpKSA6IG9mKGNvdXBvbnMuZGF0YSksXG4gICAgICApLFxuICAgICAgbWFwKChjb3Vwb25zKSA9PiB0aGlzLnNlcGFyYXRlVmFsaWRDb3Vwb25zKGNvdXBvbnMsIHVzZXJFbWFpbCkpLFxuICAgICAgbWFwKCh7IHZhbGlkcywgaW52YWxpZHMgfSkgPT4ge1xuICAgICAgICBpZiAoIXZhbGlkcy5sZW5ndGgpIHRocm93IG5ldyBHcm91cEludmFsaWRDb3Vwb25FcnJvcihpbnZhbGlkcylcblxuICAgICAgICByZXR1cm4gdmFsaWRzXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRDb3Vwb24oY291cG9uOiBGaW5hbmNpYWxDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXJFbWFpbCkgJiYgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5DT0xMQUJPUkFUT1JTKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXNlciBpcyBub3QgYSBjb2xsYWJvcmF0b3InKVxuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnJlY2lwaWVudCAhPT0gdXNlckVtYWlsKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIG5vdCB2YWxpZCBmb3IgdXNlcicpXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIGV4cGlyZWQnKVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHByaXZhdGUgZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IgPSAodXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuID0+ICEhdXNlckVtYWlsPy5tYXRjaCgvQGI0YS5jb20uYnIvZylcblxuICBwcml2YXRlIHNlcGFyYXRlVmFsaWRDb3Vwb25zID0gKFxuICAgIGNvdXBvbnM6IENvdXBvbltdLFxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxuICApOiB7IHZhbGlkczogRmluYW5jaWFsQ291cG9uW107IGludmFsaWRzOiBJbnZhbGlkQ291cG9uRXJyb3JbXSB9ID0+XG4gICAgY291cG9uc1xuICAgICAgLm1hcCgoY291cG9uKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFGaW5hbmNpYWxDb3Vwb24uaXNGaW5hbmNpYWxDb3Vwb24oY291cG9uKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIG5vdCB2YWxpZCcpXG4gICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpIHJldHVybiBjb3Vwb25cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3IgYXMgSW52YWxpZENvdXBvbkVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgY291cG9uKSA9PiAoe1xuICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKEZpbmFuY2lhbENvdXBvbi5pc0ZpbmFuY2lhbENvdXBvbihjb3Vwb24pXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxuICAgICAgICAgICAgOiB7IGludmFsaWRzOiBbLi4uY3VycmVudC5pbnZhbGlkcywgY291cG9uXSB9KSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICB2YWxpZHM6IFtdIGFzIEZpbmFuY2lhbENvdXBvbltdLFxuICAgICAgICAgIGludmFsaWRzOiBbXSBhcyBJbnZhbGlkQ291cG9uRXJyb3JbXSxcbiAgICAgICAgfSxcbiAgICAgIClcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class GroupInvalidCouponError extends Error {
2
+ constructor(errors) {
3
+ super('Many coupon errors throw');
4
+ this.errors = errors;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9ncm91cC1pbnZhbGlkLWNvdXBvbi5lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFxQixNQUE0QjtRQUMvQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQURkLFdBQU0sR0FBTixNQUFNLENBQXNCO0lBRWpELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vaW52YWxpZC1jb3Vwb24uZXJyb3InXG5cbmV4cG9ydCBjbGFzcyBHcm91cEludmFsaWRDb3Vwb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZXJyb3JzOiBJbnZhbGlkQ291cG9uRXJyb3JbXSkge1xuICAgIHN1cGVyKCdNYW55IGNvdXBvbiBlcnJvcnMgdGhyb3cnKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './invalid-coupon.error';
2
+ export * from './group-invalid-coupon.error';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsOEJBQThCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludmFsaWQtY291cG9uLmVycm9yJ1xuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1pbnZhbGlkLWNvdXBvbi5lcnJvcidcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class InvalidCouponError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.message = message;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9pbnZhbGlkLWNvdXBvbi5lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxZQUFxQixPQUFPO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQURLLFlBQU8sR0FBUCxPQUFPLENBQUE7SUFFNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludmFsaWRDb3Vwb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cbiJdfQ==