mts-booking-library 1.2.32 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/booking/booking.d.ts +2 -1
- package/lib/booking/booking.js +33 -44
- package/lib/booking/journeyBooking.d.ts +46 -0
- package/lib/booking/journeyBooking.js +77 -88
- package/lib/booking/serviceBooking.d.ts +46 -0
- package/lib/booking/serviceBooking.js +74 -85
- package/lib/booking/subscriptionBooking.d.ts +46 -0
- package/lib/booking/subscriptionBooking.js +75 -86
- package/lib/booking/tplBooking.d.ts +168 -0
- package/lib/booking/tplBooking.js +705 -0
- package/lib/config.js +5 -5
- package/lib/index.d.ts +4 -0
- package/lib/index.js +3 -1
- package/lib/mtsStorage.d.ts +44 -0
- package/lib/mtsStorage.js +48 -0
- package/lib/types/common/City.d.ts +17 -0
- package/lib/types/common/City.js +2 -0
- package/lib/types/common/Tariffs.d.ts +9 -3
- package/lib/types/journeys/JourneyInfo.d.ts +3 -1
- package/lib/types/tpl/GetTariffsResponse.d.ts +12 -0
- package/lib/types/tpl/GetTariffsResponse.js +2 -0
- package/lib/types/tpl/SuperArea.d.ts +13 -0
- package/lib/types/tpl/SuperArea.js +2 -0
- package/lib/types/tpl/TplCart.d.ts +41 -0
- package/lib/types/tpl/TplCart.js +2 -0
- package/lib/utils/apiCall.js +26 -26
- package/package.json +8 -6
@@ -73,6 +73,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
73
73
|
Object.defineProperty(exports, "__esModule", { value: true });
|
74
74
|
exports.SubscriptionBooking = void 0;
|
75
75
|
var config_1 = require("../config");
|
76
|
+
var mtsStorage_1 = require("../mtsStorage");
|
76
77
|
var ErrorResponse_1 = require("../types/ErrorResponse");
|
77
78
|
var Reduction_1 = require("../types/common/Reduction");
|
78
79
|
var processBookingSteps_1 = require("../utils/processBookingSteps");
|
@@ -95,12 +96,18 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
95
96
|
// Call Booking constructor
|
96
97
|
var _this = _super.call(this, env, sub_key, booking_1.Booking.BookingTypes.MLP_SUBSCRIPTION, debug, language, access_token, sellerId, resellerId) || this;
|
97
98
|
// Set cartId
|
98
|
-
var cartId =
|
99
|
+
var cartId = _this.getStorage().getState().cartId;
|
99
100
|
if (cartId) {
|
100
|
-
_this.cartId =
|
101
|
+
_this.cartId = cartId;
|
101
102
|
}
|
102
103
|
return _this;
|
103
104
|
}
|
105
|
+
SubscriptionBooking.prototype.getStorage = function () {
|
106
|
+
if (this.config.ENV !== config_1.MTSEnvs.TEST) {
|
107
|
+
return (0, mtsStorage_1.useMtsBookingState)();
|
108
|
+
}
|
109
|
+
return (0, mtsStorage_1.useTestState)();
|
110
|
+
};
|
104
111
|
SubscriptionBooking.prototype.getCart = function () {
|
105
112
|
return this.cart;
|
106
113
|
};
|
@@ -110,11 +117,11 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
110
117
|
this.bookingStepsToStatus = new Map();
|
111
118
|
this.bookingDueDate = undefined;
|
112
119
|
try {
|
113
|
-
|
120
|
+
this.getStorage().getState().updateCartId(undefined);
|
114
121
|
}
|
115
122
|
catch (e) {
|
116
123
|
if (this.config.ENV !== config_1.MTSEnvs.TEST) {
|
117
|
-
throw new Error("Error while deleting cartId from
|
124
|
+
throw new Error("Error while deleting cartId from storage");
|
118
125
|
}
|
119
126
|
console.log(e);
|
120
127
|
}
|
@@ -154,7 +161,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
154
161
|
var url;
|
155
162
|
var _this = this;
|
156
163
|
return __generator(this, function (_a) {
|
157
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
164
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart?").concat(new URLSearchParams({ cartId: cartId.toString() }));
|
158
165
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
159
166
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
160
167
|
_this.resetBooking();
|
@@ -183,7 +190,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
183
190
|
if (!this.cart || !this.cartId) {
|
184
191
|
throw Error("Cart is not initialized yet");
|
185
192
|
}
|
186
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
193
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({ cartId: this.cartId.toString() }));
|
187
194
|
return [2 /*return*/, this.callDeleteApi(url).then(function (response) {
|
188
195
|
_this.resetBooking();
|
189
196
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
@@ -199,7 +206,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
199
206
|
return __awaiter(this, void 0, void 0, function () {
|
200
207
|
var url;
|
201
208
|
return __generator(this, function (_a) {
|
202
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
209
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/departures?");
|
203
210
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
204
211
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.departures;
|
205
212
|
})];
|
@@ -216,7 +223,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
216
223
|
var searchParams, url;
|
217
224
|
return __generator(this, function (_a) {
|
218
225
|
searchParams = new URLSearchParams({ departureStopName: departureStopName });
|
219
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
226
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/destinations?").concat(searchParams);
|
220
227
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
221
228
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.destinations;
|
222
229
|
})];
|
@@ -238,7 +245,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
238
245
|
departureStopName: departureStopName,
|
239
246
|
destinationStopName: destinationStopName
|
240
247
|
});
|
241
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
248
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/validityTypes?").concat(searchParams);
|
242
249
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
243
250
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.validityTypes;
|
244
251
|
})];
|
@@ -263,7 +270,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
263
270
|
destinationStopName: destinationStopName,
|
264
271
|
validityType: validityType
|
265
272
|
});
|
266
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
273
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/search?").concat(searchParams);
|
267
274
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
268
275
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.subscriptions;
|
269
276
|
})];
|
@@ -290,7 +297,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
290
297
|
numberOfPassengers: request.numberOfPassengers.toString(),
|
291
298
|
validityType: request.validityType
|
292
299
|
});
|
293
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
300
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/availabilities?").concat(searchParams);
|
294
301
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
295
302
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
296
303
|
})];
|
@@ -307,18 +314,18 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
307
314
|
var url;
|
308
315
|
var _this = this;
|
309
316
|
return __generator(this, function (_a) {
|
310
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
317
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/subscriptions/cart");
|
311
318
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
312
319
|
// Check for errors
|
313
320
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
314
|
-
// If there was an error, reset cartId and remove it from the
|
321
|
+
// If there was an error, reset cartId and remove it from the mts-storage
|
315
322
|
_this.resetBooking();
|
316
323
|
return response;
|
317
324
|
}
|
318
325
|
_this.cart = response.cart;
|
319
326
|
_this.cartId = response.cart.id;
|
320
|
-
// Save the cartId in the
|
321
|
-
|
327
|
+
// Save the cartId in the mts-storage
|
328
|
+
_this.getStorage().getState().updateCartId(response.cart.id);
|
322
329
|
// Fill the booking process status
|
323
330
|
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
324
331
|
_this.bookingDueDate = new Date(response.cart.bookingDueDate);
|
@@ -346,7 +353,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
346
353
|
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
347
354
|
throw Error("The status of the cart does not allow to call this API");
|
348
355
|
}
|
349
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
356
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cart.id, "/details?");
|
350
357
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
351
358
|
// Check for errors
|
352
359
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -405,7 +412,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
405
412
|
throw Error("At least one of the parameters linkavelCardNumber and linkavelCardPhoneNumber must be set");
|
406
413
|
}
|
407
414
|
searchParams = new URLSearchParams(__assign(__assign({}, (linkavelCardNumber && { linkavelCardNumber: linkavelCardNumber })), (linkavelCardPhoneNumber && { linkavelCardPhoneNumber: linkavelCardPhoneNumber })));
|
408
|
-
url = "".concat(this.config.API_ENDPOINT, "/buyers?").concat(searchParams);
|
415
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_resources/buyers?").concat(searchParams);
|
409
416
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
410
417
|
// Check for errors
|
411
418
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -442,7 +449,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
442
449
|
});
|
443
450
|
request.passengers[passengerIndex].tripsToTariffs = tripsToTariffsToJson;
|
444
451
|
});
|
445
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
452
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cart.id, "/details");
|
446
453
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
447
454
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
448
455
|
return response;
|
@@ -461,12 +468,12 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
461
468
|
* @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
|
462
469
|
*/
|
463
470
|
SubscriptionBooking.prototype.addReduction = function (request) {
|
464
|
-
var _a;
|
465
471
|
return __awaiter(this, void 0, void 0, function () {
|
466
|
-
var discountsStep,
|
472
|
+
var discountsStep, _i, _a, step, url;
|
467
473
|
var _this = this;
|
468
|
-
|
469
|
-
|
474
|
+
var _b;
|
475
|
+
return __generator(this, function (_c) {
|
476
|
+
switch (_c.label) {
|
470
477
|
case 0:
|
471
478
|
// First check that it is possible to call this API
|
472
479
|
if (!this.cartId || this.cartId === 0) {
|
@@ -476,22 +483,16 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
476
483
|
if (!discountsStep)
|
477
484
|
throw Error("Booking step not found!");
|
478
485
|
if (!!discountsStep[0]) return [3 /*break*/, 5];
|
479
|
-
|
480
|
-
_c =
|
481
|
-
for (_d in _b)
|
482
|
-
_c.push(_d);
|
483
|
-
_i = 0;
|
484
|
-
_e.label = 1;
|
486
|
+
_i = 0, _a = [booking_1.Booking.BookingSteps.SEATS_SELECTION, booking_1.Booking.BookingSteps.EXTRAS];
|
487
|
+
_c.label = 1;
|
485
488
|
case 1:
|
486
|
-
if (!(_i <
|
487
|
-
|
488
|
-
if (
|
489
|
-
step = _d;
|
490
|
-
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
489
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
490
|
+
step = _a[_i];
|
491
|
+
if (!!((_b = this.bookingStepsToStatus.get(step)) !== null && _b !== void 0 ? _b : [false])[0]) return [3 /*break*/, 3];
|
491
492
|
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
492
493
|
case 2:
|
493
|
-
|
494
|
-
|
494
|
+
_c.sent();
|
495
|
+
_c.label = 3;
|
495
496
|
case 3:
|
496
497
|
_i++;
|
497
498
|
return [3 /*break*/, 1];
|
@@ -501,9 +502,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
501
502
|
if (!discountsStep || !discountsStep[0]) {
|
502
503
|
throw Error("The status of the cart does not allow to call this API");
|
503
504
|
}
|
504
|
-
|
505
|
+
_c.label = 5;
|
505
506
|
case 5:
|
506
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
507
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cartId, "/payment/reduction");
|
507
508
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
508
509
|
var _a, _b;
|
509
510
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -540,7 +541,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
540
541
|
throw Error("The status of the cart does not allow to call this API");
|
541
542
|
}
|
542
543
|
queryParams = new URLSearchParams({ tripId: tripId.toString() });
|
543
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
544
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cartId, "/payment/reduction?").concat(queryParams);
|
544
545
|
return [2 /*return*/, this.callDeleteApi(url).then(function (response) {
|
545
546
|
var _a, _b, _c;
|
546
547
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -565,49 +566,43 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
565
566
|
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
566
567
|
*/
|
567
568
|
SubscriptionBooking.prototype.useWallet = function () {
|
568
|
-
var _a;
|
569
569
|
return __awaiter(this, void 0, void 0, function () {
|
570
|
-
var
|
570
|
+
var issueStep, _i, _a, step, url;
|
571
571
|
var _this = this;
|
572
|
-
|
573
|
-
|
572
|
+
var _b;
|
573
|
+
return __generator(this, function (_c) {
|
574
|
+
switch (_c.label) {
|
574
575
|
case 0:
|
575
576
|
// First check that it is possible to call this API
|
576
577
|
if (!this.cartId || this.cartId === 0) {
|
577
578
|
throw Error("Cart is not initialized yet");
|
578
579
|
}
|
579
|
-
|
580
|
-
if (!
|
581
|
-
throw Error("Booking step not found!");
|
582
|
-
if (!!
|
583
|
-
|
584
|
-
_c =
|
585
|
-
for (_d in _b)
|
586
|
-
_c.push(_d);
|
587
|
-
_i = 0;
|
588
|
-
_e.label = 1;
|
580
|
+
issueStep = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.ISSUE);
|
581
|
+
if (!issueStep)
|
582
|
+
throw Error("Booking step: ".concat(booking_1.Booking.BookingSteps.ISSUE, " not found!"));
|
583
|
+
if (!!issueStep[0]) return [3 /*break*/, 5];
|
584
|
+
_i = 0, _a = [booking_1.Booking.BookingSteps.SEATS_SELECTION, booking_1.Booking.BookingSteps.EXTRAS, booking_1.Booking.BookingSteps.DISCOUNTS];
|
585
|
+
_c.label = 1;
|
589
586
|
case 1:
|
590
|
-
if (!(_i <
|
591
|
-
|
592
|
-
if (
|
593
|
-
step = _d;
|
594
|
-
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
587
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
588
|
+
step = _a[_i];
|
589
|
+
if (!!((_b = this.bookingStepsToStatus.get(step)) !== null && _b !== void 0 ? _b : [false])[0]) return [3 /*break*/, 3];
|
595
590
|
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
596
591
|
case 2:
|
597
|
-
|
598
|
-
|
592
|
+
_c.sent();
|
593
|
+
_c.label = 3;
|
599
594
|
case 3:
|
600
595
|
_i++;
|
601
596
|
return [3 /*break*/, 1];
|
602
597
|
case 4:
|
603
598
|
// Check again if the discounts step is accessible
|
604
|
-
|
605
|
-
if (!
|
606
|
-
throw Error("The status of the cart does not allow to call
|
599
|
+
issueStep = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.ISSUE);
|
600
|
+
if (!issueStep || !issueStep[0]) {
|
601
|
+
throw Error("The status of the cart does not allow to call the API: booking/cart/".concat(this.cartId, "/payment/wallet"));
|
607
602
|
}
|
608
|
-
|
603
|
+
_c.label = 5;
|
609
604
|
case 5:
|
610
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
605
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cartId, "/payment/wallet");
|
611
606
|
return [2 /*return*/, this.callPostApi(url, {}).then(function (response) {
|
612
607
|
var _a, _b;
|
613
608
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -638,7 +633,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
638
633
|
if (!this.cartId || this.cartId === 0) {
|
639
634
|
throw Error("Cart is not initialized yet");
|
640
635
|
}
|
641
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
636
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cartId, "/payment/wallet");
|
642
637
|
return [2 /*return*/, this.callDeleteApi(url).then(function (response) {
|
643
638
|
var _a, _b, _c;
|
644
639
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -662,12 +657,12 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
662
657
|
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
663
658
|
*/
|
664
659
|
SubscriptionBooking.prototype.useVoucher = function (voucherCode) {
|
665
|
-
var _a;
|
666
660
|
return __awaiter(this, void 0, void 0, function () {
|
667
|
-
var discountsStep,
|
661
|
+
var discountsStep, _i, _a, step, url;
|
668
662
|
var _this = this;
|
669
|
-
|
670
|
-
|
663
|
+
var _b;
|
664
|
+
return __generator(this, function (_c) {
|
665
|
+
switch (_c.label) {
|
671
666
|
case 0:
|
672
667
|
// First check that it is possible to call this API
|
673
668
|
if (!this.cartId || this.cartId === 0) {
|
@@ -677,22 +672,16 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
677
672
|
if (!discountsStep)
|
678
673
|
throw Error("Booking step not found!");
|
679
674
|
if (!!discountsStep[0]) return [3 /*break*/, 5];
|
680
|
-
|
681
|
-
_c =
|
682
|
-
for (_d in _b)
|
683
|
-
_c.push(_d);
|
684
|
-
_i = 0;
|
685
|
-
_e.label = 1;
|
675
|
+
_i = 0, _a = [booking_1.Booking.BookingSteps.SEATS_SELECTION, booking_1.Booking.BookingSteps.EXTRAS];
|
676
|
+
_c.label = 1;
|
686
677
|
case 1:
|
687
|
-
if (!(_i <
|
688
|
-
|
689
|
-
if (
|
690
|
-
step = _d;
|
691
|
-
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
678
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
679
|
+
step = _a[_i];
|
680
|
+
if (!!((_b = this.bookingStepsToStatus.get(step)) !== null && _b !== void 0 ? _b : [false])[0]) return [3 /*break*/, 3];
|
692
681
|
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
693
682
|
case 2:
|
694
|
-
|
695
|
-
|
683
|
+
_c.sent();
|
684
|
+
_c.label = 3;
|
696
685
|
case 3:
|
697
686
|
_i++;
|
698
687
|
return [3 /*break*/, 1];
|
@@ -702,9 +691,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
702
691
|
if (!discountsStep || !discountsStep[0]) {
|
703
692
|
throw Error("The status of the cart does not allow to call this API");
|
704
693
|
}
|
705
|
-
|
694
|
+
_c.label = 5;
|
706
695
|
case 5:
|
707
|
-
url = "".concat(this.config.API_ENDPOINT, "/
|
696
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/cart/").concat(this.cartId, "/payment/voucher");
|
708
697
|
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
|
709
698
|
var _a, _b;
|
710
699
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -743,10 +732,10 @@ exports.SubscriptionBooking = SubscriptionBooking;
|
|
743
732
|
case 3: return [2 /*return*/, booking];
|
744
733
|
case 4:
|
745
734
|
error_1 = _a.sent();
|
746
|
-
// Check if the error is due to an expired cart. In this case, delete the cartId from the
|
735
|
+
// Check if the error is due to an expired cart. In this case, delete the cartId from the mts-storage
|
747
736
|
// This error can occur when the user refreshes the page and the cart has expired
|
748
737
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(error_1) && error_1.mtsCode === 40053) {
|
749
|
-
|
738
|
+
booking.getStorage().getState().updateCartId(undefined);
|
750
739
|
booking.cartId = undefined;
|
751
740
|
return [2 /*return*/, booking];
|
752
741
|
}
|
@@ -0,0 +1,168 @@
|
|
1
|
+
import { MTSEnvs } from "../config";
|
2
|
+
import { ErrorResponse } from "../types/ErrorResponse";
|
3
|
+
import { City } from "../types/common/City";
|
4
|
+
import { GetBuyerPassengersDetailsResponse, Person } from "../types/common/Person";
|
5
|
+
import { AddReductionRequest } from "../types/common/Reduction";
|
6
|
+
import { TermsType } from "../types/common/Tariffs";
|
7
|
+
import { GetTariffsResponse } from "../types/tpl/GetTariffsResponse";
|
8
|
+
import { SuperArea } from "../types/tpl/SuperArea";
|
9
|
+
import { TplCart } from "../types/tpl/TplCart";
|
10
|
+
import { Booking } from "./booking";
|
11
|
+
export declare class TplBooking extends Booking {
|
12
|
+
private cart?;
|
13
|
+
/**
|
14
|
+
* This is the constructor of the TplBooking class.
|
15
|
+
* @param {MTSEnvs} env The environment in which the app is running. Can be "DEV", "STAGING" or "PROD"
|
16
|
+
* @param {string} sub_key The subscription key for using the APIs
|
17
|
+
* @param {boolean} [debug=false] If true, the app will run in debug mode (meaning that will print requests and responses in the console)
|
18
|
+
* @param {string} [language=Booking.Languages.EN] The language in which the app is running. Can be "it", "en", "fr", "de" or "es"
|
19
|
+
* @param {string} [access_token=undefined] The access token for calling MTS APIs
|
20
|
+
* @param {number} [sellerId=undefined] The id of the seller. If not set, it will return the results for all sellers
|
21
|
+
* @param {number} [resellerId=undefined] The id of the reseller.
|
22
|
+
*/
|
23
|
+
constructor(env: MTSEnvs, sub_key: string, debug?: boolean, language?: string, access_token?: string, sellerId?: number, resellerId?: number);
|
24
|
+
getStorage(): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<{
|
25
|
+
cartId: number | undefined;
|
26
|
+
} & {
|
27
|
+
updateCartId: (cartId: number | undefined) => void;
|
28
|
+
resetState: () => void;
|
29
|
+
}>, "persist"> & {
|
30
|
+
persist: {
|
31
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<{
|
32
|
+
cartId: number | undefined;
|
33
|
+
} & {
|
34
|
+
updateCartId: (cartId: number | undefined) => void;
|
35
|
+
resetState: () => void;
|
36
|
+
}, {
|
37
|
+
cartId: number | undefined;
|
38
|
+
} & {
|
39
|
+
updateCartId: (cartId: number | undefined) => void;
|
40
|
+
resetState: () => void;
|
41
|
+
}>>) => void;
|
42
|
+
clearStorage: () => void;
|
43
|
+
rehydrate: () => void | Promise<void>;
|
44
|
+
hasHydrated: () => boolean;
|
45
|
+
onHydrate: (fn: (state: {
|
46
|
+
cartId: number | undefined;
|
47
|
+
} & {
|
48
|
+
updateCartId: (cartId: number | undefined) => void;
|
49
|
+
resetState: () => void;
|
50
|
+
}) => void) => () => void;
|
51
|
+
onFinishHydration: (fn: (state: {
|
52
|
+
cartId: number | undefined;
|
53
|
+
} & {
|
54
|
+
updateCartId: (cartId: number | undefined) => void;
|
55
|
+
resetState: () => void;
|
56
|
+
}) => void) => () => void;
|
57
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<{
|
58
|
+
cartId: number | undefined;
|
59
|
+
} & {
|
60
|
+
updateCartId: (cartId: number | undefined) => void;
|
61
|
+
resetState: () => void;
|
62
|
+
}, {
|
63
|
+
cartId: number | undefined;
|
64
|
+
} & {
|
65
|
+
updateCartId: (cartId: number | undefined) => void;
|
66
|
+
resetState: () => void;
|
67
|
+
}>>;
|
68
|
+
};
|
69
|
+
}>;
|
70
|
+
getCart(): undefined | TplCart;
|
71
|
+
resetBooking(): void;
|
72
|
+
fetchAndSetCart(cartId: number): Promise<void>;
|
73
|
+
fetchCart(cartId: number): Promise<TplCart>;
|
74
|
+
/**
|
75
|
+
* This method allows to delete a cart, thus allowing the user to exit from the booking process.
|
76
|
+
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise. Note that also in case of error, all
|
77
|
+
* data will be deleted.
|
78
|
+
*/
|
79
|
+
deleteCart(): Promise<ErrorResponse | any>;
|
80
|
+
/**
|
81
|
+
* This method allows to get the list of cities where it is possible to book a TPL service.
|
82
|
+
* @returns An array of {@link City} objects representing the cities where it is possible to book a TPL service
|
83
|
+
* if the call is successful, an {@link ErrorResponse} object otherwise.
|
84
|
+
*/
|
85
|
+
getCities(): Promise<ErrorResponse | City[]>;
|
86
|
+
/**
|
87
|
+
* This method fetches the list of super areas for a given city. A super area is a region of the city in which
|
88
|
+
* the TPL service is available at a certain price.
|
89
|
+
* @returns An array of {@link SuperArea} objects representing the SuperAreas if the call is successful, an {@link ErrorResponse} object otherwise.
|
90
|
+
*/
|
91
|
+
getSuperAreas(cityId: number): Promise<ErrorResponse | SuperArea[]>;
|
92
|
+
/**
|
93
|
+
* This method fetches the list of terms types in a given super area.
|
94
|
+
* @returns An array of {@link TermsType} objects representing the available terms types if the call is successful, an {@link ErrorResponse} object otherwise.
|
95
|
+
*/
|
96
|
+
getTermsTypes(superAreaId: number): Promise<ErrorResponse | TermsType[]>;
|
97
|
+
/**
|
98
|
+
* This method fetches the list of available tariffs for the selected terms type in a given super area.
|
99
|
+
* @returns An array of {@link GetTariffsResponse} if the call is successful, an {@link ErrorResponse} object otherwise.
|
100
|
+
*/
|
101
|
+
getTariffs(superAreaId: number, termsTypeId: number): Promise<ErrorResponse | GetTariffsResponse>;
|
102
|
+
/**
|
103
|
+
* This method allows to create a TPL cart.
|
104
|
+
* @param {Map<number, number>} tariffIdToQuantity A map that associates a tariff id (the one chosen by the user) to the number of tickets to buy for that tariff.
|
105
|
+
* @param {Booking.Currencies} currency The currency in which the ticket is priced.
|
106
|
+
* @param {string} [startDate] The start date of the ticket. This is optional and should be used only for subscriptions.
|
107
|
+
*/
|
108
|
+
createTplCart(tariffIdToQuantity: Map<number, number>, currency: Booking.Currencies, startDate?: string): Promise<ErrorResponse | TplCart>;
|
109
|
+
/**
|
110
|
+
* @description This method shall be called when the user wants to retrieve information about the buyer and the passengers.
|
111
|
+
* @returns An object of type {@link GetBuyerPassengersDetailsResponse} containing the buyer and the passengers information,
|
112
|
+
* as well as a list of the available tariffs for each trip.
|
113
|
+
*/
|
114
|
+
getBuyerPassengersDetails(): Promise<ErrorResponse | GetBuyerPassengersDetailsResponse>;
|
115
|
+
/**
|
116
|
+
* @description This method shall be called when the user wants to retrieve information about an esisting buyer.
|
117
|
+
* @param {string} [linkavelCardNumber=undefined] The linkavel card number of the buyer. This parameter is required if linkavelCardPhoneNumber is not set.
|
118
|
+
* A linkavelCardNumber is a string of 9 digits.
|
119
|
+
* @param {string} [linkavelCardPhoneNumber=undefined] The linkavel card phone number of the buyer. This parameter is required if linkavelCardNumber is not set.
|
120
|
+
* @returns An object of type {@link GetBuyerPassengersDetailsResponse} containing the buyer and the passengers information,
|
121
|
+
* as well as a list of the available tariffs for each trip.
|
122
|
+
*/
|
123
|
+
getBuyerFromLinkavelCard(linkavelCardNumber?: string, linkavelCardPhoneNumber?: string): Promise<ErrorResponse | Person>;
|
124
|
+
/**
|
125
|
+
* @description This method shall be called when the user wants to update the buyer information.
|
126
|
+
* @param {Person | null} buyerDetails The object containing the buyer information.
|
127
|
+
* It should be null if the buyer data cannot be specified (see {@link GetBuyerPassengersDetailsResponse.buyerDataStatus}).
|
128
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
129
|
+
*/
|
130
|
+
updateBuyerPassengersDetails(buyerDetails: Person | null): Promise<ErrorResponse | boolean>;
|
131
|
+
/**
|
132
|
+
* @description This method allows to add a reduction to the whole cart or to a single trip in the cart.
|
133
|
+
* @param {AddReductionRequest} request The information about the reduction to add
|
134
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
|
135
|
+
*/
|
136
|
+
addReduction(request: AddReductionRequest): Promise<ErrorResponse | boolean>;
|
137
|
+
/**
|
138
|
+
* @description This method allows to remove a reduction from the whole cart or from a single trip in the cart.
|
139
|
+
* @param tripId The id of the trip from which the reduction should be removed. If the tripId is 0, then the reduction
|
140
|
+
* will be removed from the whole cart.
|
141
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
|
142
|
+
*/
|
143
|
+
removeReduction(tripId: number): Promise<ErrorResponse | boolean>;
|
144
|
+
/**
|
145
|
+
* @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
|
146
|
+
* the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
|
147
|
+
* remaining amount with another payment method.
|
148
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
149
|
+
*/
|
150
|
+
useWallet(): Promise<ErrorResponse | boolean>;
|
151
|
+
/**
|
152
|
+
* @description This method allows to remove a waller reduction from the cart.
|
153
|
+
*
|
154
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
|
155
|
+
*/
|
156
|
+
removeWalletReduction(): Promise<ErrorResponse | boolean>;
|
157
|
+
/**
|
158
|
+
* @description This method allows the user to use a voucher to pay the cart.
|
159
|
+
* If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
|
160
|
+
* Otherwise, the user will be asked to pay the remaining amount with another payment method.
|
161
|
+
* @param {string} voucherCode The code of the voucher to use
|
162
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
163
|
+
*/
|
164
|
+
useVoucher(voucherCode: string): Promise<ErrorResponse | boolean>;
|
165
|
+
}
|
166
|
+
export declare namespace TplBooking {
|
167
|
+
const createBooking: (env: MTSEnvs, sub_key: string, debug: boolean, language: string, access_token?: string, sellerId?: number, resellerId?: number) => Promise<TplBooking>;
|
168
|
+
}
|