mts-booking-library 1.3.18 → 1.3.19
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +6 -20
- package/lib/booking/booking.d.ts +2 -0
- package/lib/booking/booking.js +3 -3
- package/lib/booking/journeyBooking.d.ts +17 -10
- package/lib/booking/journeyBooking.js +43 -27
- package/lib/booking/serviceBooking.d.ts +16 -9
- package/lib/booking/serviceBooking.js +28 -19
- package/lib/booking/subscriptionBooking.d.ts +16 -9
- package/lib/booking/subscriptionBooking.js +28 -20
- package/lib/booking/tplBooking.d.ts +16 -9
- package/lib/booking/tplBooking.js +28 -19
- package/lib/mtsStorage.d.ts +3 -1
- package/lib/mtsStorage.js +5 -2
- package/lib/types/Booking.js +1 -0
- package/lib/types/Cart.d.ts +79 -0
- package/lib/types/Details.d.ts +9 -0
- package/lib/types/Info.d.ts +7 -0
- package/lib/types/Journeys/Journey.d.ts +8 -0
- package/lib/types/Line.d.ts +6 -0
- package/lib/types/Line.js +2 -0
- package/lib/types/Person.d.ts +7 -0
- package/lib/types/Person.js +2 -0
- package/lib/types/Subscriptions/SubscriptionAvailabilities.js +2 -0
- package/lib/types/Subscriptions/SubscriptionCart.js +2 -0
- package/lib/types/Subscriptions/SubscriptionInfo.js +2 -0
- package/lib/types/Subscriptions/Subscriptions.js +2 -0
- package/lib/types/Subscriptions/Subscrptions.d.ts +12 -0
- package/lib/types/Subscriptions/Subscrptions.js +2 -0
- package/lib/types/Subscriptions/ValidityTypes.d.ts +6 -0
- package/lib/types/Subscriptions/ValidityTypes.js +10 -0
- package/lib/types/TermsAndTariffs.d.ts +21 -0
- package/lib/types/TermsAndTariffs.js +2 -0
- package/lib/types/Tours/Tour.d.ts +18 -0
- package/lib/types/Tours/Tour.js +2 -0
- package/lib/types/common/Cart.d.ts +7 -1
- package/lib/utils/apiCall.js +21 -12
- package/package.json +1 -1
- package/lib/SubscriptionBooking.js +0 -148
- package/lib/utils/testUtils.d.ts +0 -8
- package/lib/utils/testUtils.js +0 -19
- /package/lib/{SubscriptionBooking.d.ts → types/Booking.d.ts} +0 -0
- /package/lib/types/{journeys/JourneyInfo.js → Cart.js} +0 -0
- /package/lib/types/{journeys/Stop.js → Details.js} +0 -0
- /package/lib/types/{journeys/Trip.js → Info.js} +0 -0
- /package/lib/types/{journeys → Journeys}/BusMatrix.d.ts +0 -0
- /package/lib/types/{journeys → Journeys}/BusMatrix.js +0 -0
- /package/lib/types/{subscriptions/SubscriptionAvailabilities.js → Journeys/Journey.js} +0 -0
- /package/lib/types/{journeys → Journeys}/JourneyCart.d.ts +0 -0
- /package/lib/types/{journeys → Journeys}/JourneyCart.js +0 -0
- /package/lib/types/{journeys → Journeys}/JourneyInfo.d.ts +0 -0
- /package/lib/types/{subscriptions/SubscriptionCart.js → Journeys/JourneyInfo.js} +0 -0
- /package/lib/types/{journeys → Journeys}/JourneySearch.d.ts +0 -0
- /package/lib/types/{journeys → Journeys}/JourneySearch.js +0 -0
- /package/lib/types/{journeys → Journeys}/Stop.d.ts +0 -0
- /package/lib/types/{subscriptions/SubscriptionInfo.js → Journeys/Stop.js} +0 -0
- /package/lib/types/{journeys → Journeys}/Trip.d.ts +0 -0
- /package/lib/types/{subscriptions/Subscriptions.js → Journeys/Trip.js} +0 -0
- /package/lib/types/{subscriptions → Subscriptions}/SubscriptionAvailabilities.d.ts +0 -0
- /package/lib/types/{subscriptions → Subscriptions}/SubscriptionCart.d.ts +0 -0
- /package/lib/types/{subscriptions → Subscriptions}/SubscriptionInfo.d.ts +0 -0
- /package/lib/types/{subscriptions → Subscriptions}/Subscriptions.d.ts +0 -0
package/README.md
CHANGED
@@ -1,20 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
1.
|
7
|
-
2. Software dependencies
|
8
|
-
3. Latest releases
|
9
|
-
4. API references
|
10
|
-
|
11
|
-
# Build and Test
|
12
|
-
TODO: Describe and show how to build your code and run the tests.
|
13
|
-
|
14
|
-
# Contribute
|
15
|
-
TODO: Explain how other users and developers can contribute to make your code better.
|
16
|
-
|
17
|
-
If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files:
|
18
|
-
- [ASP.NET Core](https://github.com/aspnet/Home)
|
19
|
-
- [Visual Studio Code](https://github.com/Microsoft/vscode)
|
20
|
-
- [Chakra Core](https://github.com/Microsoft/ChakraCore)
|
1
|
+
# Publish
|
2
|
+
1. ensure you have the most up to date `.env` file
|
3
|
+
1. `npm i`
|
4
|
+
1. `npm version patch`
|
5
|
+
1. `git push && git push --tags`
|
6
|
+
1. `npm publish`
|
package/lib/booking/booking.d.ts
CHANGED
@@ -20,7 +20,9 @@ export declare abstract class Booking {
|
|
20
20
|
* - The third tells whether the section is required. <br/>
|
21
21
|
*/
|
22
22
|
bookingStepsToStatus: processedStepsToStatus;
|
23
|
+
/** @deprecated Please use {@link Booking.cartGuid} instead */
|
23
24
|
cartId: number | undefined;
|
25
|
+
cartGuid: string | undefined;
|
24
26
|
bookingDueDate: Date | undefined;
|
25
27
|
/**
|
26
28
|
* This is the constructor of the Booking class. See {@link Booking.BookingConfig} for more information.
|
package/lib/booking/booking.js
CHANGED
@@ -286,7 +286,7 @@ var Booking = /** @class */ (function () {
|
|
286
286
|
switch (_c.label) {
|
287
287
|
case 0:
|
288
288
|
// First check that it is possible to call this API
|
289
|
-
if (!this.
|
289
|
+
if (!this.cartGuid) {
|
290
290
|
throw Error("Cart is not initialized yet");
|
291
291
|
}
|
292
292
|
paymentMethodToSet = paymentMethod;
|
@@ -334,9 +334,9 @@ var Booking = /** @class */ (function () {
|
|
334
334
|
}
|
335
335
|
_c.label = 7;
|
336
336
|
case 7:
|
337
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
337
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/issue");
|
338
338
|
body = {
|
339
|
-
|
339
|
+
cartGuid: this.cartGuid,
|
340
340
|
paymentMethod: paymentMethodToSet === Payment_1.PaymentMethods.PAY_LATER ? null : paymentMethodToSet
|
341
341
|
};
|
342
342
|
return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
|
@@ -15,20 +15,23 @@ export declare class JourneyBooking extends Booking {
|
|
15
15
|
getCart(): JourneyCart | undefined;
|
16
16
|
getStorage(): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<{
|
17
17
|
cartId: number | undefined;
|
18
|
+
cartGuid: string | undefined;
|
18
19
|
} & {
|
19
|
-
updateCartId: (cartId: number | undefined) => void;
|
20
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
20
21
|
resetState: () => void;
|
21
22
|
}>, "persist"> & {
|
22
23
|
persist: {
|
23
24
|
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<{
|
24
25
|
cartId: number | undefined;
|
26
|
+
cartGuid: string | undefined;
|
25
27
|
} & {
|
26
|
-
updateCartId: (cartId: number | undefined) => void;
|
28
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
27
29
|
resetState: () => void;
|
28
30
|
}, {
|
29
31
|
cartId: number | undefined;
|
32
|
+
cartGuid: string | undefined;
|
30
33
|
} & {
|
31
|
-
updateCartId: (cartId: number | undefined) => void;
|
34
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
32
35
|
resetState: () => void;
|
33
36
|
}>>) => void;
|
34
37
|
clearStorage: () => void;
|
@@ -36,32 +39,36 @@ export declare class JourneyBooking extends Booking {
|
|
36
39
|
hasHydrated: () => boolean;
|
37
40
|
onHydrate: (fn: (state: {
|
38
41
|
cartId: number | undefined;
|
42
|
+
cartGuid: string | undefined;
|
39
43
|
} & {
|
40
|
-
updateCartId: (cartId: number | undefined) => void;
|
44
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
41
45
|
resetState: () => void;
|
42
46
|
}) => void) => () => void;
|
43
47
|
onFinishHydration: (fn: (state: {
|
44
48
|
cartId: number | undefined;
|
49
|
+
cartGuid: string | undefined;
|
45
50
|
} & {
|
46
|
-
updateCartId: (cartId: number | undefined) => void;
|
51
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
47
52
|
resetState: () => void;
|
48
53
|
}) => void) => () => void;
|
49
54
|
getOptions: () => Partial<import("zustand/middleware").PersistOptions<{
|
50
55
|
cartId: number | undefined;
|
56
|
+
cartGuid: string | undefined;
|
51
57
|
} & {
|
52
|
-
updateCartId: (cartId: number | undefined) => void;
|
58
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
53
59
|
resetState: () => void;
|
54
60
|
}, {
|
55
61
|
cartId: number | undefined;
|
62
|
+
cartGuid: string | undefined;
|
56
63
|
} & {
|
57
|
-
updateCartId: (cartId: number | undefined) => void;
|
64
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
58
65
|
resetState: () => void;
|
59
66
|
}>>;
|
60
67
|
};
|
61
68
|
}>;
|
62
69
|
resetBooking(): void;
|
63
|
-
fetchAndSetCart(
|
64
|
-
fetchCart(
|
70
|
+
fetchAndSetCart(cartGuid: string): Promise<void>;
|
71
|
+
fetchCart(cartGuid: string): Promise<JourneyCart>;
|
65
72
|
/**
|
66
73
|
* This method allows to delete a cart, thus allowing the user to exit from the booking process.
|
67
74
|
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise. Note that also in case of error, all
|
@@ -167,7 +174,7 @@ export declare class JourneyBooking extends Booking {
|
|
167
174
|
* @description This method allows the user to use a voucher to pay the cart.
|
168
175
|
* If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
|
169
176
|
* Otherwise, the user will be asked to pay the remaining amount with another payment method.
|
170
|
-
* @param
|
177
|
+
* @param voucherCode The code of the voucher to use
|
171
178
|
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
172
179
|
*/
|
173
180
|
useVoucher(voucherCode: string): Promise<ErrorResponse | boolean>;
|
@@ -98,11 +98,14 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
98
98
|
resellerId: resellerId,
|
99
99
|
dbType: dbType
|
100
100
|
}) || this;
|
101
|
-
// Set cartId
|
102
|
-
var
|
101
|
+
// Set cartId & cartGuid
|
102
|
+
var _b = _this.getStorage().getState(), cartId = _b.cartId, cartGuid = _b.cartGuid;
|
103
103
|
if (cartId && restoreState) {
|
104
104
|
_this.cartId = cartId;
|
105
105
|
}
|
106
|
+
if (cartGuid && restoreState) {
|
107
|
+
_this.cartGuid = cartGuid;
|
108
|
+
}
|
106
109
|
return _this;
|
107
110
|
}
|
108
111
|
JourneyBooking.prototype.getCart = function () {
|
@@ -117,10 +120,11 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
117
120
|
JourneyBooking.prototype.resetBooking = function () {
|
118
121
|
this.cart = undefined;
|
119
122
|
this.cartId = undefined;
|
123
|
+
this.cartGuid = undefined;
|
120
124
|
this.bookingStepsToStatus = new Map();
|
121
125
|
this.bookingDueDate = undefined;
|
122
126
|
try {
|
123
|
-
this.getStorage().getState().updateCartId(undefined);
|
127
|
+
this.getStorage().getState().updateCartId(undefined, undefined);
|
124
128
|
}
|
125
129
|
catch (e) {
|
126
130
|
if (this.config.ENV !== config_1.MTSEnvs.TEST) {
|
@@ -129,18 +133,19 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
129
133
|
console.log(e);
|
130
134
|
}
|
131
135
|
};
|
132
|
-
JourneyBooking.prototype.fetchAndSetCart = function (
|
136
|
+
JourneyBooking.prototype.fetchAndSetCart = function (cartGuid) {
|
133
137
|
return __awaiter(this, void 0, void 0, function () {
|
134
138
|
var _this = this;
|
135
139
|
return __generator(this, function (_a) {
|
136
140
|
switch (_a.label) {
|
137
|
-
case 0: return [4 /*yield*/, this.fetchCart(
|
141
|
+
case 0: return [4 /*yield*/, this.fetchCart(cartGuid).then(function (cart) {
|
138
142
|
if (cart) {
|
139
143
|
var cartDueDate = new Date();
|
140
144
|
cartDueDate.setSeconds(cartDueDate.getSeconds() + cart.bookingDueDateRemainingSeconds);
|
141
145
|
if (cartDueDate > new Date() && !cart.hasIssuedTickets) {
|
142
146
|
_this.cart = cart;
|
143
147
|
_this.cartId = cart.id;
|
148
|
+
_this.cartGuid = cart.guid;
|
144
149
|
_this.bookingDueDate = cartDueDate; // See Booking class
|
145
150
|
// Update the sellerId. This is particularly important in Linkavel
|
146
151
|
_this.updateSellerId(cart.sellerId);
|
@@ -160,12 +165,12 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
160
165
|
});
|
161
166
|
});
|
162
167
|
};
|
163
|
-
JourneyBooking.prototype.fetchCart = function (
|
168
|
+
JourneyBooking.prototype.fetchCart = function (cartGuid) {
|
164
169
|
return __awaiter(this, void 0, void 0, function () {
|
165
170
|
var url;
|
166
171
|
var _this = this;
|
167
172
|
return __generator(this, function (_a) {
|
168
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({
|
173
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({ cartGuid: cartGuid }));
|
169
174
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
170
175
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
171
176
|
_this.resetBooking();
|
@@ -191,10 +196,10 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
191
196
|
var _this = this;
|
192
197
|
return __generator(this, function (_a) {
|
193
198
|
// First check that it is possible to call this API
|
194
|
-
if (!this.cart
|
199
|
+
if (!this.cart) {
|
195
200
|
throw Error("Cart is not initialized yet");
|
196
201
|
}
|
197
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({
|
202
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({ cartGuid: this.cart.guid }));
|
198
203
|
return [2 /*return*/, this.callDeleteApi(url).then(function (response) {
|
199
204
|
// Clear all data
|
200
205
|
_this.resetBooking();
|
@@ -279,8 +284,9 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
279
284
|
}
|
280
285
|
_this.cart = response.cart;
|
281
286
|
_this.cartId = response.cart.id;
|
287
|
+
_this.cartGuid = response.cart.guid;
|
282
288
|
// Save the cartId in the storage
|
283
|
-
_this.getStorage().getState().updateCartId(response.cart.id);
|
289
|
+
_this.getStorage().getState().updateCartId(response.cart.id, response.cart.guid);
|
284
290
|
// Fill the booking process status
|
285
291
|
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
286
292
|
var cartDueDate = new Date();
|
@@ -300,7 +306,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
300
306
|
*/
|
301
307
|
JourneyBooking.prototype.getBuyerPassengersDetails = function () {
|
302
308
|
return __awaiter(this, void 0, void 0, function () {
|
303
|
-
var buyerPassengersDetails, url;
|
309
|
+
var buyerPassengersDetails, searchParams, url;
|
304
310
|
return __generator(this, function (_a) {
|
305
311
|
// First check that it is possible to call this API
|
306
312
|
if (!this.cart) {
|
@@ -310,7 +316,8 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
310
316
|
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
311
317
|
throw Error("The status of the cart does not allow to call this API");
|
312
318
|
}
|
313
|
-
|
319
|
+
searchParams = new URLSearchParams({ cartGuid: this.cart.guid });
|
320
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/details?").concat(searchParams);
|
314
321
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
315
322
|
// Check for errors
|
316
323
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -399,7 +406,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
399
406
|
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
400
407
|
throw Error("The status of the cart does not allow to call this API");
|
401
408
|
}
|
402
|
-
request = __assign({}, passengersDetails);
|
409
|
+
request = __assign(__assign({}, passengersDetails), { cartGuid: this.cart.guid });
|
403
410
|
passengersDetails.passengers.map(function (passenger, passengerIndex) {
|
404
411
|
var tripsToTariffsToJson = {};
|
405
412
|
passenger.tripsToTariffs.forEach(function (value, key) {
|
@@ -407,7 +414,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
407
414
|
});
|
408
415
|
request.passengers[passengerIndex].tripsToTariffs = tripsToTariffsToJson;
|
409
416
|
});
|
410
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
417
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/details");
|
411
418
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
412
419
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
413
420
|
return response;
|
@@ -469,8 +476,11 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
469
476
|
if (!seatSelectionStatus || !seatSelectionStatus[0]) {
|
470
477
|
throw Error("The status of the cart does not allow to call this API");
|
471
478
|
}
|
472
|
-
searchParams = new URLSearchParams({
|
473
|
-
|
479
|
+
searchParams = new URLSearchParams({
|
480
|
+
tripId: tripId.toString(),
|
481
|
+
cartGuid: this.cart.guid
|
482
|
+
});
|
483
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/seats?").concat(searchParams);
|
474
484
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
475
485
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response)
|
476
486
|
? response
|
@@ -498,8 +508,12 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
498
508
|
if (!seatSelectionStatus || !seatSelectionStatus[0]) {
|
499
509
|
throw Error("The status of the cart does not allow to call this API");
|
500
510
|
}
|
501
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
502
|
-
return [2 /*return*/, this.callPostApi(url, {
|
511
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/seats");
|
512
|
+
return [2 /*return*/, this.callPostApi(url, {
|
513
|
+
tripId: tripId,
|
514
|
+
newSeatsIds: newSeatsIds,
|
515
|
+
cartGuid: this.cart.guid
|
516
|
+
}).then(function (response) {
|
503
517
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
504
518
|
return response;
|
505
519
|
}
|
@@ -519,13 +533,14 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
519
533
|
*/
|
520
534
|
JourneyBooking.prototype.getCartTrips = function () {
|
521
535
|
return __awaiter(this, void 0, void 0, function () {
|
522
|
-
var url;
|
536
|
+
var searchParams, url;
|
523
537
|
return __generator(this, function (_a) {
|
524
538
|
// First check that it is possible to call this API
|
525
539
|
if (!this.cart) {
|
526
540
|
throw Error("Cart is not initialized yet");
|
527
541
|
}
|
528
|
-
|
542
|
+
searchParams = new URLSearchParams({ cartGuid: this.cart.guid });
|
543
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/payment/reduction/trips?").concat(searchParams);
|
529
544
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
530
545
|
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response)
|
531
546
|
? response
|
@@ -731,7 +746,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
731
746
|
* @description This method allows the user to use a voucher to pay the cart.
|
732
747
|
* If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
|
733
748
|
* Otherwise, the user will be asked to pay the remaining amount with another payment method.
|
734
|
-
* @param
|
749
|
+
* @param voucherCode The code of the voucher to use
|
735
750
|
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
736
751
|
*/
|
737
752
|
JourneyBooking.prototype.useVoucher = function (voucherCode) {
|
@@ -743,7 +758,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
743
758
|
switch (_c.label) {
|
744
759
|
case 0:
|
745
760
|
// First check that it is possible to call this API
|
746
|
-
if (!this.
|
761
|
+
if (!this.cartGuid) {
|
747
762
|
throw Error("Cart is not initialized yet");
|
748
763
|
}
|
749
764
|
discountsStep = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.DISCOUNTS);
|
@@ -771,8 +786,8 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
771
786
|
}
|
772
787
|
_c.label = 5;
|
773
788
|
case 5:
|
774
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
775
|
-
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
|
789
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/payment/voucher");
|
790
|
+
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode, cartGuid: this.cartGuid }).then(function (response) {
|
776
791
|
var _a, _b;
|
777
792
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
778
793
|
return response;
|
@@ -814,8 +829,8 @@ exports.JourneyBooking = JourneyBooking;
|
|
814
829
|
_c.label = 1;
|
815
830
|
case 1:
|
816
831
|
_c.trys.push([1, 4, , 5]);
|
817
|
-
if (!booking.
|
818
|
-
return [4 /*yield*/, booking.fetchAndSetCart(booking.
|
832
|
+
if (!booking.cartGuid) return [3 /*break*/, 3];
|
833
|
+
return [4 /*yield*/, booking.fetchAndSetCart(booking.cartGuid)];
|
819
834
|
case 2:
|
820
835
|
_c.sent();
|
821
836
|
_c.label = 3;
|
@@ -825,8 +840,9 @@ exports.JourneyBooking = JourneyBooking;
|
|
825
840
|
// Check if the error is due to an expired cart. In this case, delete the cartId from the mts-storage
|
826
841
|
// This error can occur when the user refreshes the page and the cart has expired
|
827
842
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(error_1) && error_1.mtsCode === 40053) {
|
828
|
-
booking.getStorage().getState().updateCartId(undefined);
|
843
|
+
booking.getStorage().getState().updateCartId(undefined, undefined);
|
829
844
|
booking.cartId = undefined;
|
845
|
+
booking.cartGuid = undefined;
|
830
846
|
return [2 /*return*/, booking];
|
831
847
|
}
|
832
848
|
throw new Error("Could not instantiate JourneyBooking");
|
@@ -12,20 +12,23 @@ export declare class ServiceBooking extends Booking {
|
|
12
12
|
constructor({ env, subKey, debug, language, sessionId, restoreState, accessToken, sellerId, resellerId, dbType }: Omit<Booking.BookingConfig, "bookingType">);
|
13
13
|
getStorage(): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<{
|
14
14
|
cartId: number | undefined;
|
15
|
+
cartGuid: string | undefined;
|
15
16
|
} & {
|
16
|
-
updateCartId: (cartId: number | undefined) => void;
|
17
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
17
18
|
resetState: () => void;
|
18
19
|
}>, "persist"> & {
|
19
20
|
persist: {
|
20
21
|
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<{
|
21
22
|
cartId: number | undefined;
|
23
|
+
cartGuid: string | undefined;
|
22
24
|
} & {
|
23
|
-
updateCartId: (cartId: number | undefined) => void;
|
25
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
24
26
|
resetState: () => void;
|
25
27
|
}, {
|
26
28
|
cartId: number | undefined;
|
29
|
+
cartGuid: string | undefined;
|
27
30
|
} & {
|
28
|
-
updateCartId: (cartId: number | undefined) => void;
|
31
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
29
32
|
resetState: () => void;
|
30
33
|
}>>) => void;
|
31
34
|
clearStorage: () => void;
|
@@ -33,33 +36,37 @@ export declare class ServiceBooking extends Booking {
|
|
33
36
|
hasHydrated: () => boolean;
|
34
37
|
onHydrate: (fn: (state: {
|
35
38
|
cartId: number | undefined;
|
39
|
+
cartGuid: string | undefined;
|
36
40
|
} & {
|
37
|
-
updateCartId: (cartId: number | undefined) => void;
|
41
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
38
42
|
resetState: () => void;
|
39
43
|
}) => void) => () => void;
|
40
44
|
onFinishHydration: (fn: (state: {
|
41
45
|
cartId: number | undefined;
|
46
|
+
cartGuid: string | undefined;
|
42
47
|
} & {
|
43
|
-
updateCartId: (cartId: number | undefined) => void;
|
48
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
44
49
|
resetState: () => void;
|
45
50
|
}) => void) => () => void;
|
46
51
|
getOptions: () => Partial<import("zustand/middleware").PersistOptions<{
|
47
52
|
cartId: number | undefined;
|
53
|
+
cartGuid: string | undefined;
|
48
54
|
} & {
|
49
|
-
updateCartId: (cartId: number | undefined) => void;
|
55
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
50
56
|
resetState: () => void;
|
51
57
|
}, {
|
52
58
|
cartId: number | undefined;
|
59
|
+
cartGuid: string | undefined;
|
53
60
|
} & {
|
54
|
-
updateCartId: (cartId: number | undefined) => void;
|
61
|
+
updateCartId: (cartId: number | undefined, cartGuid: string | undefined) => void;
|
55
62
|
resetState: () => void;
|
56
63
|
}>>;
|
57
64
|
};
|
58
65
|
}>;
|
59
66
|
getCart(): ServiceCart | undefined;
|
60
67
|
resetBooking(): void;
|
61
|
-
fetchAndSetCart(
|
62
|
-
fetchCart(
|
68
|
+
fetchAndSetCart(cartGuid: string): Promise<void>;
|
69
|
+
fetchCart(cartGuid: string): Promise<ServiceCart>;
|
63
70
|
/**
|
64
71
|
* This method allows to delete a cart, thus allowing the user to exit from the booking process.
|
65
72
|
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise. Note that also in case of error, all
|
@@ -98,11 +98,14 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
98
98
|
resellerId: resellerId,
|
99
99
|
dbType: dbType
|
100
100
|
}) || this;
|
101
|
-
// Set cartId
|
102
|
-
var
|
101
|
+
// Set cartId & cartGuid
|
102
|
+
var _b = _this.getStorage().getState(), cartId = _b.cartId, cartGuid = _b.cartGuid;
|
103
103
|
if (cartId && restoreState) {
|
104
104
|
_this.cartId = cartId;
|
105
105
|
}
|
106
|
+
if (cartGuid && restoreState) {
|
107
|
+
_this.cartGuid = cartGuid;
|
108
|
+
}
|
106
109
|
return _this;
|
107
110
|
}
|
108
111
|
ServiceBooking.prototype.getStorage = function () {
|
@@ -117,10 +120,11 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
117
120
|
ServiceBooking.prototype.resetBooking = function () {
|
118
121
|
this.cart = undefined;
|
119
122
|
this.cartId = undefined;
|
123
|
+
this.cartGuid = undefined;
|
120
124
|
this.bookingStepsToStatus = new Map();
|
121
125
|
this.bookingDueDate = undefined;
|
122
126
|
try {
|
123
|
-
this.getStorage().getState().updateCartId(undefined);
|
127
|
+
this.getStorage().getState().updateCartId(undefined, undefined);
|
124
128
|
}
|
125
129
|
catch (e) {
|
126
130
|
if (this.config.ENV !== config_1.MTSEnvs.TEST) {
|
@@ -129,18 +133,19 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
129
133
|
console.log(e);
|
130
134
|
}
|
131
135
|
};
|
132
|
-
ServiceBooking.prototype.fetchAndSetCart = function (
|
136
|
+
ServiceBooking.prototype.fetchAndSetCart = function (cartGuid) {
|
133
137
|
return __awaiter(this, void 0, void 0, function () {
|
134
138
|
var _this = this;
|
135
139
|
return __generator(this, function (_a) {
|
136
140
|
switch (_a.label) {
|
137
|
-
case 0: return [4 /*yield*/, this.fetchCart(
|
141
|
+
case 0: return [4 /*yield*/, this.fetchCart(cartGuid).then(function (cart) {
|
138
142
|
if (cart) {
|
139
143
|
var cartDueDate = new Date();
|
140
144
|
cartDueDate.setSeconds(cartDueDate.getSeconds() + cart.bookingDueDateRemainingSeconds);
|
141
145
|
if (cartDueDate > new Date() && !cart.hasIssuedTickets) {
|
142
146
|
_this.cart = cart;
|
143
147
|
_this.cartId = cart.id;
|
148
|
+
_this.cartGuid = cart.guid;
|
144
149
|
_this.bookingDueDate = cartDueDate; // See Booking class
|
145
150
|
// Update the sellerId. This is particularly important in Linkavel
|
146
151
|
_this.updateSellerId(cart.sellerId);
|
@@ -160,12 +165,12 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
160
165
|
});
|
161
166
|
});
|
162
167
|
};
|
163
|
-
ServiceBooking.prototype.fetchCart = function (
|
168
|
+
ServiceBooking.prototype.fetchCart = function (cartGuid) {
|
164
169
|
return __awaiter(this, void 0, void 0, function () {
|
165
170
|
var url;
|
166
171
|
var _this = this;
|
167
172
|
return __generator(this, function (_a) {
|
168
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({
|
173
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({ cartGuid: cartGuid }));
|
169
174
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
170
175
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
171
176
|
_this.resetBooking();
|
@@ -191,10 +196,10 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
191
196
|
var _this = this;
|
192
197
|
return __generator(this, function (_a) {
|
193
198
|
// First check that it is possible to call this API
|
194
|
-
if (!this.cart
|
199
|
+
if (!this.cart) {
|
195
200
|
throw Error("Cart is not initialized yet");
|
196
201
|
}
|
197
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({
|
202
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts?").concat(new URLSearchParams({ cartGuid: this.cart.guid }));
|
198
203
|
return [2 /*return*/, this.callDeleteApi(url).then(function (response) {
|
199
204
|
// Clear all data
|
200
205
|
_this.resetBooking();
|
@@ -280,8 +285,9 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
280
285
|
// Save the local data
|
281
286
|
_this.cart = response.cart;
|
282
287
|
_this.cartId = response.cart.id;
|
288
|
+
_this.cartGuid = response.cart.guid;
|
283
289
|
// Save the cartId in the mts-storage
|
284
|
-
_this.getStorage().getState().updateCartId(response.cart.id);
|
290
|
+
_this.getStorage().getState().updateCartId(response.cart.id, response.cart.guid);
|
285
291
|
// Fill the booking process status
|
286
292
|
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
287
293
|
var cartDueDate = new Date();
|
@@ -302,7 +308,7 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
302
308
|
*/
|
303
309
|
ServiceBooking.prototype.getBuyerPassengersDetails = function () {
|
304
310
|
return __awaiter(this, void 0, void 0, function () {
|
305
|
-
var buyerPassengersDetails, url;
|
311
|
+
var buyerPassengersDetails, searchParams, url;
|
306
312
|
return __generator(this, function (_a) {
|
307
313
|
// First check that it is possible to call this API
|
308
314
|
if (!this.cart) {
|
@@ -312,7 +318,8 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
312
318
|
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
313
319
|
throw Error("The status of the cart does not allow to call this API");
|
314
320
|
}
|
315
|
-
|
321
|
+
searchParams = new URLSearchParams({ cartGuid: this.cart.guid });
|
322
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/details?").concat(searchParams);
|
316
323
|
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
317
324
|
// Check for errors
|
318
325
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
@@ -381,10 +388,11 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
381
388
|
throw Error("The status of the cart does not allow to call this API");
|
382
389
|
}
|
383
390
|
request = {
|
391
|
+
cartGuid: this.cart.guid,
|
384
392
|
buyer: buyerDetails,
|
385
393
|
passengers: []
|
386
394
|
};
|
387
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
395
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/details");
|
388
396
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
389
397
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
390
398
|
return response;
|
@@ -607,7 +615,7 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
607
615
|
switch (_c.label) {
|
608
616
|
case 0:
|
609
617
|
// First check that it is possible to call this API
|
610
|
-
if (!this.
|
618
|
+
if (!this.cartGuid) {
|
611
619
|
throw Error("Cart is not initialized yet");
|
612
620
|
}
|
613
621
|
discountsStep = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.DISCOUNTS);
|
@@ -635,8 +643,8 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
635
643
|
}
|
636
644
|
_c.label = 5;
|
637
645
|
case 5:
|
638
|
-
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/
|
639
|
-
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
|
646
|
+
url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/payment/voucher");
|
647
|
+
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode, cartGuid: this.cartGuid }).then(function (response) {
|
640
648
|
var _a, _b;
|
641
649
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
642
650
|
return response;
|
@@ -678,8 +686,8 @@ exports.ServiceBooking = ServiceBooking;
|
|
678
686
|
_c.label = 1;
|
679
687
|
case 1:
|
680
688
|
_c.trys.push([1, 4, , 5]);
|
681
|
-
if (!booking.
|
682
|
-
return [4 /*yield*/, booking.fetchAndSetCart(booking.
|
689
|
+
if (!booking.cartGuid) return [3 /*break*/, 3];
|
690
|
+
return [4 /*yield*/, booking.fetchAndSetCart(booking.cartGuid)];
|
683
691
|
case 2:
|
684
692
|
_c.sent();
|
685
693
|
_c.label = 3;
|
@@ -689,8 +697,9 @@ exports.ServiceBooking = ServiceBooking;
|
|
689
697
|
// Check if the error is due to an expired cart. In this case, delete the cartId from the mts-storage
|
690
698
|
// This error can occur when the user refreshes the page and the cart has expired
|
691
699
|
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(error_1) && error_1.mtsCode === 40053) {
|
692
|
-
booking.getStorage().getState().updateCartId(undefined);
|
700
|
+
booking.getStorage().getState().updateCartId(undefined, undefined);
|
693
701
|
booking.cartId = undefined;
|
702
|
+
booking.cartGuid = undefined;
|
694
703
|
return [2 /*return*/, booking];
|
695
704
|
}
|
696
705
|
throw new Error("Could not instantiate JourneyBooking");
|