@infrab4a/connect-angular 0.14.2-beta.12 → 0.14.2-beta.3

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 (51) hide show
  1. package/angular-connect.module.d.ts +15 -15
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +10 -10
  4. package/angular-firestore.module.d.ts +15 -15
  5. package/bundles/infrab4a-connect-angular.umd.js +1397 -1418
  6. package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
  7. package/consts/default-shop.const.d.ts +1 -1
  8. package/consts/es-config.const.d.ts +1 -1
  9. package/consts/index.d.ts +2 -2
  10. package/esm2015/angular-connect.module.js +47 -47
  11. package/esm2015/angular-elastic-search.module.js +38 -38
  12. package/esm2015/angular-firebase-auth.module.js +113 -113
  13. package/esm2015/angular-firestore.module.js +340 -340
  14. package/esm2015/consts/default-shop.const.js +2 -2
  15. package/esm2015/consts/es-config.const.js +2 -2
  16. package/esm2015/consts/index.js +3 -3
  17. package/esm2015/index.js +5 -5
  18. package/esm2015/infrab4a-connect-angular.js +4 -4
  19. package/esm2015/services/auth.service.js +42 -42
  20. package/esm2015/services/cart.service.js +150 -167
  21. package/esm2015/services/checkout-subscription.service.js +44 -68
  22. package/esm2015/services/checkout.service.js +68 -79
  23. package/esm2015/services/coupon.service.js +98 -70
  24. package/esm2015/services/errors/group-invalid-coupon.error.js +7 -7
  25. package/esm2015/services/errors/index.js +3 -3
  26. package/esm2015/services/errors/invalid-coupon.error.js +7 -7
  27. package/esm2015/services/home-shop.service.js +108 -108
  28. package/esm2015/services/index.js +8 -8
  29. package/esm2015/services/order.service.js +32 -32
  30. package/esm2015/services/types/index.js +3 -3
  31. package/esm2015/services/types/required-checkout-data.type.js +2 -2
  32. package/esm2015/services/types/required-checkout-subscription-data.type.js +2 -2
  33. package/fesm2015/infrab4a-connect-angular.js +988 -1011
  34. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  35. package/index.d.ts +4 -4
  36. package/infrab4a-connect-angular.d.ts +5 -5
  37. package/package.json +2 -2
  38. package/services/auth.service.d.ts +19 -19
  39. package/services/cart.service.d.ts +35 -41
  40. package/services/checkout-subscription.service.d.ts +16 -18
  41. package/services/checkout.service.d.ts +23 -22
  42. package/services/coupon.service.d.ts +17 -14
  43. package/services/errors/group-invalid-coupon.error.d.ts +5 -5
  44. package/services/errors/index.d.ts +2 -2
  45. package/services/errors/invalid-coupon.error.d.ts +4 -4
  46. package/services/home-shop.service.d.ts +24 -24
  47. package/services/index.d.ts +7 -7
  48. package/services/order.service.d.ts +13 -13
  49. package/services/types/index.d.ts +2 -2
  50. package/services/types/required-checkout-data.type.d.ts +2 -2
  51. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
@@ -1,68 +1,44 @@
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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NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUV2QyxNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgRmluYW5jaWFsQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIHBpY2ssXHJcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEgfSBmcm9tICcuL3R5cGVzJ1xyXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBHcm91cEludmFsaWRDb3Vwb25FcnJvciwgSW52YWxpZENvdXBvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dFN1YnNjcmlwdGlvbihcclxuICAgIGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhLFxyXG4gICk6IFByb21pc2U8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcclxuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuY3JlYXRlKHtcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gICAgICAuLi5DaGVja291dFN1YnNjcmlwdGlvbi50b0luc3RhbmNlKHBpY2soY2hlY2tvdXREYXRhLCBbJ3VzZXInLCAnc2hvcCddKSkudG9QbGFpbigpLFxyXG4gICAgfSlcclxuXHJcbiAgICBjb29raWUuc2V0KCdjaGVja291dFN1YnNjcmlwdGlvbklkJywgY2hlY2tvdXQuaWQpXHJcblxyXG4gICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0U3Vic2NyaXB0aW9uRnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dFN1YnNjcmlwdGlvbklkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZpbmFuY2lhbENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZS5jaGVja0NvdXBvbihuaWNrbmFtZSwgdXNlckVtYWlsLCBDaGVja291dFR5cGVzLlNVQlNDUklQVElPTikucGlwZShcclxuICAgICAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb3Vwb25zV2l0aFNhbWVQbGFuID0gY291cG9ucy5maWx0ZXIoKGNvdXBvbikgPT4gY2hlY2tvdXQuc3Vic2NyaXB0aW9uUGxhbi5uYW1lID09PSBjb3Vwb24ucGxhbilcclxuICAgICAgICAgICAgY29uc3QgY291cG9uc1dpdGhOb1BsYW4gPSBjb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiAhY291cG9uLnBsYW4pXHJcblxyXG4gICAgICAgICAgICBpZiAoY291cG9uc1dpdGhTYW1lUGxhbi5sZW5ndGggPiAwKSByZXR1cm4gb2YoY291cG9uc1dpdGhTYW1lUGxhbilcclxuICAgICAgICAgICAgaWYgKGNvdXBvbnNXaXRoTm9QbGFuLmxlbmd0aCA+IDApIHJldHVybiBvZihjb3Vwb25zV2l0aE5vUGxhbilcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291cG9uIHN1YnNjcmlwdGlvbiBwbGFuIGlzIGludmFsaWQuYClcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PlxyXG4gICAgICAgICAgICAhIWNoZWNrb3V0LnVzZXI/LmVtYWlsID8gdGhpcy5jaGVja0NvdXBvbnNXaXRoQ2hlY2tvdXQoY291cG9ucywgY2hlY2tvdXQpIDogb2YoY291cG9ucyksXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbWFwKCh2YWxpZGF0ZWRDb3Vwb25zKSA9PiB2YWxpZGF0ZWRDb3Vwb25zLnNoaWZ0KCkpLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQ291cG9uc1dpdGhDaGVja291dCA9IChcclxuICAgIGNvdXBvbnM6IEZpbmFuY2lhbENvdXBvbltdLFxyXG4gICAgY2hlY2tvdXQ6IENoZWNrb3V0U3Vic2NyaXB0aW9uLFxyXG4gICk6IE9ic2VydmFibGU8RmluYW5jaWFsQ291cG9uW10+ID0+XHJcbiAgICBmb3JrSm9pbihcclxuICAgICAgY291cG9ucy5tYXAoKGNvdXBvbikgPT5cclxuICAgICAgICBmcm9tKFxyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25SZXBvc2l0b3J5LmZpbmQoW3sgdXNlcjogeyBlbWFpbDogY2hlY2tvdXQudXNlcj8uZW1haWwgfSwgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSB9XSksXHJcbiAgICAgICAgKS5waXBlKG1hcCgoc3Vic2NyaXB0aW9ucykgPT4gKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pKSksXHJcbiAgICAgICksXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzdWx0cykgPT5cclxuICAgICAgICByZXN1bHRzLm1hcCgoeyBjb3Vwb24sIHN1YnNjcmlwdGlvbnMgfSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbnMuZGF0YS5sZW5ndGggPj0gKGNvdXBvbi51c2VMaW1pdCB8fCBJbmZpbml0eSkpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgYWxyZWFkeSBhcHBsaWVkJylcclxuXHJcbiAgICAgICAgICByZXR1cm4gY291cG9uXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICAgIG1hcCgodmFsaWRhdGVkQ291cG9ucykgPT4gKHtcclxuICAgICAgICB2YWxpZHM6IHZhbGlkYXRlZENvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IEZpbmFuY2lhbENvdXBvbi5pc0ZpbmFuY2lhbENvdXBvbihjb3Vwb24pKSBhcyBGaW5hbmNpYWxDb3Vwb25bXSxcclxuICAgICAgICBpbnZhbGlkczogdmFsaWRhdGVkQ291cG9ucy5maWx0ZXIoKGNvdXBvbikgPT4gY291cG9uIGluc3RhbmNlb2YgSW52YWxpZENvdXBvbkVycm9yKSBhcyBJbnZhbGlkQ291cG9uRXJyb3JbXSxcclxuICAgICAgfSkpLFxyXG4gICAgICBjb25jYXRNYXAoKHsgdmFsaWRzLCBpbnZhbGlkcyB9KSA9PlxyXG4gICAgICAgIHZhbGlkcy5sZW5ndGggPyBvZih2YWxpZHMpIDogdGhyb3dFcnJvcihuZXcgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IoaW52YWxpZHMpKSxcclxuICAgICAgKSxcclxuICAgIClcclxufVxyXG4iXX0=
1
+ import { __awaiter } from "tslib";
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { CheckoutSubscription, isNil, pick, } from '@infrab4a/connect';
4
+ import { from, of } from 'rxjs';
5
+ import cookie from 'js-cookie';
6
+ import { CouponService } from './coupon.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./coupon.service";
9
+ export class CheckoutSubscriptionService {
10
+ constructor(checkoutSubscriptionRepository, subscriptionRepository, couponService) {
11
+ this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
12
+ this.subscriptionRepository = subscriptionRepository;
13
+ this.couponService = couponService;
14
+ }
15
+ getCheckoutSubscription(checkoutData) {
16
+ const checkoutId = cookie.get('checkoutSubscriptionId');
17
+ if (!isNil(checkoutId))
18
+ return from(this.checkoutSubscriptionRepository.get({ id: checkoutId }));
19
+ return from(this.createCheckoutSubscription(checkoutData));
20
+ }
21
+ createCheckoutSubscription(checkoutData) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const checkout = yield this.checkoutSubscriptionRepository.create(Object.assign({ createdAt: new Date() }, CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain()));
24
+ cookie.set('checkoutSubscriptionId', checkout.id);
25
+ return checkout;
26
+ });
27
+ }
28
+ clearCheckoutSubscriptionFromSession() {
29
+ cookie.remove('checkoutSubscriptionId');
30
+ return of();
31
+ }
32
+ }
33
+ 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 });
34
+ CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
36
+ type: Injectable
37
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: ['CheckoutSubscriptionRepository']
40
+ }] }, { type: undefined, decorators: [{
41
+ type: Inject,
42
+ args: ['SubscriptionRepository']
43
+ }] }, { type: i1.CouponService }]; } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQ0wsb0JBQW9CLEVBSXBCLEtBQUssRUFDTCxJQUFJLEdBRUwsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQVksSUFBSSxFQUFjLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUdqRSxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUE7QUFFOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7QUFJaEQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUVtQiw4QkFBOEQsRUFDNUIsc0JBQThDLEVBQ2hGLGFBQTRCO1FBRjVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDNUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNoRixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUM1QyxDQUFDO0lBRUosdUJBQXVCLENBQUMsWUFBK0M7UUFDckUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBRXZELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFaEcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVhLDBCQUEwQixDQUN0QyxZQUErQzs7WUFFL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxpQkFDL0QsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLElBQ2xCLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFDbEYsQ0FBQTtZQUVGLE1BQU0sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBRWpELE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUM7S0FBQTtJQUVELG9DQUFvQztRQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFdkMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNiLENBQUM7O3lIQWpDVSwyQkFBMkIsa0JBRTVCLGdDQUFnQyxhQUVoQyx3QkFBd0I7NkhBSnZCLDJCQUEyQjs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgaXNOaWwsXG4gIHBpY2ssXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcblxuaW1wb3J0IHsgQ291cG9uU2VydmljZSB9IGZyb20gJy4vY291cG9uLnNlcnZpY2UnXG5pbXBvcnQgeyBHcm91cEludmFsaWRDb3Vwb25FcnJvciwgSW52YWxpZENvdXBvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblNlcnZpY2U6IENvdXBvblNlcnZpY2UsXG4gICkge31cblxuICBnZXRDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSk6IE9ic2VydmFibGU8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXG5cbiAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SWQpKSByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSlcblxuICAgIHJldHVybiBmcm9tKHRoaXMuY3JlYXRlQ2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXRTdWJzY3JpcHRpb24oXG4gICAgY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEsXG4gICk6IFByb21pc2U8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmNyZWF0ZSh7XG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAuLi5DaGVja291dFN1YnNjcmlwdGlvbi50b0luc3RhbmNlKHBpY2soY2hlY2tvdXREYXRhLCBbJ3VzZXInLCAnc2hvcCddKSkudG9QbGFpbigpLFxuICAgIH0pXG5cbiAgICBjb29raWUuc2V0KCdjaGVja291dFN1YnNjcmlwdGlvbklkJywgY2hlY2tvdXQuaWQpXG5cbiAgICByZXR1cm4gY2hlY2tvdXRcbiAgfVxuXG4gIGNsZWFyQ2hlY2tvdXRTdWJzY3JpcHRpb25Gcm9tU2Vzc2lvbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dFN1YnNjcmlwdGlvbklkJylcblxuICAgIHJldHVybiBvZigpXG4gIH1cblxuICAvLyBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCB1c2VyRW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8Q291cG9uPiB7XG4gIC8vICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxuICAvLyAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgLy8gICAgICAgdGhpcy5jb3Vwb25TZXJ2aWNlLmNoZWNrQ291cG9uKG5pY2tuYW1lLCB1c2VyRW1haWwsIENoZWNrb3V0VHlwZXMuU1VCU0NSSVBUSU9OKS5waXBlKFxuICAvLyAgICAgICAgIGNvbmNhdE1hcCgoY291cG9uczogQ291cG9uW10pID0+IHtcbiAgLy8gICAgICAgICAgIGNvbnN0IGNvdXBvbnNXaXRoU2FtZVBsYW4gPSBjb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUgPT09IGNvdXBvbi5wbGFuKVxuICAvLyAgICAgICAgICAgY29uc3QgY291cG9uc1dpdGhOb1BsYW4gPSBjb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiAhY291cG9uLnBsYW4pXG5cbiAgLy8gICAgICAgICAgIGlmIChjb3Vwb25zV2l0aFNhbWVQbGFuLmxlbmd0aCA+IDApIHJldHVybiBvZihjb3Vwb25zV2l0aFNhbWVQbGFuKVxuICAvLyAgICAgICAgICAgaWYgKGNvdXBvbnNXaXRoTm9QbGFuLmxlbmd0aCA+IDApIHJldHVybiBvZihjb3Vwb25zV2l0aE5vUGxhbilcblxuICAvLyAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3Vwb24gc3Vic2NyaXB0aW9uIHBsYW4gaXMgaW52YWxpZC5gKVxuICAvLyAgICAgICAgIH0pLFxuICAvLyAgICAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT5cbiAgLy8gICAgICAgICAgICEhY2hlY2tvdXQudXNlcj8uZW1haWwgPyB0aGlzLmNoZWNrQ291cG9uc1dpdGhDaGVja291dChjb3Vwb25zLCBjaGVja291dCkgOiBvZihjb3Vwb25zKSxcbiAgLy8gICAgICAgICApLFxuICAvLyAgICAgICAgIG1hcCgodmFsaWRhdGVkQ291cG9ucykgPT4gdmFsaWRhdGVkQ291cG9ucy5zaGlmdCgpKSxcbiAgLy8gICAgICAgKSxcbiAgLy8gICAgICksXG4gIC8vICAgKVxuICAvLyB9XG5cbiAgLy8gcHJpdmF0ZSBjaGVja0NvdXBvbnNXaXRoQ2hlY2tvdXQgPSAoXG4gIC8vICAgY291cG9uczogQ291cG9uW10sXG4gIC8vICAgY2hlY2tvdXQ6IENoZWNrb3V0U3Vic2NyaXB0aW9uLFxuICAvLyApOiBPYnNlcnZhYmxlPENvdXBvbltdPiA9PlxuICAvLyAgIGZvcmtKb2luKFxuICAvLyAgICAgY291cG9ucy5tYXAoKGNvdXBvbikgPT5cbiAgLy8gICAgICAgZnJvbShcbiAgLy8gICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZmluZChbeyB1c2VyOiB7IGVtYWlsOiBjaGVja291dC51c2VyPy5lbWFpbCB9LCBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9IH1dKSxcbiAgLy8gICAgICAgKS5waXBlKG1hcCgoc3Vic2NyaXB0aW9ucykgPT4gKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pKSksXG4gIC8vICAgICApLFxuICAvLyAgICkucGlwZShcbiAgLy8gICAgIG1hcCgocmVzdWx0cykgPT5cbiAgLy8gICAgICAgcmVzdWx0cy5tYXAoKHsgY291cG9uLCBzdWJzY3JpcHRpb25zIH0pID0+IHtcbiAgLy8gICAgICAgICBpZiAoc3Vic2NyaXB0aW9ucy5kYXRhLmxlbmd0aCA+PSAoY291cG9uLnVzZUxpbWl0IHx8IEluZmluaXR5KSlcbiAgLy8gICAgICAgICAgIHJldHVybiBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgYWxyZWFkeSBhcHBsaWVkJylcblxuICAvLyAgICAgICAgIHJldHVybiBjb3Vwb25cbiAgLy8gICAgICAgfSksXG4gIC8vICAgICApLFxuICAvLyAgICAgbWFwKCh2YWxpZGF0ZWRDb3Vwb25zKSA9PiAoe1xuICAvLyAgICAgICB2YWxpZHM6IHZhbGlkYXRlZENvdXBvbnMuZmlsdGVyKChjb3Vwb24pID0+IGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvbiksXG4gIC8vICAgICAgIGludmFsaWRzOiB2YWxpZGF0ZWRDb3Vwb25zLmZpbHRlcigoY291cG9uKSA9PiBjb3Vwb24gaW5zdGFuY2VvZiBJbnZhbGlkQ291cG9uRXJyb3IpIGFzIEludmFsaWRDb3Vwb25FcnJvcltdLFxuICAvLyAgICAgfSkpLFxuICAvLyAgICAgY29uY2F0TWFwKCh7IHZhbGlkcywgaW52YWxpZHMgfSkgPT5cbiAgLy8gICAgICAgdmFsaWRzLmxlbmd0aCA/IG9mKHZhbGlkcykgOiB0aHJvd0Vycm9yKG5ldyBHcm91cEludmFsaWRDb3Vwb25FcnJvcihpbnZhbGlkcykpLFxuICAvLyAgICAgKSxcbiAgLy8gICApXG59XG4iXX0=
@@ -1,79 +1,68 @@
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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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgRmluYW5jaWFsQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIHBpY2ssXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBVc2VyUmVwb3NpdG9yeSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IGNvb2tpZSBmcm9tICdqcy1jb29raWUnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXHJcbiAgICAgICksXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8RmluYW5jaWFsQ291cG9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5jb3Vwb25TZXJ2aWNlLmNoZWNrQ291cG9uKG5pY2tuYW1lLCBjaGVja291dC51c2VyPy5lbWFpbCwgQ2hlY2tvdXRUeXBlcy5FQ09NTUVSQ0UpLnBpcGUoXHJcbiAgICAgICAgICBjb25jYXRNYXAoKGNvdXBvbnMpID0+IG9mKGNvdXBvbnMuc2hpZnQoKSkpLFxyXG4gICAgICAgICAgY29uY2F0TWFwKChjb3Vwb24pID0+XHJcbiAgICAgICAgICAgICEhY2hlY2tvdXQudXNlcj8uZW1haWxcclxuICAgICAgICAgICAgICA/IGZyb20oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoW3sgdXNlcjogeyBlbWFpbDogY2hlY2tvdXQudXNlcj8uZW1haWwgfSwgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSB9XSksXHJcbiAgICAgICAgICAgICAgICApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgob3JkZXJzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZGVycy5kYXRhLmxlbmd0aCA+PSAoY291cG9uLnVzZUxpbWl0IHx8IEluZmluaXR5KSlcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignQ291cG9uIGlzIGFscmVhZHkgYXBwbGllZCcpKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY291cG9uKVxyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA6IG9mKGNvdXBvbiksXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogUHJvbWlzZTxDaGVja291dD4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0LnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxyXG4gICAgfSlcclxuXHJcbiAgICBjb29raWUuc2V0KCdjaGVja291dElkJywgY2hlY2tvdXQuaWQpXHJcblxyXG4gICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgfVxyXG59XHJcbiJdfQ==
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
+ applyCupon(coupon) { }
40
+ checkCoupon(nickname) {
41
+ return this.getCheckout().pipe(concatMap((checkout) => { var _a; return this.couponService.checkCoupon(nickname, (_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email, CheckoutTypes.ECOMMERCE).pipe(); }));
42
+ }
43
+ createCheckout(checkoutData) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ 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 }));
46
+ cookie.set('checkoutId', checkout.id);
47
+ return checkout;
48
+ });
49
+ }
50
+ }
51
+ 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 });
52
+ CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService, decorators: [{
54
+ type: Injectable
55
+ }], ctorParameters: function () { return [{ type: i1.CouponService }, { type: undefined, decorators: [{
56
+ type: Inject,
57
+ args: ['CheckoutRepository']
58
+ }] }, { type: undefined, decorators: [{
59
+ type: Inject,
60
+ args: ['OrderRepository']
61
+ }] }, { type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: ['UserRepository']
64
+ }] }, { type: i2.Shops, decorators: [{
65
+ type: Inject,
66
+ args: [DEFAULT_SHOP]
67
+ }] }]; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxHQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFPLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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QTtZQUVyQyxPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDO0tBQUE7OzZHQTVEVSxlQUFlLCtDQUdoQixvQkFBb0IsYUFDcEIsaUJBQWlCLGFBQ2pCLGdCQUFnQixhQUNoQixZQUFZO2lIQU5YLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBSU4sTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENoZWNrb3V0LFxuICBDaGVja291dFJlcG9zaXRvcnksXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgaXNOaWwsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE9yZGVyUmVwb3NpdG9yeSxcbiAgcGljayxcbiAgU2hvcHMsXG4gIFVzZXIsXG4gIFVzZXJSZXBvc2l0b3J5LFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCBjb29raWUgZnJvbSAnanMtY29va2llJ1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xuXG5pbXBvcnQgeyBDb3Vwb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXREYXRhIH0gZnJvbSAnLi90eXBlcydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcbiAgICBASW5qZWN0KCdDaGVja291dFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNoZWNrb3V0UmVwb3NpdG9yeTogQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICkge31cblxuICBnZXRDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXG5cbiAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SWQpKSByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSlcblxuICAgIHJldHVybiBmcm9tKHRoaXMuY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhKSlcbiAgfVxuXG4gIGdldFVzZXJCeUNoZWNrb3V0KGNoZWNrb3V0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgY2hlY2tvdXQ/LnVzZXI/LmlkID8gb2YoY2hlY2tvdXQudXNlcikgOiBmcm9tKHRoaXMudXNlclJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0LnVzZXIuaWQgfSkpLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgbGluZUl0ZW1zOiBjaGVja291dC5saW5lSXRlbXMgfSkpKVxuICB9XG5cbiAgdXBkYXRlQ2hlY2tvdXRVc2VyKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXG4gIH1cblxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29va2llLnJlbW92ZSgnY2hlY2tvdXRJZCcpXG5cbiAgICByZXR1cm4gb2YoKVxuICB9XG5cbiAgYXBwbHlDdXBvbihjb3Vwb246IENvdXBvbikge31cblxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2UuY2hlY2tDb3Vwb24obmlja25hbWUsIGNoZWNrb3V0LnVzZXI/LmVtYWlsLCBDaGVja291dFR5cGVzLkVDT01NRVJDRSkucGlwZSgpLFxuICAgICAgKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogUHJvbWlzZTxDaGVja291dD4ge1xuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5jaGVja291dFJlcG9zaXRvcnkuY3JlYXRlKHtcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIC4uLkNoZWNrb3V0LnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXG4gICAgICBzaG9wOiBjaGVja291dERhdGE/LnNob3AgfHwgdGhpcy5kZWZhdWx0U2hvcCxcbiAgICB9KVxuXG4gICAgY29va2llLnNldCgnY2hlY2tvdXRJZCcsIGNoZWNrb3V0LmlkKVxuXG4gICAgcmV0dXJuIGNoZWNrb3V0XG4gIH1cbn1cbiJdfQ==
@@ -1,70 +1,98 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFJTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBQ0wsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUt0RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0I7UUFEWixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBbUNuRCw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQUU1Rix5QkFBb0IsR0FBRyxDQUM3QixPQUFpQixFQUNqQixTQUFpQixFQUM4QyxFQUFFLENBQ2pFLE9BQU87YUFDSixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7b0JBQUUsTUFBTSxJQUFJLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLENBQUE7Z0JBQ25HLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO29CQUFFLE9BQU8sTUFBTSxDQUFBO2FBQ3pEO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxLQUEyQixDQUFBO2FBQ25DO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUNMLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsaUNBQ2hCLE9BQU8sR0FDUCxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQ2hELEVBQ0Y7WUFDRSxNQUFNLEVBQUUsRUFBdUI7WUFDL0IsUUFBUSxFQUFFLEVBQTBCO1NBQ3JDLENBQ0YsQ0FBQTtJQTVERixDQUFDO0lBRUosV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxZQUEyQjtRQUMxRSxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCO2dCQUNFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ3JELGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JFLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7YUFDOUQ7U0FDRixDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQy9GLEVBQ0QsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQy9ELEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUUvRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQXVCLEVBQUUsU0FBaUI7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLGFBQWEsQ0FBQyxhQUFhO1lBQ3BHLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQzVELElBQUksTUFBTSxDQUFDLGVBQWUsS0FBSyxhQUFhLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUztZQUMxRixNQUFNLElBQUksa0JBQWtCLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUM5RCxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsSUFBRyxJQUFJLElBQUksRUFBRTtZQUFFLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRXJGLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzs7MkdBcENVLGFBQWEsa0JBRWQsa0JBQWtCLGFBQ2xCLFlBQVk7K0dBSFgsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDaGVja291dFR5cGVzLFxyXG4gIENvdXBvbixcclxuICBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gIEV4Y2x1c2l2aXRpZXMsXHJcbiAgRmluYW5jaWFsQ291cG9uLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgU2hvcHMsXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IEdyb3VwSW52YWxpZENvdXBvbkVycm9yLCBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3Vwb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ0NvdXBvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblJlcG9zaXRvcnk6IENvdXBvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXHJcbiAgKSB7fVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCB1c2VyRW1haWw6IHN0cmluZywgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzKTogT2JzZXJ2YWJsZTxGaW5hbmNpYWxDb3Vwb25bXT4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMuY291cG9uUmVwb3NpdG9yeS5maW5kKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuaWNrbmFtZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogbmlja25hbWUgfSxcclxuICAgICAgICAgIHNob3BBdmFpbGFiaWxpdHk6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRoaXMuZGVmYXVsdFNob3AgfSxcclxuICAgICAgICAgIGNoZWNrb3V0VHlwZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogY2hlY2tvdXRUeXBlIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSksXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT5cclxuICAgICAgICBjb3Vwb25zLmNvdW50IDwgMSA/IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ0NvdXBvbiBub3QgZm91bmQnKSkgOiBvZihjb3Vwb25zLmRhdGEpLFxyXG4gICAgICApLFxyXG4gICAgICBtYXAoKGNvdXBvbnMpID0+IHRoaXMuc2VwYXJhdGVWYWxpZENvdXBvbnMoY291cG9ucywgdXNlckVtYWlsKSksXHJcbiAgICAgIG1hcCgoeyB2YWxpZHMsIGludmFsaWRzIH0pID0+IHtcclxuICAgICAgICBpZiAoIXZhbGlkcy5sZW5ndGgpIHRocm93IG5ldyBHcm91cEludmFsaWRDb3Vwb25FcnJvcihpbnZhbGlkcylcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbGlkc1xyXG4gICAgICB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNWYWxpZENvdXBvbihjb3Vwb246IEZpbmFuY2lhbENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5lbWFpbElzRnJvbUNvbGxhYm9yYXRvcih1c2VyRW1haWwpICYmIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXNlciBpcyBub3QgYSBjb2xsYWJvcmF0b3InKVxyXG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUiAmJiBjb3Vwb24ucmVjaXBpZW50ICE9PSB1c2VyRW1haWwpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBub3QgdmFsaWQgZm9yIHVzZXInKVxyXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIGV4cGlyZWQnKVxyXG5cclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXHJcblxyXG4gIHByaXZhdGUgc2VwYXJhdGVWYWxpZENvdXBvbnMgPSAoXHJcbiAgICBjb3Vwb25zOiBDb3Vwb25bXSxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICk6IHsgdmFsaWRzOiBGaW5hbmNpYWxDb3Vwb25bXTsgaW52YWxpZHM6IEludmFsaWRDb3Vwb25FcnJvcltdIH0gPT5cclxuICAgIGNvdXBvbnNcclxuICAgICAgLm1hcCgoY291cG9uKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICghRmluYW5jaWFsQ291cG9uLmlzRmluYW5jaWFsQ291cG9uKGNvdXBvbikpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0NvdXBvbiBpcyBub3QgdmFsaWQnKVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpIHJldHVybiBjb3Vwb25cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIGVycm9yIGFzIEludmFsaWRDb3Vwb25FcnJvclxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoY3VycmVudCwgY291cG9uKSA9PiAoe1xyXG4gICAgICAgICAgLi4uY3VycmVudCxcclxuICAgICAgICAgIC4uLihGaW5hbmNpYWxDb3Vwb24uaXNGaW5hbmNpYWxDb3Vwb24oY291cG9uKVxyXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxyXG4gICAgICAgICAgICA6IHsgaW52YWxpZHM6IFsuLi5jdXJyZW50LmludmFsaWRzLCBjb3Vwb25dIH0pLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbGlkczogW10gYXMgRmluYW5jaWFsQ291cG9uW10sXHJcbiAgICAgICAgICBpbnZhbGlkczogW10gYXMgSW52YWxpZENvdXBvbkVycm9yW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG59XHJcbiJdfQ==
1
+ import { __awaiter } from "tslib";
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { CheckoutTypes, Coupon, Exclusivities, NotFoundError, Shops, Where, } from '@infrab4a/connect';
4
+ import { from, throwError } from 'rxjs';
5
+ import { concatMap, map } from 'rxjs/operators';
6
+ import { DEFAULT_SHOP } from '../consts';
7
+ import { InvalidCouponError } from './errors';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@infrab4a/connect";
10
+ export class CouponService {
11
+ constructor(couponRepository, defaultShop, orderRepository) {
12
+ this.couponRepository = couponRepository;
13
+ this.defaultShop = defaultShop;
14
+ this.orderRepository = orderRepository;
15
+ this.emailIsFromCollaborator = (userEmail) => !!(userEmail === null || userEmail === void 0 ? void 0 : userEmail.match(/@b4a.com.br/g));
16
+ this.separateValidCoupons = (coupons, userEmail) => coupons
17
+ .map((coupon) => {
18
+ try {
19
+ if (!(coupon instanceof Coupon))
20
+ throw new InvalidCouponError('Coupon is not valid');
21
+ if (this.isValidCoupon(coupon, userEmail))
22
+ return coupon;
23
+ }
24
+ catch (error) {
25
+ return error;
26
+ }
27
+ })
28
+ .reduce((current, coupon) => (Object.assign(Object.assign({}, current), (coupon instanceof Coupon
29
+ ? { valids: [...current.valids, coupon] }
30
+ : { invalids: [...current.invalids, coupon] }))), {
31
+ valids: [],
32
+ invalids: [],
33
+ });
34
+ }
35
+ checkCoupon(nickname, userEmail, checkoutType, plan) {
36
+ return from(this.couponRepository.find([
37
+ {
38
+ nickname: { operator: Where.EQUALS, value: nickname },
39
+ // shopAvailability: { operator: Where.EQUALS, value: this.defaultShop },
40
+ // checkoutType: { operator: Where.EQUALS, value: checkoutType },
41
+ },
42
+ ])).pipe(concatMap((coupons) => this.checkCouponRules(coupons, checkoutType)), concatMap((coupons) => this.checkCouponUseLimit(coupons, userEmail)), map((coupon) => this.isValidCoupon(coupon, userEmail)));
43
+ }
44
+ isValidCoupon(coupon, userEmail) {
45
+ if (!this.emailIsFromCollaborator(userEmail) && coupon.exclusivityType === Exclusivities.COLLABORATORS)
46
+ throw new InvalidCouponError('User is not a collaborator');
47
+ if (coupon.exclusivityType === Exclusivities.SPECIFIC_USER && coupon.recipient !== userEmail)
48
+ throw new InvalidCouponError('Coupon is not valid for user');
49
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.expiresIn) < new Date())
50
+ throw new InvalidCouponError('Coupon is expired');
51
+ return coupon;
52
+ }
53
+ checkCouponRules(coupons, checkoutType, plan) {
54
+ // coupons.count < 1 ? return throwError(() => new NotFoundError('Coupon not found')) : return of(coupons.data);
55
+ if (coupons.count < 1)
56
+ return throwError(() => new NotFoundError('Coupon not found'));
57
+ const isInShop = coupons.data.find((c) => c.shopAvailability == Shops.ALL || c.shopAvailability == this.defaultShop);
58
+ if (!isInShop)
59
+ return throwError(() => new NotFoundError('Coupon not found'));
60
+ const isCheckoutType = coupons.data.find((c) => c.checkoutType == CheckoutTypes.ALL || c.checkoutType == checkoutType);
61
+ if (!isCheckoutType)
62
+ return throwError(() => new NotFoundError('Coupon not found'));
63
+ if (checkoutType === CheckoutTypes.ALL || checkoutType === CheckoutTypes.SUBSCRIPTION) {
64
+ //regra
65
+ }
66
+ return coupons.data;
67
+ }
68
+ checkCouponUseLimit(coupons, userEmail) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const coupon = coupons.shift();
71
+ const orders = yield this.orderRepository.find([{ coupon: { id: coupon.id } }]);
72
+ const ordersUserCoupon = orders.data.filter((o) => o.user.email == userEmail);
73
+ if (orders.data.length >= (coupon.useLimit || Infinity))
74
+ return throwError(() => new Error('Coupon já usou tudo'));
75
+ if (ordersUserCoupon.length >= coupon.useLimitPerUser)
76
+ return throwError(() => new Error('Usuário Coupon já usou tudo'));
77
+ return coupon;
78
+ });
79
+ }
80
+ }
81
+ CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
82
+ CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, decorators: [{
84
+ type: Injectable,
85
+ args: [{
86
+ providedIn: 'root',
87
+ }]
88
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
89
+ type: Inject,
90
+ args: ['CouponRepository']
91
+ }] }, { type: i1.Shops, decorators: [{
92
+ type: Inject,
93
+ args: [DEFAULT_SHOP]
94
+ }] }, { type: undefined, decorators: [{
95
+ type: Inject,
96
+ args: ['OrderRepository']
97
+ }] }]; } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLE1BQU0sRUFFTixhQUFhLEVBQ2IsYUFBYSxFQUViLEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBdUIsTUFBTSxNQUFNLENBQUE7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhDLE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUt0RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQztRQUYvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ2Isb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBcUN0RSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQUU1Rix5QkFBb0IsR0FBRyxDQUM3QixPQUFpQixFQUNqQixTQUFpQixFQUNxQyxFQUFFLENBQ3hELE9BQU87YUFDSixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLENBQUMsTUFB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QU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQTtZQUVsSCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsZUFBZTtnQkFDbkQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFBO1lBRW5FLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztLQUFBOzsyR0F2R1UsYUFBYSxrQkFFZCxrQkFBa0IsYUFDbEIsWUFBWSxhQUNaLGlCQUFpQjsrR0FKaEIsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2hlY2tvdXRUeXBlcyxcbiAgQ291cG9uLFxuICBDb3Vwb25SZXBvc2l0b3J5LFxuICBFeGNsdXNpdml0aWVzLFxuICBOb3RGb3VuZEVycm9yLFxuICBPcmRlclJlcG9zaXRvcnksXG4gIFNob3BzLFxuICBXaGVyZSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiwgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5cbmltcG9ydCB7IEdyb3VwSW52YWxpZENvdXBvbkVycm9yLCBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvdXBvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdDb3Vwb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxuICApIHt9XG5cbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcywgcGxhbj86IHN0cmluZyk6IE9ic2VydmFibGU8Q291cG9uPiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLmNvdXBvblJlcG9zaXRvcnkuZmluZChbXG4gICAgICAgIHtcbiAgICAgICAgICBuaWNrbmFtZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogbmlja25hbWUgfSxcbiAgICAgICAgICAvLyBzaG9wQXZhaWxhYmlsaXR5OiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0aGlzLmRlZmF1bHRTaG9wIH0sXG4gICAgICAgICAgLy8gY2hlY2tvdXRUeXBlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBjaGVja291dFR5cGUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT4gdGhpcy5jaGVja0NvdXBvblJ1bGVzKGNvdXBvbnMsIGNoZWNrb3V0VHlwZSkpLFxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zOiBDb3Vwb25bXSkgPT4gdGhpcy5jaGVja0NvdXBvblVzZUxpbWl0KGNvdXBvbnMsIHVzZXJFbWFpbCkpLFxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSksXG4gICAgICAvLyBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiBjb3Vwb24pXG5cbiAgICAgIC8vIG1hcCgoY291cG9ucykgPT4gdGhpcy5zZXBhcmF0ZVZhbGlkQ291cG9ucyhjb3Vwb25zLCB1c2VyRW1haWwpKSxcbiAgICAgIC8vIG1hcCgoeyB2YWxpZHMsIGludmFsaWRzIH0pID0+IHtcbiAgICAgIC8vICAgaWYgKCF2YWxpZHMubGVuZ3RoKSB0aHJvdyBuZXcgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IoaW52YWxpZHMpXG5cbiAgICAgIC8vICAgcmV0dXJuIHZhbGlkc1xuICAgICAgLy8gfSksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkQ291cG9uKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IENvdXBvbiB7XG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXJFbWFpbCkgJiYgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5DT0xMQUJPUkFUT1JTKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXNlciBpcyBub3QgYSBjb2xsYWJvcmF0b3InKVxuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnJlY2lwaWVudCAhPT0gdXNlckVtYWlsKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIG5vdCB2YWxpZCBmb3IgdXNlcicpXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ291cG9uIGlzIGV4cGlyZWQnKVxuXG4gICAgcmV0dXJuIGNvdXBvblxuICB9XG5cbiAgcHJpdmF0ZSBlbWFpbElzRnJvbUNvbGxhYm9yYXRvciA9ICh1c2VyRW1haWw6IHN0cmluZyk6IGJvb2xlYW4gPT4gISF1c2VyRW1haWw/Lm1hdGNoKC9AYjRhLmNvbS5ici9nKVxuXG4gIHByaXZhdGUgc2VwYXJhdGVWYWxpZENvdXBvbnMgPSAoXG4gICAgY291cG9uczogQ291cG9uW10sXG4gICAgdXNlckVtYWlsOiBzdHJpbmcsXG4gICk6IHsgdmFsaWRzOiBDb3Vwb25bXTsgaW52YWxpZHM6IEludmFsaWRDb3Vwb25FcnJvcltdIH0gPT5cbiAgICBjb3Vwb25zXG4gICAgICAubWFwKChjb3Vwb24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIShjb3Vwb24gaW5zdGFuY2VvZiBDb3Vwb24pKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDb3Vwb24gaXMgbm90IHZhbGlkJylcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSkgcmV0dXJuIGNvdXBvblxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvciBhcyBJbnZhbGlkQ291cG9uRXJyb3JcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChjdXJyZW50LCBjb3Vwb24pID0+ICh7XG4gICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAuLi4oY291cG9uIGluc3RhbmNlb2YgQ291cG9uXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxuICAgICAgICAgICAgOiB7IGludmFsaWRzOiBbLi4uY3VycmVudC5pbnZhbGlkcywgY291cG9uXSB9KSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICB2YWxpZHM6IFtdIGFzIENvdXBvbltdLFxuICAgICAgICAgIGludmFsaWRzOiBbXSBhcyBJbnZhbGlkQ291cG9uRXJyb3JbXSxcbiAgICAgICAgfSxcbiAgICAgIClcblxuICBwcml2YXRlIGNoZWNrQ291cG9uUnVsZXMoY291cG9ucywgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLCBwbGFuPzogc3RyaW5nKSB7XG4gICAgLy8gY291cG9ucy5jb3VudCA8IDEgPyByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignQ291cG9uIG5vdCBmb3VuZCcpKSA6IHJldHVybiBvZihjb3Vwb25zLmRhdGEpO1xuICAgIGlmIChjb3Vwb25zLmNvdW50IDwgMSkgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ0NvdXBvbiBub3QgZm91bmQnKSlcblxuICAgIGNvbnN0IGlzSW5TaG9wID0gY291cG9ucy5kYXRhLmZpbmQoKGMpID0+IGMuc2hvcEF2YWlsYWJpbGl0eSA9PSBTaG9wcy5BTEwgfHwgYy5zaG9wQXZhaWxhYmlsaXR5ID09IHRoaXMuZGVmYXVsdFNob3ApXG5cbiAgICBpZiAoIWlzSW5TaG9wKSByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignQ291cG9uIG5vdCBmb3VuZCcpKVxuXG4gICAgY29uc3QgaXNDaGVja291dFR5cGUgPSBjb3Vwb25zLmRhdGEuZmluZChcbiAgICAgIChjKSA9PiBjLmNoZWNrb3V0VHlwZSA9PSBDaGVja291dFR5cGVzLkFMTCB8fCBjLmNoZWNrb3V0VHlwZSA9PSBjaGVja291dFR5cGUsXG4gICAgKVxuXG4gICAgaWYgKCFpc0NoZWNrb3V0VHlwZSkgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ0NvdXBvbiBub3QgZm91bmQnKSlcblxuICAgIGlmIChjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pIHtcbiAgICAgIC8vcmVncmFcbiAgICB9XG5cbiAgICByZXR1cm4gY291cG9ucy5kYXRhXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrQ291cG9uVXNlTGltaXQoY291cG9uczogQ291cG9uW10sIHVzZXJFbWFpbDogc3RyaW5nKSB7XG4gICAgY29uc3QgY291cG9uOiBDb3Vwb24gPSBjb3Vwb25zLnNoaWZ0KClcblxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoW3sgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSB9XSlcblxuICAgIGNvbnN0IG9yZGVyc1VzZXJDb3Vwb24gPSBvcmRlcnMuZGF0YS5maWx0ZXIoKG8pID0+IG8udXNlci5lbWFpbCA9PSB1c2VyRW1haWwpXG5cbiAgICBpZiAob3JkZXJzLmRhdGEubGVuZ3RoID49IChjb3Vwb24udXNlTGltaXQgfHwgSW5maW5pdHkpKSByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0NvdXBvbiBqw6EgdXNvdSB0dWRvJykpXG5cbiAgICBpZiAob3JkZXJzVXNlckNvdXBvbi5sZW5ndGggPj0gY291cG9uLnVzZUxpbWl0UGVyVXNlcilcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignVXN1w6FyaW8gQ291cG9uIGrDoSB1c291IHR1ZG8nKSlcblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxufVxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW52YWxpZC1jb3Vwb24uZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9ncm91cC1pbnZhbGlkLWNvdXBvbi5lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFxQixNQUE0QjtRQUMvQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQURkLFdBQU0sR0FBTixNQUFNLENBQXNCO0lBRWpELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vaW52YWxpZC1jb3Vwb24uZXJyb3InXHJcblxyXG5leHBvcnQgY2xhc3MgR3JvdXBJbnZhbGlkQ291cG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZXJyb3JzOiBJbnZhbGlkQ291cG9uRXJyb3JbXSkge1xyXG4gICAgc3VwZXIoJ01hbnkgY291cG9uIGVycm9ycyB0aHJvdycpXHJcbiAgfVxyXG59XHJcbiJdfQ==
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=
@@ -1,3 +1,3 @@
1
- export * from './invalid-coupon.error';
2
- export * from './group-invalid-coupon.error';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsOEJBQThCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludmFsaWQtY291cG9uLmVycm9yJ1xyXG5leHBvcnQgKiBmcm9tICcuL2dyb3VwLWludmFsaWQtY291cG9uLmVycm9yJ1xyXG4iXX0=
1
+ export * from './invalid-coupon.error';
2
+ export * from './group-invalid-coupon.error';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsOEJBQThCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludmFsaWQtY291cG9uLmVycm9yJ1xuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1pbnZhbGlkLWNvdXBvbi5lcnJvcidcbiJdfQ==