@infrab4a/connect-angular 0.13.1 → 0.13.2

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 (49) hide show
  1. package/bundles/infrab4a-connect-angular.umd.js +1381 -1380
  2. package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
  3. package/esm2015/infrab4a-connect-angular.js +4 -4
  4. package/esm2015/lib/angular-connect.module.js +46 -46
  5. package/esm2015/lib/angular-firebase-auth.module.js +113 -113
  6. package/esm2015/lib/angular-firestore.module.js +337 -337
  7. package/esm2015/lib/consts/default-shop.const.js +2 -2
  8. package/esm2015/lib/consts/index.js +2 -2
  9. package/esm2015/lib/index.js +5 -5
  10. package/esm2015/lib/services/auth.service.js +42 -42
  11. package/esm2015/lib/services/cart.service.js +166 -166
  12. package/esm2015/lib/services/checkout-subscription.service.js +68 -68
  13. package/esm2015/lib/services/checkout.service.js +79 -79
  14. package/esm2015/lib/services/coupon.service.js +70 -70
  15. package/esm2015/lib/services/errors/group-invalid-coupon.error.js +7 -7
  16. package/esm2015/lib/services/errors/index.js +3 -3
  17. package/esm2015/lib/services/errors/invalid-coupon.error.js +7 -7
  18. package/esm2015/lib/services/home-shop.service.js +108 -107
  19. package/esm2015/lib/services/index.js +8 -8
  20. package/esm2015/lib/services/order.service.js +32 -32
  21. package/esm2015/lib/services/types/index.js +3 -3
  22. package/esm2015/lib/services/types/required-checkout-data.type.js +2 -2
  23. package/esm2015/lib/services/types/required-checkout-subscription-data.type.js +2 -2
  24. package/esm2015/public-api.js +2 -2
  25. package/fesm2015/infrab4a-connect-angular.js +975 -974
  26. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  27. package/infrab4a-connect-angular.d.ts +5 -5
  28. package/lib/angular-connect.module.d.ts +12 -12
  29. package/lib/angular-firebase-auth.module.d.ts +10 -10
  30. package/lib/angular-firestore.module.d.ts +10 -10
  31. package/lib/consts/default-shop.const.d.ts +1 -1
  32. package/lib/consts/index.d.ts +1 -1
  33. package/lib/index.d.ts +4 -4
  34. package/lib/services/auth.service.d.ts +19 -19
  35. package/lib/services/cart.service.d.ts +41 -41
  36. package/lib/services/checkout-subscription.service.d.ts +18 -18
  37. package/lib/services/checkout.service.d.ts +22 -22
  38. package/lib/services/coupon.service.d.ts +14 -14
  39. package/lib/services/errors/group-invalid-coupon.error.d.ts +5 -5
  40. package/lib/services/errors/index.d.ts +2 -2
  41. package/lib/services/errors/invalid-coupon.error.d.ts +4 -4
  42. package/lib/services/home-shop.service.d.ts +24 -24
  43. package/lib/services/index.d.ts +7 -7
  44. package/lib/services/order.service.d.ts +13 -13
  45. package/lib/services/types/index.d.ts +2 -2
  46. package/lib/services/types/required-checkout-data.type.d.ts +2 -2
  47. package/lib/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  48. package/package.json +1 -1
  49. package/public-api.d.ts +1 -1
@@ -1,68 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jaGVja291dC1zdWJzY3JpcHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixhQUFhLEVBQ2IsZUFBZSxFQUNmLEtBQUssRUFDTCxJQUFJLEdBRUwsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUd0RSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBRW1CLDhCQUE4RCxFQUM1QixzQkFBOEMsRUFDaEYsYUFBNEI7UUFGNUIsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2hGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBb0R2Qyw2QkFBd0IsR0FBRyxDQUNqQyxPQUEwQixFQUMxQixRQUE4QixFQUNDLEVBQUUsQ0FDakMsUUFBUSxDQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs7WUFDckIsT0FBQSxJQUFJLENBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFD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MkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsZ0NBQWdDOzswQkFFdkMsTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBDaGVja291dFR5cGVzLFxyXG4gIEZpbmFuY2lhbENvdXBvbixcclxuICBpc05pbCxcclxuICBwaWNrLFxyXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhIH0gZnJvbSAnLi90eXBlcydcclxuaW1wb3J0IGNvb2tpZSBmcm9tICdqcy1jb29raWUnXHJcblxyXG5pbXBvcnQgeyBDb3Vwb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcclxuaW1wb3J0IHsgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IsIEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTdWJzY3JpcHRpb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ0NoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGdldENoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXRJZCA9IGNvb2tpZS5nZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxyXG5cclxuICAgIGlmICghaXNOaWwoY2hlY2tvdXRJZCkpIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuY3JlYXRlQ2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXRTdWJzY3JpcHRpb24oXHJcbiAgICBjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSxcclxuICApOiBQcm9taXNlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XHJcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgLi4uQ2hlY2tvdXRTdWJzY3JpcHRpb24udG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcclxuICAgIH0pXHJcblxyXG4gICAgY29va2llLnNldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcsIGNoZWNrb3V0LmlkKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dFN1YnNjcmlwdGlvbkZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgY29va2llLnJlbW92ZSgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcblxyXG4gICAgcmV0dXJuIG9mKClcclxuICB9XHJcblxyXG4gIGNoZWNrQ291cG9uKG5pY2tuYW1lOiBzdHJpbmcsIHVzZXJFbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb24+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0U3Vic2NyaXB0aW9uKCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2UuY2hlY2tDb3Vwb24obmlja25hbWUsIHVzZXJFbWFpbCwgQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pLnBpcGUoXHJcbiAgICAgICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY291cG9uc1dpdGhTYW1lUGxhbiA9IGNvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IGNoZWNrb3V0LnN1YnNjcmlwdGlvblBsYW4ubmFtZSA9PT0gY291cG9uLnBsYW4pXHJcbiAgICAgICAgICAgIGNvbnN0IGNvdXBvbnNXaXRoTm9QbGFuID0gY291cG9ucy5maWx0ZXIoKGNvdXBvbikgPT4gIWNvdXBvbi5wbGFuKVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvdXBvbnNXaXRoU2FtZVBsYW4ubGVuZ3RoID4gMCkgcmV0dXJuIG9mKGNvdXBvbnNXaXRoU2FtZVBsYW4pXHJcbiAgICAgICAgICAgIGlmIChjb3Vwb25zV2l0aE5vUGxhbi5sZW5ndGggPiAwKSByZXR1cm4gb2YoY291cG9uc1dpdGhOb1BsYW4pXHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdXBvbiBzdWJzY3JpcHRpb24gcGxhbiBpcyBpbnZhbGlkLmApXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT5cclxuICAgICAgICAgICAgISFjaGVja291dC51c2VyPy5lbWFpbCA/IHRoaXMuY2hlY2tDb3Vwb25zV2l0aENoZWNrb3V0KGNvdXBvbnMsIGNoZWNrb3V0KSA6IG9mKGNvdXBvbnMpLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG1hcCgodmFsaWRhdGVkQ291cG9ucykgPT4gdmFsaWRhdGVkQ291cG9ucy5zaGlmdCgpKSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0NvdXBvbnNXaXRoQ2hlY2tvdXQgPSAoXHJcbiAgICBjb3Vwb25zOiBGaW5hbmNpYWxDb3Vwb25bXSxcclxuICAgIGNoZWNrb3V0OiBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICApOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbltdPiA9PlxyXG4gICAgZm9ya0pvaW4oXHJcbiAgICAgIGNvdXBvbnMubWFwKChjb3Vwb24pID0+XHJcbiAgICAgICAgZnJvbShcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5maW5kKFt7IHVzZXI6IHsgZW1haWw6IGNoZWNrb3V0LnVzZXI/LmVtYWlsIH0sIGNvdXBvbjogeyBpZDogY291cG9uLmlkIH0gfV0pLFxyXG4gICAgICAgICkucGlwZShtYXAoKHN1YnNjcmlwdGlvbnMpID0+ICh7IGNvdXBvbiwgc3Vic2NyaXB0aW9ucyB9KSkpLFxyXG4gICAgICApLFxyXG4gICAgKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3VsdHMpID0+XHJcbiAgICAgICAgcmVzdWx0cy5tYXAoKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pID0+IHtcclxuICAgICAgICAgIGlmIChzdWJzY3JpcHRpb25zLmRhdGEubGVuZ3RoID49IChjb3Vwb24udXNlTGltaXQgfHwgSW5maW5pdHkpKVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIGFscmVhZHkgYXBwbGllZCcpXHJcblxyXG4gICAgICAgICAgcmV0dXJuIGNvdXBvblxyXG4gICAgICAgIH0pLFxyXG4gICAgICApLFxyXG4gICAgICBtYXAoKHZhbGlkYXRlZENvdXBvbnMpID0+ICh7XHJcbiAgICAgICAgdmFsaWRzOiB2YWxpZGF0ZWRDb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBGaW5hbmNpYWxDb3Vwb24uaXNGaW5hbmNpYWxDb3Vwb24oY291cG9uKSkgYXMgRmluYW5jaWFsQ291cG9uW10sXHJcbiAgICAgICAgaW52YWxpZHM6IHZhbGlkYXRlZENvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IGNvdXBvbiBpbnN0YW5jZW9mIEludmFsaWRDb3Vwb25FcnJvcikgYXMgSW52YWxpZENvdXBvbkVycm9yW10sXHJcbiAgICAgIH0pKSxcclxuICAgICAgY29uY2F0TWFwKCh7IHZhbGlkcywgaW52YWxpZHMgfSkgPT5cclxuICAgICAgICB2YWxpZHMubGVuZ3RoID8gb2YodmFsaWRzKSA6IHRocm93RXJyb3IobmV3IEdyb3VwSW52YWxpZENvdXBvbkVycm9yKGludmFsaWRzKSksXHJcbiAgICAgICksXHJcbiAgICApXHJcbn1cclxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jaGVja291dC1zdWJzY3JpcHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixhQUFhLEVBQ2IsZUFBZSxFQUNmLEtBQUssRUFDTCxJQUFJLEdBRUwsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUd0RSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBRW1CLDhCQUE4RCxFQUM1QixzQkFBOEMsRUFDaEYsYUFBNEI7UUFGNUIsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2hGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBb0R2Qyw2QkFBd0IsR0FBRyxDQUNqQyxPQUEwQixFQUMxQixRQUE4QixFQUNDLEVBQUUsQ0FDakMsUUFBUSxDQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs7WUFDckIsT0FBQSxJQUFJLENBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFD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MkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsZ0NBQWdDOzswQkFFdkMsTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRUeXBlcyxcbiAgRmluYW5jaWFsQ291cG9uLFxuICBpc05pbCxcbiAgcGljayxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBmb3JrSm9pbiwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCBjb29raWUgZnJvbSAnanMtY29va2llJ1xuXG5pbXBvcnQgeyBDb3Vwb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcbmltcG9ydCB7IEdyb3VwSW52YWxpZENvdXBvbkVycm9yLCBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U3Vic2NyaXB0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0NoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcbiAgKSB7fVxuXG4gIGdldENoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xuICAgIGNvbnN0IGNoZWNrb3V0SWQgPSBjb29raWUuZ2V0KCdjaGVja291dFN1YnNjcmlwdGlvbklkJylcblxuICAgIGlmICghaXNOaWwoY2hlY2tvdXRJZCkpIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKVxuXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGEpKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dFN1YnNjcmlwdGlvbihcbiAgICBjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSxcbiAgKTogUHJvbWlzZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuY3JlYXRlKHtcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIC4uLkNoZWNrb3V0U3Vic2NyaXB0aW9uLnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXG4gICAgfSlcblxuICAgIGNvb2tpZS5zZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnLCBjaGVja291dC5pZClcblxuICAgIHJldHVybiBjaGVja291dFxuICB9XG5cbiAgY2xlYXJDaGVja291dFN1YnNjcmlwdGlvbkZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvb2tpZS5yZW1vdmUoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxuXG4gICAgcmV0dXJuIG9mKClcbiAgfVxuXG4gIGNoZWNrQ291cG9uKG5pY2tuYW1lOiBzdHJpbmcsIHVzZXJFbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dFN1YnNjcmlwdGlvbigpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2UuY2hlY2tDb3Vwb24obmlja25hbWUsIHVzZXJFbWFpbCwgQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pLnBpcGUoXG4gICAgICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3Vwb25zV2l0aFNhbWVQbGFuID0gY291cG9ucy5maWx0ZXIoKGNvdXBvbikgPT4gY2hlY2tvdXQuc3Vic2NyaXB0aW9uUGxhbi5uYW1lID09PSBjb3Vwb24ucGxhbilcbiAgICAgICAgICAgIGNvbnN0IGNvdXBvbnNXaXRoTm9QbGFuID0gY291cG9ucy5maWx0ZXIoKGNvdXBvbikgPT4gIWNvdXBvbi5wbGFuKVxuXG4gICAgICAgICAgICBpZiAoY291cG9uc1dpdGhTYW1lUGxhbi5sZW5ndGggPiAwKSByZXR1cm4gb2YoY291cG9uc1dpdGhTYW1lUGxhbilcbiAgICAgICAgICAgIGlmIChjb3Vwb25zV2l0aE5vUGxhbi5sZW5ndGggPiAwKSByZXR1cm4gb2YoY291cG9uc1dpdGhOb1BsYW4pXG5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291cG9uIHN1YnNjcmlwdGlvbiBwbGFuIGlzIGludmFsaWQuYClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+XG4gICAgICAgICAgICAhIWNoZWNrb3V0LnVzZXI/LmVtYWlsID8gdGhpcy5jaGVja0NvdXBvbnNXaXRoQ2hlY2tvdXQoY291cG9ucywgY2hlY2tvdXQpIDogb2YoY291cG9ucyksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoKHZhbGlkYXRlZENvdXBvbnMpID0+IHZhbGlkYXRlZENvdXBvbnMuc2hpZnQoKSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDb3Vwb25zV2l0aENoZWNrb3V0ID0gKFxuICAgIGNvdXBvbnM6IEZpbmFuY2lhbENvdXBvbltdLFxuICAgIGNoZWNrb3V0OiBDaGVja291dFN1YnNjcmlwdGlvbixcbiAgKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb25bXT4gPT5cbiAgICBmb3JrSm9pbihcbiAgICAgIGNvdXBvbnMubWFwKChjb3Vwb24pID0+XG4gICAgICAgIGZyb20oXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25SZXBvc2l0b3J5LmZpbmQoW3sgdXNlcjogeyBlbWFpbDogY2hlY2tvdXQudXNlcj8uZW1haWwgfSwgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSB9XSksXG4gICAgICAgICkucGlwZShtYXAoKHN1YnNjcmlwdGlvbnMpID0+ICh7IGNvdXBvbiwgc3Vic2NyaXB0aW9ucyB9KSkpLFxuICAgICAgKSxcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdHMpID0+XG4gICAgICAgIHJlc3VsdHMubWFwKCh7IGNvdXBvbiwgc3Vic2NyaXB0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbnMuZGF0YS5sZW5ndGggPj0gKGNvdXBvbi51c2VMaW1pdCB8fCBJbmZpbml0eSkpXG4gICAgICAgICAgICByZXR1cm4gbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIGFscmVhZHkgYXBwbGllZCcpXG5cbiAgICAgICAgICByZXR1cm4gY291cG9uXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIG1hcCgodmFsaWRhdGVkQ291cG9ucykgPT4gKHtcbiAgICAgICAgdmFsaWRzOiB2YWxpZGF0ZWRDb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBGaW5hbmNpYWxDb3Vwb24uaXNGaW5hbmNpYWxDb3Vwb24oY291cG9uKSkgYXMgRmluYW5jaWFsQ291cG9uW10sXG4gICAgICAgIGludmFsaWRzOiB2YWxpZGF0ZWRDb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBjb3Vwb24gaW5zdGFuY2VvZiBJbnZhbGlkQ291cG9uRXJyb3IpIGFzIEludmFsaWRDb3Vwb25FcnJvcltdLFxuICAgICAgfSkpLFxuICAgICAgY29uY2F0TWFwKCh7IHZhbGlkcywgaW52YWxpZHMgfSkgPT5cbiAgICAgICAgdmFsaWRzLmxlbmd0aCA/IG9mKHZhbGlkcykgOiB0aHJvd0Vycm9yKG5ldyBHcm91cEludmFsaWRDb3Vwb25FcnJvcihpbnZhbGlkcykpLFxuICAgICAgKSxcbiAgICApXG59XG4iXX0=
@@ -1,79 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2NoZWNrb3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxRQUFRLEVBRVIsYUFBYSxFQUViLEtBQUssRUFDTCxhQUFhLEVBRWIsSUFBSSxFQUNKLEtBQUssR0FHTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBTyxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7O0FBSWhELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ21CLGFBQTRCLEVBQ0Usa0JBQXNDLEVBQ3pDLGVBQWdDLEVBQ2pDLGNBQThCLEVBQ2xDLFdBQWtCO1FBSnhDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO0lBQ3hELENBQUM7SUFFSixXQUFXLENBQUMsWUFBbUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8s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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENoZWNrb3V0LFxyXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICBDaGVja291dFR5cGVzLFxyXG4gIEZpbmFuY2lhbENvdXBvbixcclxuICBpc05pbCxcclxuICBOb3RGb3VuZEVycm9yLFxyXG4gIE9yZGVyUmVwb3NpdG9yeSxcclxuICBwaWNrLFxyXG4gIFNob3BzLFxyXG4gIFVzZXIsXHJcbiAgVXNlclJlcG9zaXRvcnksXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCBjb29raWUgZnJvbSAnanMtY29va2llJ1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXHJcblxyXG5pbXBvcnQgeyBDb3Vwb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcclxuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcclxuICAgIEBJbmplY3QoJ0NoZWNrb3V0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRSZXBvc2l0b3J5OiBDaGVja291dFJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICApIHt9XHJcblxyXG4gIGdldENoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXRJZCA9IGNvb2tpZS5nZXQoJ2NoZWNrb3V0SWQnKVxyXG5cclxuICAgIGlmICghaXNOaWwoY2hlY2tvdXRJZCkpIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhKSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJCeUNoZWNrb3V0KGNoZWNrb3V0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlcj4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgY2hlY2tvdXQ/LnVzZXI/LmlkID8gb2YoY2hlY2tvdXQudXNlcikgOiBmcm9tKHRoaXMudXNlclJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0LnVzZXIuaWQgfSkpLFxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+IG9mKHVzZXIpIHx8IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ1VzZXIgaXMgbm90IGZvdW5kJykpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShDaGVja291dC50b0luc3RhbmNlKHsgaWQ6IGNoZWNrb3V0LmlkLCBsaW5lSXRlbXM6IGNoZWNrb3V0LmxpbmVJdGVtcyB9KSkpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja291dFVzZXIoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dEZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgY29va2llLnJlbW92ZSgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgcmV0dXJuIG9mKClcclxuICB9XHJcblxyXG4gIGNoZWNrQ291cG9uKG5pY2tuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZS5jaGVja0NvdXBvbihuaWNrbmFtZSwgY2hlY2tvdXQudXNlcj8uZW1haWwsIENoZWNrb3V0VHlwZXMuRUNPTU1FUkNFKS5waXBlKFxyXG4gICAgICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiBvZihjb3Vwb25zLnNoaWZ0KCkpKSxcclxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9uKSA9PlxyXG4gICAgICAgICAgICAhIWNoZWNrb3V0LnVzZXI/LmVtYWlsXHJcbiAgICAgICAgICAgICAgPyBmcm9tKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyUmVwb3NpdG9yeS5maW5kKFt7IHVzZXI6IHsgZW1haWw6IGNoZWNrb3V0LnVzZXI/LmVtYWlsIH0sIGNvdXBvbjogeyBpZDogY291cG9uLmlkIH0gfV0pLFxyXG4gICAgICAgICAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICBjb25jYXRNYXAoKG9yZGVycykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmRlcnMuZGF0YS5sZW5ndGggPj0gKGNvdXBvbi51c2VMaW1pdCB8fCBJbmZpbml0eSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0NvdXBvbiBpcyBhbHJlYWR5IGFwcGxpZWQnKSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNvdXBvbilcclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgOiBvZihjb3Vwb24pLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IFByb21pc2U8Q2hlY2tvdXQ+IHtcclxuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5jaGVja291dFJlcG9zaXRvcnkuY3JlYXRlKHtcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gICAgICAuLi5DaGVja291dC50b0luc3RhbmNlKHBpY2soY2hlY2tvdXREYXRhLCBbJ3VzZXInLCAnc2hvcCddKSkudG9QbGFpbigpLFxyXG4gICAgICBzaG9wOiBjaGVja291dERhdGE/LnNob3AgfHwgdGhpcy5kZWZhdWx0U2hvcCxcclxuICAgIH0pXHJcblxyXG4gICAgY29va2llLnNldCgnY2hlY2tvdXRJZCcsIGNoZWNrb3V0LmlkKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxufVxyXG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2NoZWNrb3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxRQUFRLEVBRVIsYUFBYSxFQUViLEtBQUssRUFDTCxhQUFhLEVBRWIsSUFBSSxFQUNKLEtBQUssR0FHTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBTyxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7O0FBSWhELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ21CLGFBQTRCLEVBQ0Usa0JBQXNDLEVBQ3pDLGVBQWdDLEVBQ2pDLGNBQThCLEVBQ2xDLFdBQWtCO1FBSnhDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO0lBQ3hELENBQUM7SUFFSixXQUFXLENBQUMsWUFBbUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8s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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2hlY2tvdXQsXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRUeXBlcyxcbiAgRmluYW5jaWFsQ291cG9uLFxuICBpc05pbCxcbiAgTm90Rm91bmRFcnJvcixcbiAgT3JkZXJSZXBvc2l0b3J5LFxuICBwaWNrLFxuICBTaG9wcyxcbiAgVXNlcixcbiAgVXNlclJlcG9zaXRvcnksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IGNvb2tpZSBmcm9tICdqcy1jb29raWUnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5cbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoJ0NoZWNrb3V0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRSZXBvc2l0b3J5OiBDaGVja291dFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnT3JkZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBvcmRlclJlcG9zaXRvcnk6IE9yZGVyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcbiAgKSB7fVxuXG4gIGdldENoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIGNvbnN0IGNoZWNrb3V0SWQgPSBjb29raWUuZ2V0KCdjaGVja291dElkJylcblxuICAgIGlmICghaXNOaWwoY2hlY2tvdXRJZCkpIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKVxuXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxuICB9XG5cbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXG4gICAgICApLFxuICAgICAgY29uY2F0TWFwKCh1c2VyKSA9PiBvZih1c2VyKSB8fCB0aHJvd0Vycm9yKCgpID0+IG5ldyBOb3RGb3VuZEVycm9yKCdVc2VyIGlzIG5vdCBmb3VuZCcpKSksXG4gICAgKVxuICB9XG5cbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShDaGVja291dC50b0luc3RhbmNlKHsgaWQ6IGNoZWNrb3V0LmlkLCBsaW5lSXRlbXM6IGNoZWNrb3V0LmxpbmVJdGVtcyB9KSkpXG4gIH1cblxuICB1cGRhdGVDaGVja291dFVzZXIoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShDaGVja291dC50b0luc3RhbmNlKHsgaWQ6IGNoZWNrb3V0LmlkLCB1c2VyOiBjaGVja291dC51c2VyIH0pKSlcbiAgfVxuXG4gIGNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcblxuICAgIHJldHVybiBvZigpXG4gIH1cblxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2UuY2hlY2tDb3Vwb24obmlja25hbWUsIGNoZWNrb3V0LnVzZXI/LmVtYWlsLCBDaGVja291dFR5cGVzLkVDT01NRVJDRSkucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IG9mKGNvdXBvbnMuc2hpZnQoKSkpLFxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9uKSA9PlxuICAgICAgICAgICAgISFjaGVja291dC51c2VyPy5lbWFpbFxuICAgICAgICAgICAgICA/IGZyb20oXG4gICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyUmVwb3NpdG9yeS5maW5kKFt7IHVzZXI6IHsgZW1haWw6IGNoZWNrb3V0LnVzZXI/LmVtYWlsIH0sIGNvdXBvbjogeyBpZDogY291cG9uLmlkIH0gfV0pLFxuICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgob3JkZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmRlcnMuZGF0YS5sZW5ndGggPj0gKGNvdXBvbi51c2VMaW1pdCB8fCBJbmZpbml0eSkpXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdDb3Vwb24gaXMgYWxyZWFkeSBhcHBsaWVkJykpXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNvdXBvbilcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBvZihjb3Vwb24pLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBQcm9taXNlPENoZWNrb3V0PiB7XG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxuICAgIH0pXG5cbiAgICBjb29raWUuc2V0KCdjaGVja291dElkJywgY2hlY2tvdXQuaWQpXG5cbiAgICByZXR1cm4gY2hlY2tvdXRcbiAgfVxufVxuIl19
@@ -1,70 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb3Vwb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsYUFBYSxFQUNiLGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7QUFLdEUsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFDK0MsZ0JBQWtDLEVBQ3hDLFdBQWtCO1FBRFoscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQW1DbkQsNEJBQXVCLEdBQUcsQ0FBQyxTQUFpQixFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUE7UUFFNUYseUJBQW9CLEdBQUcsQ0FDN0IsT0FBaUIsRUFDakIsU0FBaUIsRUFDOEMsRUFBRSxDQUNqRSxPQUFPO2FBQ0osR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJO2dCQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFD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QUVkLGtCQUFrQixhQUNsQixZQUFZOytHQUhYLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXRUeXBlcyxcclxuICBDb3Vwb24sXHJcbiAgQ291cG9uUmVwb3NpdG9yeSxcclxuICBFeGNsdXNpdml0aWVzLFxyXG4gIEZpbmFuY2lhbENvdXBvbixcclxuICBOb3RGb3VuZEVycm9yLFxyXG4gIFNob3BzLFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXHJcblxyXG5pbXBvcnQgeyBHcm91cEludmFsaWRDb3Vwb25FcnJvciwgSW52YWxpZENvdXBvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ291cG9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdDb3Vwb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyk6IE9ic2VydmFibGU8RmluYW5jaWFsQ291cG9uW10+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLmNvdXBvblJlcG9zaXRvcnkuZmluZChbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXHJcbiAgICAgICAgICBzaG9wQXZhaWxhYmlsaXR5OiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0aGlzLmRlZmF1bHRTaG9wIH0sXHJcbiAgICAgICAgICBjaGVja291dFR5cGU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IGNoZWNrb3V0VHlwZSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0pLFxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+XHJcbiAgICAgICAgY291cG9ucy5jb3VudCA8IDEgPyB0aHJvd0Vycm9yKCgpID0+IG5ldyBOb3RGb3VuZEVycm9yKCdDb3Vwb24gbm90IGZvdW5kJykpIDogb2YoY291cG9ucy5kYXRhKSxcclxuICAgICAgKSxcclxuICAgICAgbWFwKChjb3Vwb25zKSA9PiB0aGlzLnNlcGFyYXRlVmFsaWRDb3Vwb25zKGNvdXBvbnMsIHVzZXJFbWFpbCkpLFxyXG4gICAgICBtYXAoKHsgdmFsaWRzLCBpbnZhbGlkcyB9KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWxpZHMubGVuZ3RoKSB0aHJvdyBuZXcgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IoaW52YWxpZHMpXHJcblxyXG4gICAgICAgIHJldHVybiB2YWxpZHNcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmFsaWRDb3Vwb24oY291cG9uOiBGaW5hbmNpYWxDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IodXNlckVtYWlsKSAmJiBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLkNPTExBQk9SQVRPUlMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzZXIgaXMgbm90IGEgY29sbGFib3JhdG9yJylcclxuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnJlY2lwaWVudCAhPT0gdXNlckVtYWlsKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgbm90IHZhbGlkIGZvciB1c2VyJylcclxuICAgIGlmIChjb3Vwb24/LmV4cGlyZXNJbiA8IG5ldyBEYXRlKCkpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBleHBpcmVkJylcclxuXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWFpbElzRnJvbUNvbGxhYm9yYXRvciA9ICh1c2VyRW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4gISF1c2VyRW1haWw/Lm1hdGNoKC9AYjRhLmNvbS5ici9nKVxyXG5cclxuICBwcml2YXRlIHNlcGFyYXRlVmFsaWRDb3Vwb25zID0gKFxyXG4gICAgY291cG9uczogQ291cG9uW10sXHJcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcclxuICApOiB7IHZhbGlkczogRmluYW5jaWFsQ291cG9uW107IGludmFsaWRzOiBJbnZhbGlkQ291cG9uRXJyb3JbXSB9ID0+XHJcbiAgICBjb3Vwb25zXHJcbiAgICAgIC5tYXAoKGNvdXBvbikgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAoIUZpbmFuY2lhbENvdXBvbi5pc0ZpbmFuY2lhbENvdXBvbihjb3Vwb24pKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgbm90IHZhbGlkJylcclxuICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSByZXR1cm4gY291cG9uXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBlcnJvciBhcyBJbnZhbGlkQ291cG9uRXJyb3JcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgKGN1cnJlbnQsIGNvdXBvbikgPT4gKHtcclxuICAgICAgICAgIC4uLmN1cnJlbnQsXHJcbiAgICAgICAgICAuLi4oRmluYW5jaWFsQ291cG9uLmlzRmluYW5jaWFsQ291cG9uKGNvdXBvbilcclxuICAgICAgICAgICAgPyB7IHZhbGlkczogWy4uLmN1cnJlbnQudmFsaWRzLCBjb3Vwb25dIH1cclxuICAgICAgICAgICAgOiB7IGludmFsaWRzOiBbLi4uY3VycmVudC5pbnZhbGlkcywgY291cG9uXSB9KSxcclxuICAgICAgICB9KSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWxpZHM6IFtdIGFzIEZpbmFuY2lhbENvdXBvbltdLFxyXG4gICAgICAgICAgaW52YWxpZHM6IFtdIGFzIEludmFsaWRDb3Vwb25FcnJvcltdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxufVxyXG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb3Vwb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsYUFBYSxFQUNiLGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7QUFLdEUsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFDK0MsZ0JBQWtDLEVBQ3hDLFdBQWtCO1FBRFoscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQW1DbkQsNEJBQXVCLEdBQUcsQ0FBQyxTQUFpQixFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUE7UUFFNUYseUJBQW9CLEdBQUcsQ0FDN0IsT0FBaUIsRUFDakIsU0FBaUIsRUFDOEMsRUFBRSxDQUNqRSxPQUFPO2FBQ0osR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJO2dCQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFD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QUVkLGtCQUFrQixhQUNsQixZQUFZOytHQUhYLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDaGVja291dFR5cGVzLFxuICBDb3Vwb24sXG4gIENvdXBvblJlcG9zaXRvcnksXG4gIEV4Y2x1c2l2aXRpZXMsXG4gIEZpbmFuY2lhbENvdXBvbixcbiAgTm90Rm91bmRFcnJvcixcbiAgU2hvcHMsXG4gIFdoZXJlLFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcblxuaW1wb3J0IHsgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IsIEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ291cG9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0NvdXBvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblJlcG9zaXRvcnk6IENvdXBvblJlcG9zaXRvcnksXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxuICApIHt9XG5cbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyk6IE9ic2VydmFibGU8RmluYW5jaWFsQ291cG9uW10+IHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMuY291cG9uUmVwb3NpdG9yeS5maW5kKFtcbiAgICAgICAge1xuICAgICAgICAgIG5pY2tuYW1lOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBuaWNrbmFtZSB9LFxuICAgICAgICAgIHNob3BBdmFpbGFiaWxpdHk6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRoaXMuZGVmYXVsdFNob3AgfSxcbiAgICAgICAgICBjaGVja291dFR5cGU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IGNoZWNrb3V0VHlwZSB9LFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PlxuICAgICAgICBjb3Vwb25zLmNvdW50IDwgMSA/IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ0NvdXBvbiBub3QgZm91bmQnKSkgOiBvZihjb3Vwb25zLmRhdGEpLFxuICAgICAgKSxcbiAgICAgIG1hcCgoY291cG9ucykgPT4gdGhpcy5zZXBhcmF0ZVZhbGlkQ291cG9ucyhjb3Vwb25zLCB1c2VyRW1haWwpKSxcbiAgICAgIG1hcCgoeyB2YWxpZHMsIGludmFsaWRzIH0pID0+IHtcbiAgICAgICAgaWYgKCF2YWxpZHMubGVuZ3RoKSB0aHJvdyBuZXcgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IoaW52YWxpZHMpXG5cbiAgICAgICAgcmV0dXJuIHZhbGlkc1xuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkQ291cG9uKGNvdXBvbjogRmluYW5jaWFsQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5lbWFpbElzRnJvbUNvbGxhYm9yYXRvcih1c2VyRW1haWwpICYmIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzZXIgaXMgbm90IGEgY29sbGFib3JhdG9yJylcbiAgICBpZiAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5TUEVDSUZJQ19VU0VSICYmIGNvdXBvbi5yZWNpcGllbnQgIT09IHVzZXJFbWFpbClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBub3QgdmFsaWQgZm9yIHVzZXInKVxuICAgIGlmIChjb3Vwb24/LmV4cGlyZXNJbiA8IG5ldyBEYXRlKCkpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBleHBpcmVkJylcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXG5cbiAgcHJpdmF0ZSBzZXBhcmF0ZVZhbGlkQ291cG9ucyA9IChcbiAgICBjb3Vwb25zOiBDb3Vwb25bXSxcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcbiAgKTogeyB2YWxpZHM6IEZpbmFuY2lhbENvdXBvbltdOyBpbnZhbGlkczogSW52YWxpZENvdXBvbkVycm9yW10gfSA9PlxuICAgIGNvdXBvbnNcbiAgICAgIC5tYXAoKGNvdXBvbikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghRmluYW5jaWFsQ291cG9uLmlzRmluYW5jaWFsQ291cG9uKGNvdXBvbikpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBub3QgdmFsaWQnKVxuICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSByZXR1cm4gY291cG9uXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yIGFzIEludmFsaWRDb3Vwb25FcnJvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIGNvdXBvbikgPT4gKHtcbiAgICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICAgIC4uLihGaW5hbmNpYWxDb3Vwb24uaXNGaW5hbmNpYWxDb3Vwb24oY291cG9uKVxuICAgICAgICAgICAgPyB7IHZhbGlkczogWy4uLmN1cnJlbnQudmFsaWRzLCBjb3Vwb25dIH1cbiAgICAgICAgICAgIDogeyBpbnZhbGlkczogWy4uLmN1cnJlbnQuaW52YWxpZHMsIGNvdXBvbl0gfSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgdmFsaWRzOiBbXSBhcyBGaW5hbmNpYWxDb3Vwb25bXSxcbiAgICAgICAgICBpbnZhbGlkczogW10gYXMgSW52YWxpZENvdXBvbkVycm9yW10sXG4gICAgICAgIH0sXG4gICAgICApXG59XG4iXX0=
@@ -1,7 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFBcUIsTUFBNEI7UUFDL0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFEZCxXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUVqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2ludmFsaWQtY291cG9uLmVycm9yJ1xyXG5cclxuZXhwb3J0IGNsYXNzIEdyb3VwSW52YWxpZENvdXBvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVycm9yczogSW52YWxpZENvdXBvbkVycm9yW10pIHtcclxuICAgIHN1cGVyKCdNYW55IGNvdXBvbiBlcnJvcnMgdGhyb3cnKVxyXG4gIH1cclxufVxyXG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFBcUIsTUFBNEI7UUFDL0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFEZCxXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUVqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2ludmFsaWQtY291cG9uLmVycm9yJ1xuXG5leHBvcnQgY2xhc3MgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVycm9yczogSW52YWxpZENvdXBvbkVycm9yW10pIHtcbiAgICBzdXBlcignTWFueSBjb3Vwb24gZXJyb3JzIHRocm93JylcbiAgfVxufVxuIl19
@@ -1,3 +1,3 @@
1
- export * from './invalid-coupon.error';
2
- export * from './group-invalid-coupon.error';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDhCQUE4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnZhbGlkLWNvdXBvbi5lcnJvcidcclxuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1pbnZhbGlkLWNvdXBvbi5lcnJvcidcclxuIl19
1
+ export * from './invalid-coupon.error';
2
+ export * from './group-invalid-coupon.error';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDhCQUE4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnZhbGlkLWNvdXBvbi5lcnJvcidcbmV4cG9ydCAqIGZyb20gJy4vZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3InXG4iXX0=
@@ -1,7 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvaW52YWxpZC1jb3Vwb24uZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsWUFBcUIsT0FBTztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUFBO0lBRTVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbnZhbGlkQ291cG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWVzc2FnZSkge1xyXG4gICAgc3VwZXIobWVzc2FnZSlcclxuICB9XHJcbn1cclxuIl19
1
+ export class InvalidCouponError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.message = message;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvaW52YWxpZC1jb3Vwb24uZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsWUFBcUIsT0FBTztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUFBO0lBRTVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbnZhbGlkQ291cG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICB9XG59XG4iXX0=