mts-booking-library 1.2.9 → 1.2.11
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 +24 -10
- package/lib/booking/booking.js +303 -71
- package/lib/booking/journeyBooking.d.ts +12 -4
- package/lib/booking/journeyBooking.js +40 -18
- package/lib/booking/serviceBooking.d.ts +2 -2
- package/lib/booking/serviceBooking.js +11 -16
- package/lib/booking/subscriptionBooking.d.ts +4 -5
- package/lib/booking/subscriptionBooking.js +10 -9
- package/lib/index.d.ts +1 -1
- package/lib/types/common/Payment.d.ts +10 -2
- package/lib/types/common/Payment.js +9 -1
- package/lib/types/journeys/Trip.d.ts +10 -0
- package/lib/utils/processBookingSteps.d.ts +7 -0
- package/lib/utils/processBookingSteps.js +24 -0
- package/package.json +1 -1
package/lib/booking/booking.d.ts
CHANGED
@@ -4,7 +4,7 @@ import { GetPaymentInformationFromGatewayResponse, GetSellerGatewaysResponse, Pa
|
|
4
4
|
import { GetBuyerPassengersDetailsResponse, Person } from "../types/common/Person";
|
5
5
|
import { AddReductionRequest } from "../types/common/Reduction";
|
6
6
|
export declare abstract class Booking {
|
7
|
-
|
7
|
+
private sellerId?;
|
8
8
|
readonly resellerId?: number | undefined;
|
9
9
|
readonly bookingType: Booking.BookingTypes;
|
10
10
|
readonly config: MTSConfig;
|
@@ -35,6 +35,12 @@ export declare abstract class Booking {
|
|
35
35
|
* @param {number} [resellerId=undefined] The id of the reseller.
|
36
36
|
*/
|
37
37
|
constructor(env: MTSEnvs, sub_key: string, onCartExpiration: () => void, bookingType: Booking.BookingTypes, debug?: boolean, language?: string, access_token?: string, sellerId?: number, resellerId?: number);
|
38
|
+
/**
|
39
|
+
* This method allows to update the sellerId. It is mostly important for Linkavel, as we start with sellerId = 0
|
40
|
+
* but then it changes to the actual sellerId once the cart is created.
|
41
|
+
* @param sellerId The id of the seller.
|
42
|
+
*/
|
43
|
+
updateSellerId(sellerId: number): void;
|
38
44
|
/**
|
39
45
|
* This method allows to renew the access token for calling MTS APIs
|
40
46
|
* @param {string} access_token The new access token
|
@@ -46,31 +52,37 @@ export declare abstract class Booking {
|
|
46
52
|
changeCurrency(currency: Booking.Currencies): void;
|
47
53
|
changeLanguage(language: string): void;
|
48
54
|
getCartExpirationTimeInMs(): Promise<number>;
|
55
|
+
/**
|
56
|
+
* This API allows to mark a non-required booking step as completed. It is useful for example for the seats selection step.
|
57
|
+
* @param bookingStep The booking step to mark as completed
|
58
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
59
|
+
*/
|
60
|
+
markBookingStepCompleted(bookingStep: Booking.BookingSteps): Promise<ErrorResponse | boolean>;
|
49
61
|
abstract deleteCart(): Promise<ErrorResponse | any>;
|
50
62
|
abstract getBuyerPassengersDetails(): Promise<ErrorResponse | GetBuyerPassengersDetailsResponse>;
|
51
63
|
abstract getBuyerFromLinkavelCard(linkavelCardNumber?: string, linkavelCardPhoneNumber?: string): Promise<ErrorResponse | Person>;
|
52
|
-
abstract updateBuyerPassengersDetails(request: any): Promise<ErrorResponse |
|
64
|
+
abstract updateBuyerPassengersDetails(request: any): Promise<ErrorResponse | boolean>;
|
53
65
|
/**
|
54
|
-
* @description This method allows to add a reduction to the cart
|
66
|
+
* @description This method allows to add a reduction to the whole cart or to a single trip in the cart.
|
55
67
|
* @param {AddReductionRequest} request The information about the reduction to add
|
56
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
68
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
57
69
|
*/
|
58
|
-
addReduction(request: AddReductionRequest): Promise<ErrorResponse |
|
70
|
+
addReduction(request: AddReductionRequest): Promise<ErrorResponse | boolean>;
|
59
71
|
/**
|
60
72
|
* @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
|
61
73
|
* the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
|
62
74
|
* remaining amount with another payment method.
|
63
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
75
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
64
76
|
*/
|
65
|
-
useWallet(): Promise<ErrorResponse |
|
77
|
+
useWallet(): Promise<ErrorResponse | boolean>;
|
66
78
|
/**
|
67
79
|
* @description This method allows the user to use a voucher to pay the cart.
|
68
80
|
* If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
|
69
81
|
* Otherwise, the user will be asked to pay the remaining amount with another payment method.
|
70
82
|
* @param {string} voucherCode The code of the voucher to use
|
71
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
83
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
72
84
|
*/
|
73
|
-
useVoucher(voucherCode: string): Promise<ErrorResponse |
|
85
|
+
useVoucher(voucherCode: string): Promise<ErrorResponse | boolean>;
|
74
86
|
/**
|
75
87
|
* @description This method shall be used to get the available payment methods for the cart. They depend on the seller configuration.
|
76
88
|
* @returns An {@link ErrorResponse} object in case of error, a {@link GetSellerGatewaysResponse} object otherwise.
|
@@ -86,9 +98,11 @@ export declare abstract class Booking {
|
|
86
98
|
getPaymentInformationFromGateway(gatewayId: number, returnUrl?: string): Promise<ErrorResponse | GetPaymentInformationFromGatewayResponse>;
|
87
99
|
/**
|
88
100
|
* @description This method shall be used to issue the tickets. It must be called after the payment was successful.
|
101
|
+
* @param {PaymentMethods} paymentMethod The payment method used to pay the cart. If the chosen method is {@link PaymentMethods.ZERO_COST},
|
102
|
+
* first the {@link Booking.addReduction} API is called with a 100% discount, then tickets are issued with the {@link PaymentMethods.CASH} method.
|
89
103
|
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
|
90
104
|
*/
|
91
|
-
issueTickets(paymentMethod: PaymentMethods): Promise<ErrorResponse |
|
105
|
+
issueTickets(paymentMethod: PaymentMethods): Promise<ErrorResponse | boolean>;
|
92
106
|
}
|
93
107
|
export declare namespace Booking {
|
94
108
|
enum Currencies {
|
package/lib/booking/booking.js
CHANGED
@@ -52,6 +52,7 @@ var config_1 = require("../config");
|
|
52
52
|
var ErrorResponse_1 = require("../types/ErrorResponse");
|
53
53
|
var Payment_1 = require("../types/common/Payment");
|
54
54
|
var apiCall_1 = require("../utils/apiCall");
|
55
|
+
var processBookingSteps_1 = require("../utils/processBookingSteps");
|
55
56
|
var Booking = /** @class */ (function () {
|
56
57
|
/**
|
57
58
|
* This is the constructor of the Booking class.
|
@@ -86,6 +87,14 @@ var Booking = /** @class */ (function () {
|
|
86
87
|
this.onCartExpiration = onCartExpiration;
|
87
88
|
this.changeLanguage(language);
|
88
89
|
}
|
90
|
+
/**
|
91
|
+
* This method allows to update the sellerId. It is mostly important for Linkavel, as we start with sellerId = 0
|
92
|
+
* but then it changes to the actual sellerId once the cart is created.
|
93
|
+
* @param sellerId The id of the seller.
|
94
|
+
*/
|
95
|
+
Booking.prototype.updateSellerId = function (sellerId) {
|
96
|
+
this.sellerId = sellerId;
|
97
|
+
};
|
89
98
|
/**
|
90
99
|
* This method allows to renew the access token for calling MTS APIs
|
91
100
|
* @param {string} access_token The new access token
|
@@ -134,54 +143,161 @@ var Booking = /** @class */ (function () {
|
|
134
143
|
});
|
135
144
|
});
|
136
145
|
};
|
137
|
-
//#endregion
|
138
|
-
//#region Reductions APIs
|
139
146
|
/**
|
140
|
-
*
|
141
|
-
* @param
|
142
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
147
|
+
* This API allows to mark a non-required booking step as completed. It is useful for example for the seats selection step.
|
148
|
+
* @param bookingStep The booking step to mark as completed
|
149
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
143
150
|
*/
|
144
|
-
Booking.prototype.
|
151
|
+
Booking.prototype.markBookingStepCompleted = function (bookingStep) {
|
145
152
|
return __awaiter(this, void 0, void 0, function () {
|
146
|
-
var
|
153
|
+
var currentStepStatus, url;
|
154
|
+
var _this = this;
|
147
155
|
return __generator(this, function (_a) {
|
148
156
|
// First check that it is possible to call this API
|
149
157
|
if (!this.cartId || this.cartId === 0) {
|
150
158
|
throw Error("Cart is not initialized yet");
|
151
159
|
}
|
152
|
-
|
153
|
-
if (!
|
154
|
-
throw Error("The
|
160
|
+
currentStepStatus = this.bookingStepsToStatus.get(bookingStep);
|
161
|
+
if (!currentStepStatus || currentStepStatus[2]) {
|
162
|
+
throw Error("The step ".concat(bookingStep, " cannot be marked as completed because it is required"));
|
155
163
|
}
|
156
|
-
|
157
|
-
|
158
|
-
|
164
|
+
// Booking step is already completedm, no need to call the API
|
165
|
+
if (currentStepStatus[0])
|
166
|
+
return [2 /*return*/, true];
|
167
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/bookingSteps");
|
168
|
+
return [2 /*return*/, this.callPostApi(url, { bookingStep: bookingStep }).then(function (response) {
|
169
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
170
|
+
return response;
|
171
|
+
}
|
172
|
+
// Update the booking process status
|
173
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
174
|
+
return true;
|
159
175
|
})];
|
160
176
|
});
|
161
177
|
});
|
162
178
|
};
|
179
|
+
//#endregion
|
180
|
+
//#region Reductions APIs
|
181
|
+
/**
|
182
|
+
* @description This method allows to add a reduction to the whole cart or to a single trip in the cart.
|
183
|
+
* @param {AddReductionRequest} request The information about the reduction to add
|
184
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
185
|
+
*/
|
186
|
+
Booking.prototype.addReduction = function (request) {
|
187
|
+
var _a;
|
188
|
+
return __awaiter(this, void 0, void 0, function () {
|
189
|
+
var discountsStep, _b, _c, _d, _i, step, url;
|
190
|
+
var _this = this;
|
191
|
+
return __generator(this, function (_e) {
|
192
|
+
switch (_e.label) {
|
193
|
+
case 0:
|
194
|
+
// First check that it is possible to call this API
|
195
|
+
if (!this.cartId || this.cartId === 0) {
|
196
|
+
throw Error("Cart is not initialized yet");
|
197
|
+
}
|
198
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
199
|
+
if (!discountsStep)
|
200
|
+
throw Error("Booking step not found!");
|
201
|
+
if (!!discountsStep[0]) return [3 /*break*/, 5];
|
202
|
+
_b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS];
|
203
|
+
_c = [];
|
204
|
+
for (_d in _b)
|
205
|
+
_c.push(_d);
|
206
|
+
_i = 0;
|
207
|
+
_e.label = 1;
|
208
|
+
case 1:
|
209
|
+
if (!(_i < _c.length)) return [3 /*break*/, 4];
|
210
|
+
_d = _c[_i];
|
211
|
+
if (!(_d in _b)) return [3 /*break*/, 3];
|
212
|
+
step = _d;
|
213
|
+
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
214
|
+
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
215
|
+
case 2:
|
216
|
+
_e.sent();
|
217
|
+
_e.label = 3;
|
218
|
+
case 3:
|
219
|
+
_i++;
|
220
|
+
return [3 /*break*/, 1];
|
221
|
+
case 4:
|
222
|
+
// Check again if the discounts step is accessible
|
223
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
224
|
+
if (!discountsStep || !discountsStep[0]) {
|
225
|
+
throw Error("The status of the cart does not allow to call this API");
|
226
|
+
}
|
227
|
+
_e.label = 5;
|
228
|
+
case 5:
|
229
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/reduction");
|
230
|
+
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
231
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
232
|
+
return response;
|
233
|
+
}
|
234
|
+
// Update the booking process status
|
235
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
236
|
+
return true;
|
237
|
+
})];
|
238
|
+
}
|
239
|
+
});
|
240
|
+
});
|
241
|
+
};
|
163
242
|
/**
|
164
243
|
* @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
|
165
244
|
* the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
|
166
245
|
* remaining amount with another payment method.
|
167
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
246
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
168
247
|
*/
|
169
248
|
Booking.prototype.useWallet = function () {
|
249
|
+
var _a;
|
170
250
|
return __awaiter(this, void 0, void 0, function () {
|
171
|
-
var discountsStep, url;
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
251
|
+
var discountsStep, _b, _c, _d, _i, step, url;
|
252
|
+
var _this = this;
|
253
|
+
return __generator(this, function (_e) {
|
254
|
+
switch (_e.label) {
|
255
|
+
case 0:
|
256
|
+
// First check that it is possible to call this API
|
257
|
+
if (!this.cartId || this.cartId === 0) {
|
258
|
+
throw Error("Cart is not initialized yet");
|
259
|
+
}
|
260
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
261
|
+
if (!discountsStep)
|
262
|
+
throw Error("Booking step not found!");
|
263
|
+
if (!!discountsStep[0]) return [3 /*break*/, 5];
|
264
|
+
_b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS];
|
265
|
+
_c = [];
|
266
|
+
for (_d in _b)
|
267
|
+
_c.push(_d);
|
268
|
+
_i = 0;
|
269
|
+
_e.label = 1;
|
270
|
+
case 1:
|
271
|
+
if (!(_i < _c.length)) return [3 /*break*/, 4];
|
272
|
+
_d = _c[_i];
|
273
|
+
if (!(_d in _b)) return [3 /*break*/, 3];
|
274
|
+
step = _d;
|
275
|
+
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
276
|
+
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
277
|
+
case 2:
|
278
|
+
_e.sent();
|
279
|
+
_e.label = 3;
|
280
|
+
case 3:
|
281
|
+
_i++;
|
282
|
+
return [3 /*break*/, 1];
|
283
|
+
case 4:
|
284
|
+
// Check again if the discounts step is accessible
|
285
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
286
|
+
if (!discountsStep || !discountsStep[0]) {
|
287
|
+
throw Error("The status of the cart does not allow to call this API");
|
288
|
+
}
|
289
|
+
_e.label = 5;
|
290
|
+
case 5:
|
291
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/wallet");
|
292
|
+
return [2 /*return*/, this.callPostApi(url, {}).then(function (response) {
|
293
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
294
|
+
return response;
|
295
|
+
}
|
296
|
+
// Update the booking process status
|
297
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
298
|
+
return true;
|
299
|
+
})];
|
180
300
|
}
|
181
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/wallet");
|
182
|
-
return [2 /*return*/, this.callPostApi(url, {}).then(function (response) {
|
183
|
-
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
184
|
-
})];
|
185
301
|
});
|
186
302
|
});
|
187
303
|
};
|
@@ -190,24 +306,61 @@ var Booking = /** @class */ (function () {
|
|
190
306
|
* If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
|
191
307
|
* Otherwise, the user will be asked to pay the remaining amount with another payment method.
|
192
308
|
* @param {string} voucherCode The code of the voucher to use
|
193
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
309
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
194
310
|
*/
|
195
311
|
Booking.prototype.useVoucher = function (voucherCode) {
|
312
|
+
var _a;
|
196
313
|
return __awaiter(this, void 0, void 0, function () {
|
197
|
-
var discountsStep, url;
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
314
|
+
var discountsStep, _b, _c, _d, _i, step, url;
|
315
|
+
var _this = this;
|
316
|
+
return __generator(this, function (_e) {
|
317
|
+
switch (_e.label) {
|
318
|
+
case 0:
|
319
|
+
// First check that it is possible to call this API
|
320
|
+
if (!this.cartId || this.cartId === 0) {
|
321
|
+
throw Error("Cart is not initialized yet");
|
322
|
+
}
|
323
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
324
|
+
if (!discountsStep)
|
325
|
+
throw Error("Booking step not found!");
|
326
|
+
if (!!discountsStep[0]) return [3 /*break*/, 5];
|
327
|
+
_b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS];
|
328
|
+
_c = [];
|
329
|
+
for (_d in _b)
|
330
|
+
_c.push(_d);
|
331
|
+
_i = 0;
|
332
|
+
_e.label = 1;
|
333
|
+
case 1:
|
334
|
+
if (!(_i < _c.length)) return [3 /*break*/, 4];
|
335
|
+
_d = _c[_i];
|
336
|
+
if (!(_d in _b)) return [3 /*break*/, 3];
|
337
|
+
step = _d;
|
338
|
+
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
339
|
+
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
340
|
+
case 2:
|
341
|
+
_e.sent();
|
342
|
+
_e.label = 3;
|
343
|
+
case 3:
|
344
|
+
_i++;
|
345
|
+
return [3 /*break*/, 1];
|
346
|
+
case 4:
|
347
|
+
// Check again if the discounts step is accessible
|
348
|
+
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
349
|
+
if (!discountsStep || !discountsStep[0]) {
|
350
|
+
throw Error("The status of the cart does not allow to call this API");
|
351
|
+
}
|
352
|
+
_e.label = 5;
|
353
|
+
case 5:
|
354
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/voucher");
|
355
|
+
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
|
356
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
357
|
+
return response;
|
358
|
+
}
|
359
|
+
// Update the booking process status
|
360
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
361
|
+
return true;
|
362
|
+
})];
|
202
363
|
}
|
203
|
-
discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
204
|
-
if (!discountsStep || !discountsStep[0]) {
|
205
|
-
throw Error("The status of the cart does not allow to call this API");
|
206
|
-
}
|
207
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/voucher");
|
208
|
-
return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
|
209
|
-
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
210
|
-
})];
|
211
364
|
});
|
212
365
|
});
|
213
366
|
};
|
@@ -218,21 +371,52 @@ var Booking = /** @class */ (function () {
|
|
218
371
|
* @returns An {@link ErrorResponse} object in case of error, a {@link GetSellerGatewaysResponse} object otherwise.
|
219
372
|
*/
|
220
373
|
Booking.prototype.getSellerGateways = function () {
|
374
|
+
var _a;
|
221
375
|
return __awaiter(this, void 0, void 0, function () {
|
222
|
-
var issueStep, url;
|
223
|
-
return __generator(this, function (
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
376
|
+
var issueStep, _b, _c, _d, _i, step, url;
|
377
|
+
return __generator(this, function (_e) {
|
378
|
+
switch (_e.label) {
|
379
|
+
case 0:
|
380
|
+
// First check that it is possible to call this API
|
381
|
+
if (!this.cartId || this.cartId === 0) {
|
382
|
+
throw Error("Cart is not initialized yet");
|
383
|
+
}
|
384
|
+
issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
|
385
|
+
if (!issueStep)
|
386
|
+
throw Error("Booking step not found!");
|
387
|
+
if (!!issueStep[0]) return [3 /*break*/, 5];
|
388
|
+
_b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS, Booking.BookingSteps.DISCOUNTS];
|
389
|
+
_c = [];
|
390
|
+
for (_d in _b)
|
391
|
+
_c.push(_d);
|
392
|
+
_i = 0;
|
393
|
+
_e.label = 1;
|
394
|
+
case 1:
|
395
|
+
if (!(_i < _c.length)) return [3 /*break*/, 4];
|
396
|
+
_d = _c[_i];
|
397
|
+
if (!(_d in _b)) return [3 /*break*/, 3];
|
398
|
+
step = _d;
|
399
|
+
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
|
400
|
+
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
401
|
+
case 2:
|
402
|
+
_e.sent();
|
403
|
+
_e.label = 3;
|
404
|
+
case 3:
|
405
|
+
_i++;
|
406
|
+
return [3 /*break*/, 1];
|
407
|
+
case 4:
|
408
|
+
// Check again if the issue step is accessible
|
409
|
+
issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
410
|
+
if (!issueStep || !issueStep[0]) {
|
411
|
+
throw Error("The status of the cart does not allow to call this API");
|
412
|
+
}
|
413
|
+
_e.label = 5;
|
414
|
+
case 5:
|
415
|
+
url = "".concat(this.config.API_ENDPOINT, "/sellers/").concat(this.sellerId, "/gateways");
|
416
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
417
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
418
|
+
})];
|
231
419
|
}
|
232
|
-
url = "".concat(this.config.API_ENDPOINT, "/sellers/").concat(this.sellerId, "/gateways");
|
233
|
-
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
234
|
-
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
235
|
-
})];
|
236
420
|
});
|
237
421
|
});
|
238
422
|
};
|
@@ -265,28 +449,76 @@ var Booking = /** @class */ (function () {
|
|
265
449
|
};
|
266
450
|
/**
|
267
451
|
* @description This method shall be used to issue the tickets. It must be called after the payment was successful.
|
452
|
+
* @param {PaymentMethods} paymentMethod The payment method used to pay the cart. If the chosen method is {@link PaymentMethods.ZERO_COST},
|
453
|
+
* first the {@link Booking.addReduction} API is called with a 100% discount, then tickets are issued with the {@link PaymentMethods.CASH} method.
|
268
454
|
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
|
269
455
|
*/
|
270
456
|
Booking.prototype.issueTickets = function (paymentMethod) {
|
457
|
+
var _a;
|
271
458
|
return __awaiter(this, void 0, void 0, function () {
|
272
|
-
var issueStep, url, body;
|
273
|
-
return __generator(this, function (
|
274
|
-
|
275
|
-
|
276
|
-
|
459
|
+
var paymentMethodToSet, issueStep, _b, _c, _d, _i, step, url, body;
|
460
|
+
return __generator(this, function (_e) {
|
461
|
+
switch (_e.label) {
|
462
|
+
case 0:
|
463
|
+
// First check that it is possible to call this API
|
464
|
+
if (!this.cartId || this.cartId === 0) {
|
465
|
+
throw Error("Cart is not initialized yet");
|
466
|
+
}
|
467
|
+
paymentMethodToSet = paymentMethod;
|
468
|
+
if (!(paymentMethod === Payment_1.PaymentMethods.ZERO_COST)) return [3 /*break*/, 2];
|
469
|
+
return [4 /*yield*/, this.addReduction({ tripId: 0, reduction: 1, isPercentage: true }).then(function (response) {
|
470
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
471
|
+
return response;
|
472
|
+
}
|
473
|
+
else {
|
474
|
+
// Request was successful. Set payment method to CASH
|
475
|
+
paymentMethodToSet = Payment_1.PaymentMethods.CASH;
|
476
|
+
}
|
477
|
+
})];
|
478
|
+
case 1:
|
479
|
+
_e.sent();
|
480
|
+
_e.label = 2;
|
481
|
+
case 2:
|
482
|
+
issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
|
483
|
+
if (!issueStep)
|
484
|
+
throw Error("Booking step not found!");
|
485
|
+
if (!!issueStep[0]) return [3 /*break*/, 7];
|
486
|
+
_b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS, Booking.BookingSteps.DISCOUNTS];
|
487
|
+
_c = [];
|
488
|
+
for (_d in _b)
|
489
|
+
_c.push(_d);
|
490
|
+
_i = 0;
|
491
|
+
_e.label = 3;
|
492
|
+
case 3:
|
493
|
+
if (!(_i < _c.length)) return [3 /*break*/, 6];
|
494
|
+
_d = _c[_i];
|
495
|
+
if (!(_d in _b)) return [3 /*break*/, 5];
|
496
|
+
step = _d;
|
497
|
+
if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 5];
|
498
|
+
return [4 /*yield*/, this.markBookingStepCompleted(step)];
|
499
|
+
case 4:
|
500
|
+
_e.sent();
|
501
|
+
_e.label = 5;
|
502
|
+
case 5:
|
503
|
+
_i++;
|
504
|
+
return [3 /*break*/, 3];
|
505
|
+
case 6:
|
506
|
+
// Check again if the issue step is accessible
|
507
|
+
issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
|
508
|
+
if (!issueStep || !issueStep[0]) {
|
509
|
+
throw Error("The status of the cart does not allow to call this API");
|
510
|
+
}
|
511
|
+
_e.label = 7;
|
512
|
+
case 7:
|
513
|
+
url = "".concat(this.config.API_ENDPOINT, "/issueTickets");
|
514
|
+
body = {
|
515
|
+
cartId: this.cartId,
|
516
|
+
paymentMethod: paymentMethodToSet === Payment_1.PaymentMethods.PAY_LATER ? null : paymentMethodToSet,
|
517
|
+
};
|
518
|
+
return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
|
519
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : true;
|
520
|
+
})];
|
277
521
|
}
|
278
|
-
issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
|
279
|
-
if (!issueStep || !issueStep[0]) {
|
280
|
-
throw Error("The status of the cart does not allow to call this API");
|
281
|
-
}
|
282
|
-
url = "".concat(this.config.API_ENDPOINT, "/issueTickets");
|
283
|
-
body = {
|
284
|
-
cartId: this.cartId,
|
285
|
-
paymentMethod: paymentMethod === Payment_1.PaymentMethods.PAY_LATER ? null : paymentMethod,
|
286
|
-
};
|
287
|
-
return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
|
288
|
-
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
289
|
-
})];
|
290
522
|
});
|
291
523
|
});
|
292
524
|
};
|
@@ -4,6 +4,7 @@ import { EditPassengersDetailsRequest, GetBuyerPassengersDetailsResponse, Person
|
|
4
4
|
import { BusMatrix } from "../types/journeys/BusMatrix";
|
5
5
|
import { CreateJourneyCartRequest, JourneyCart } from "../types/journeys/JourneyCart";
|
6
6
|
import { JourneySearchRequest, JourneySearchResult } from "../types/journeys/JourneySearch";
|
7
|
+
import { ReductionTrip } from "../types/journeys/Trip";
|
7
8
|
import { Booking } from "./booking";
|
8
9
|
export declare class JourneyBooking extends Booking {
|
9
10
|
private cart?;
|
@@ -68,9 +69,9 @@ export declare class JourneyBooking extends Booking {
|
|
68
69
|
/**
|
69
70
|
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
70
71
|
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
71
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
72
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
72
73
|
*/
|
73
|
-
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse |
|
74
|
+
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse | boolean>;
|
74
75
|
/**
|
75
76
|
* @description This method shall be used when the user wants to retrieve the bus matrix for a trip. The bus matrix shows
|
76
77
|
* the seats that are available and the ones that are already taken, as well as how the bus is made.
|
@@ -90,9 +91,16 @@ export declare class JourneyBooking extends Booking {
|
|
90
91
|
* @description This method shall be called when the user wants to change the assigned seats of a trip.
|
91
92
|
* @param {number} tripId The id of the trip for which the seats should be changed
|
92
93
|
* @param {number[]} newSeatsIds The ids of the new seats, as found the {@link BusMatrix}
|
93
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
94
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
94
95
|
*/
|
95
|
-
changeSeatsOfTrip(tripId: number, newSeatsIds: number[]): Promise<ErrorResponse |
|
96
|
+
changeSeatsOfTrip(tripId: number, newSeatsIds: number[]): Promise<ErrorResponse | boolean>;
|
97
|
+
/**
|
98
|
+
* @description This method shall be called when the user wants to retrieve the trips in the cart, for adding a available reduction
|
99
|
+
* to a specific trip (rather than to the whole cart).
|
100
|
+
* @see {@link Booking.addReduction} for detailed info on how to add a reduction.
|
101
|
+
* @returns An {@link ErrorResponse} object in case of error, a list of {@link ReductionTrip} otherwise, representing the trips in the cart.
|
102
|
+
*/
|
103
|
+
getCartTrips(): Promise<ErrorResponse | ReductionTrip[]>;
|
96
104
|
}
|
97
105
|
export declare namespace JourneyBooking {
|
98
106
|
const createBooking: (env: MTSEnvs, sub_key: string, onCartExpiration: () => void, debug: boolean, language: string, access_token?: string, sellerId?: number, resellerId?: number) => Promise<JourneyBooking>;
|
@@ -64,6 +64,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
65
65
|
exports.JourneyBooking = void 0;
|
66
66
|
var ErrorResponse_1 = require("../types/ErrorResponse");
|
67
|
+
var processBookingSteps_1 = require("../utils/processBookingSteps");
|
67
68
|
var booking_1 = require("./booking");
|
68
69
|
var JourneyBooking = /** @class */ (function (_super) {
|
69
70
|
__extends(JourneyBooking, _super);
|
@@ -106,13 +107,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
106
107
|
_this.cartId = cart.id;
|
107
108
|
_this.bookingDueDate = cartDate; // See Booking class
|
108
109
|
// Fill the booking process status
|
109
|
-
_this.bookingStepsToStatus =
|
110
|
-
var bookingStep = _a[0], values = _a[1];
|
111
|
-
return [
|
112
|
-
bookingStep,
|
113
|
-
values
|
114
|
-
];
|
115
|
-
}));
|
110
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(cart.stepsToStatus);
|
116
111
|
_this.createCartTimer(cartDate);
|
117
112
|
}
|
118
113
|
})];
|
@@ -260,13 +255,7 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
260
255
|
// Save the cartId in the localStorage
|
261
256
|
localStorage.setItem("cartId", response.cart.id.toString());
|
262
257
|
// Fill the booking process status
|
263
|
-
_this.bookingStepsToStatus =
|
264
|
-
var bookingStep = _a[0], values = _a[1];
|
265
|
-
return [
|
266
|
-
bookingStep,
|
267
|
-
values
|
268
|
-
];
|
269
|
-
}));
|
258
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
270
259
|
_this.bookingDueDate = new Date(response.cart.bookingDueDate);
|
271
260
|
_this.createCartTimer(new Date(response.cart.bookingDueDate));
|
272
261
|
return response.cart;
|
@@ -367,11 +356,12 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
367
356
|
/**
|
368
357
|
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
369
358
|
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
370
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
359
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
371
360
|
*/
|
372
361
|
JourneyBooking.prototype.updateBuyerPassengersDetails = function (passengersDetails) {
|
373
362
|
return __awaiter(this, void 0, void 0, function () {
|
374
363
|
var buyerPassengersDetails, request, url;
|
364
|
+
var _this = this;
|
375
365
|
return __generator(this, function (_a) {
|
376
366
|
// First check that it is possible to call this API
|
377
367
|
if (!this.cart) {
|
@@ -391,7 +381,12 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
391
381
|
});
|
392
382
|
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details");
|
393
383
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
394
|
-
|
384
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
385
|
+
return response;
|
386
|
+
}
|
387
|
+
// Update the booking process status
|
388
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
389
|
+
return true;
|
395
390
|
})];
|
396
391
|
});
|
397
392
|
});
|
@@ -456,11 +451,12 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
456
451
|
* @description This method shall be called when the user wants to change the assigned seats of a trip.
|
457
452
|
* @param {number} tripId The id of the trip for which the seats should be changed
|
458
453
|
* @param {number[]} newSeatsIds The ids of the new seats, as found the {@link BusMatrix}
|
459
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
454
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
460
455
|
*/
|
461
456
|
JourneyBooking.prototype.changeSeatsOfTrip = function (tripId, newSeatsIds) {
|
462
457
|
return __awaiter(this, void 0, void 0, function () {
|
463
458
|
var seatSelectionStatus, url;
|
459
|
+
var _this = this;
|
464
460
|
return __generator(this, function (_a) {
|
465
461
|
// First check that it is possible to call this API
|
466
462
|
if (!this.cart) {
|
@@ -472,7 +468,33 @@ var JourneyBooking = /** @class */ (function (_super) {
|
|
472
468
|
}
|
473
469
|
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/seats");
|
474
470
|
return [2 /*return*/, this.callPostApi(url, { tripId: tripId, seatsIds: newSeatsIds }).then(function (response) {
|
475
|
-
|
471
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
472
|
+
return response;
|
473
|
+
}
|
474
|
+
// Update the booking process status
|
475
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
476
|
+
return true;
|
477
|
+
})];
|
478
|
+
});
|
479
|
+
});
|
480
|
+
};
|
481
|
+
/**
|
482
|
+
* @description This method shall be called when the user wants to retrieve the trips in the cart, for adding a available reduction
|
483
|
+
* to a specific trip (rather than to the whole cart).
|
484
|
+
* @see {@link Booking.addReduction} for detailed info on how to add a reduction.
|
485
|
+
* @returns An {@link ErrorResponse} object in case of error, a list of {@link ReductionTrip} otherwise, representing the trips in the cart.
|
486
|
+
*/
|
487
|
+
JourneyBooking.prototype.getCartTrips = function () {
|
488
|
+
return __awaiter(this, void 0, void 0, function () {
|
489
|
+
var url;
|
490
|
+
return __generator(this, function (_a) {
|
491
|
+
// First check that it is possible to call this API
|
492
|
+
if (!this.cart) {
|
493
|
+
throw Error("Cart is not initialized yet");
|
494
|
+
}
|
495
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/payment/reduction/trips");
|
496
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
497
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.trips;
|
476
498
|
})];
|
477
499
|
});
|
478
500
|
});
|
@@ -71,9 +71,9 @@ export declare class ServiceBooking extends Booking {
|
|
71
71
|
/**
|
72
72
|
* @description This method shall be called when the user wants to update the buyer information.
|
73
73
|
* @param {Person} buyerDetails The object containing the buyer information.
|
74
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
74
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
75
75
|
*/
|
76
|
-
updateBuyerPassengersDetails(buyerDetails: Person): Promise<ErrorResponse |
|
76
|
+
updateBuyerPassengersDetails(buyerDetails: Person): Promise<ErrorResponse | boolean>;
|
77
77
|
}
|
78
78
|
export declare namespace ServiceBooking {
|
79
79
|
const createBooking: (env: MTSEnvs, sub_key: string, onCartExpiration: () => void, debug: boolean, language: string, access_token?: string, sellerId?: number, resellerId?: number) => Promise<ServiceBooking>;
|
@@ -64,6 +64,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
65
65
|
exports.ServiceBooking = void 0;
|
66
66
|
var ErrorResponse_1 = require("../types/ErrorResponse");
|
67
|
+
var processBookingSteps_1 = require("../utils/processBookingSteps");
|
67
68
|
var booking_1 = require("./booking");
|
68
69
|
var ServiceBooking = /** @class */ (function (_super) {
|
69
70
|
__extends(ServiceBooking, _super);
|
@@ -106,13 +107,7 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
106
107
|
_this.cartId = cart.id;
|
107
108
|
_this.bookingDueDate = cartDate; // See Booking class
|
108
109
|
// Fill the booking process status
|
109
|
-
_this.bookingStepsToStatus =
|
110
|
-
var bookingStep = _a[0], values = _a[1];
|
111
|
-
return [
|
112
|
-
bookingStep,
|
113
|
-
values
|
114
|
-
];
|
115
|
-
}));
|
110
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(cart.stepsToStatus);
|
116
111
|
_this.createCartTimer(cartDate);
|
117
112
|
}
|
118
113
|
})];
|
@@ -253,13 +248,7 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
253
248
|
// Save the cartId in the localStorage
|
254
249
|
localStorage.setItem("cartId", response.cart.id.toString());
|
255
250
|
// Fill the booking process status
|
256
|
-
_this.bookingStepsToStatus =
|
257
|
-
var bookingStep = _a[0], values = _a[1];
|
258
|
-
return [
|
259
|
-
bookingStep,
|
260
|
-
values
|
261
|
-
];
|
262
|
-
}));
|
251
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
263
252
|
_this.bookingDueDate = new Date(response.cart.bookingDueDate);
|
264
253
|
_this.createCartTimer(new Date(response.cart.bookingDueDate));
|
265
254
|
return response.cart;
|
@@ -341,11 +330,12 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
341
330
|
/**
|
342
331
|
* @description This method shall be called when the user wants to update the buyer information.
|
343
332
|
* @param {Person} buyerDetails The object containing the buyer information.
|
344
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
333
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
345
334
|
*/
|
346
335
|
ServiceBooking.prototype.updateBuyerPassengersDetails = function (buyerDetails) {
|
347
336
|
return __awaiter(this, void 0, void 0, function () {
|
348
337
|
var buyerPassengersDetails, request, url;
|
338
|
+
var _this = this;
|
349
339
|
return __generator(this, function (_a) {
|
350
340
|
// First check that it is possible to call this API
|
351
341
|
if (!this.cart) {
|
@@ -361,7 +351,12 @@ var ServiceBooking = /** @class */ (function (_super) {
|
|
361
351
|
};
|
362
352
|
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details");
|
363
353
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
364
|
-
|
354
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
355
|
+
return response;
|
356
|
+
}
|
357
|
+
// Update the booking process status
|
358
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
359
|
+
return true;
|
365
360
|
})];
|
366
361
|
});
|
367
362
|
});
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { MTSEnvs } from "../config";
|
2
2
|
import { ErrorResponse } from "../types/ErrorResponse";
|
3
|
-
import { Cart } from "../types/common/Cart";
|
4
3
|
import { EditPassengersDetailsRequest, GetBuyerPassengersDetailsResponse, Person } from "../types/common/Person";
|
5
4
|
import { GetSubscriptionAvailabilityRequest, GetSubscriptionAvailabilityResponse } from "../types/subscriptions/SubscriptionAvailabilities";
|
6
5
|
import { CreateSubscriptionCartRequest, SubscriptionCart } from "../types/subscriptions/SubscriptionCart";
|
@@ -21,10 +20,10 @@ export declare class SubscriptionBooking extends Booking {
|
|
21
20
|
* @param {number} [resellerId=undefined] The id of the reseller.
|
22
21
|
*/
|
23
22
|
constructor(env: MTSEnvs, sub_key: string, onCartExpiration: () => void, debug?: boolean, language?: string, access_token?: string, sellerId?: number, resellerId?: number);
|
24
|
-
getCart():
|
23
|
+
getCart(): SubscriptionCart | undefined;
|
25
24
|
fetchAndSetCart(cartId: number): Promise<void>;
|
26
25
|
private createCartTimer;
|
27
|
-
fetchCart(cartId: number): Promise<
|
26
|
+
fetchCart(cartId: number): Promise<SubscriptionCart>;
|
28
27
|
/**
|
29
28
|
* This method allows to delete a cart, thus allowing the user to exit from the booking process.
|
30
29
|
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise. Note that also in case of error, all
|
@@ -91,9 +90,9 @@ export declare class SubscriptionBooking extends Booking {
|
|
91
90
|
/**
|
92
91
|
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
93
92
|
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
94
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
93
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
95
94
|
*/
|
96
|
-
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse |
|
95
|
+
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse | boolean>;
|
97
96
|
}
|
98
97
|
export declare namespace SubscriptionBooking {
|
99
98
|
const createBooking: (env: MTSEnvs, sub_key: string, onCartExpiration: () => void, debug: boolean, language: string, access_token?: string, sellerId?: number, resellerId?: number) => Promise<SubscriptionBooking>;
|
@@ -64,6 +64,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
65
65
|
exports.SubscriptionBooking = void 0;
|
66
66
|
var ErrorResponse_1 = require("../types/ErrorResponse");
|
67
|
+
var processBookingSteps_1 = require("../utils/processBookingSteps");
|
67
68
|
var booking_1 = require("./booking");
|
68
69
|
var SubscriptionBooking = /** @class */ (function (_super) {
|
69
70
|
__extends(SubscriptionBooking, _super);
|
@@ -309,13 +310,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
309
310
|
// Save the cartId in the localStorage
|
310
311
|
localStorage.setItem("cartId", response.cart.id.toString());
|
311
312
|
// Fill the booking process status
|
312
|
-
_this.bookingStepsToStatus =
|
313
|
-
var bookingStep = _a[0], values = _a[1];
|
314
|
-
return [
|
315
|
-
bookingStep,
|
316
|
-
values
|
317
|
-
];
|
318
|
-
}));
|
313
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.cart.stepsToStatus);
|
319
314
|
_this.bookingDueDate = new Date(response.cart.bookingDueDate);
|
320
315
|
_this.createCartTimer(new Date(response.cart.bookingDueDate));
|
321
316
|
return response.cart;
|
@@ -416,11 +411,12 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
416
411
|
/**
|
417
412
|
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
418
413
|
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
419
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
414
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
420
415
|
*/
|
421
416
|
SubscriptionBooking.prototype.updateBuyerPassengersDetails = function (passengersDetails) {
|
422
417
|
return __awaiter(this, void 0, void 0, function () {
|
423
418
|
var buyerPassengersDetails, request, url;
|
419
|
+
var _this = this;
|
424
420
|
return __generator(this, function (_a) {
|
425
421
|
// First check that it is possible to call this API
|
426
422
|
if (!this.cart) {
|
@@ -440,7 +436,12 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
440
436
|
});
|
441
437
|
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details");
|
442
438
|
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
443
|
-
|
439
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
440
|
+
return response;
|
441
|
+
}
|
442
|
+
// Update the booking process status
|
443
|
+
_this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
|
444
|
+
return true;
|
444
445
|
})];
|
445
446
|
});
|
446
447
|
});
|
package/lib/index.d.ts
CHANGED
@@ -21,4 +21,4 @@ export { ServiceCart, ServiceBookingType, CreateServiceCartRequest } from "./typ
|
|
21
21
|
export { ServiceInfo } from "./types/services/ServiceInfo";
|
22
22
|
export { Subscription } from "./types/subscriptions/Subscriptions";
|
23
23
|
export { GetSubscriptionAvailabilityRequest, GetSubscriptionAvailabilityResponse, SubscriptionCalendarDayPeriodInfo } from "./types/subscriptions/SubscriptionAvailabilities";
|
24
|
-
export { CreateSubscriptionCartRequest, SubscriptionPeriod } from "./types/subscriptions/SubscriptionCart";
|
24
|
+
export { SubscriptionCart, SubscriptionBookingType, CreateSubscriptionCartRequest, SubscriptionPeriod } from "./types/subscriptions/SubscriptionCart";
|
@@ -51,7 +51,14 @@ export declare enum GatewayTypes {
|
|
51
51
|
PAYPAL = "PAYPAL"
|
52
52
|
}
|
53
53
|
/**
|
54
|
-
* @
|
54
|
+
* @enum {string} This enum contains the possible values for the `paymentMethod` parameter of the {@link Booking.issueTickets} function.
|
55
|
+
*
|
56
|
+
* @property {string} ZERO_COST: Only for Sellers: 100% discount
|
57
|
+
* @property {string} PAY_LATER: Only for Sellers: Ticket will be paid at the counter/bus
|
58
|
+
* @property {string} WALLET: Only for Resellers: the ticket will be paid with the wallet balance
|
59
|
+
* @property {string} CARD: Pay with card at the Seller/Reseller counter
|
60
|
+
* @property {string} CASH: Pay with cash at the Seller/Reseller counter
|
61
|
+
* @property {string} ONLINE: Pay online using payment gateways
|
55
62
|
*/
|
56
63
|
export declare enum PaymentMethods {
|
57
64
|
CARD = "CARD",
|
@@ -59,5 +66,6 @@ export declare enum PaymentMethods {
|
|
59
66
|
CREDIT_FROM_CHANGE = "CREDIT_FROM_CHANGE",
|
60
67
|
PAY_LATER = "PAY_LATER",
|
61
68
|
ONLINE_CARD = "ONLINE CARD",
|
62
|
-
WALLET = "WALLET"
|
69
|
+
WALLET = "WALLET",
|
70
|
+
ZERO_COST = "ZERO_COST"
|
63
71
|
}
|
@@ -11,7 +11,14 @@ var GatewayTypes;
|
|
11
11
|
GatewayTypes["PAYPAL"] = "PAYPAL";
|
12
12
|
})(GatewayTypes || (exports.GatewayTypes = GatewayTypes = {}));
|
13
13
|
/**
|
14
|
-
* @
|
14
|
+
* @enum {string} This enum contains the possible values for the `paymentMethod` parameter of the {@link Booking.issueTickets} function.
|
15
|
+
*
|
16
|
+
* @property {string} ZERO_COST: Only for Sellers: 100% discount
|
17
|
+
* @property {string} PAY_LATER: Only for Sellers: Ticket will be paid at the counter/bus
|
18
|
+
* @property {string} WALLET: Only for Resellers: the ticket will be paid with the wallet balance
|
19
|
+
* @property {string} CARD: Pay with card at the Seller/Reseller counter
|
20
|
+
* @property {string} CASH: Pay with cash at the Seller/Reseller counter
|
21
|
+
* @property {string} ONLINE: Pay online using payment gateways
|
15
22
|
*/
|
16
23
|
var PaymentMethods;
|
17
24
|
(function (PaymentMethods) {
|
@@ -21,4 +28,5 @@ var PaymentMethods;
|
|
21
28
|
PaymentMethods["PAY_LATER"] = "PAY_LATER";
|
22
29
|
PaymentMethods["ONLINE_CARD"] = "ONLINE CARD";
|
23
30
|
PaymentMethods["WALLET"] = "WALLET";
|
31
|
+
PaymentMethods["ZERO_COST"] = "ZERO_COST";
|
24
32
|
})(PaymentMethods || (exports.PaymentMethods = PaymentMethods = {}));
|
@@ -8,3 +8,13 @@ export type Trip = {
|
|
8
8
|
tariffTypes: TariffType[];
|
9
9
|
termsTypes: TermsType[];
|
10
10
|
};
|
11
|
+
/**
|
12
|
+
* This type is used to represent a trip for the reduction page. This only makes sense for a JourneyBooking,
|
13
|
+
* and it allows to add a reduction to a specific trip (rather than to the whole cart).
|
14
|
+
* @property { number } id - The id of the trip
|
15
|
+
* @property { string } name - The name of the trip
|
16
|
+
*/
|
17
|
+
export type ReductionTrip = {
|
18
|
+
id: number;
|
19
|
+
name: string;
|
20
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* This function process the stepsToStatus object returned by the BE in several APIs and returns the processed Map.
|
3
|
+
* This is necessary because Typescript does not treat the jsonized map as an actual Map making it impossible to use.
|
4
|
+
* @param stepsToStatus the stepsToStatus object returned by the BE
|
5
|
+
* @returns The processed Map
|
6
|
+
*/
|
7
|
+
export declare const processBookingSteps: (stepsToStatus: any) => Map<string, boolean[]>;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.processBookingSteps = void 0;
|
4
|
+
/**
|
5
|
+
* This function process the stepsToStatus object returned by the BE in several APIs and returns the processed Map.
|
6
|
+
* This is necessary because Typescript does not treat the jsonized map as an actual Map making it impossible to use.
|
7
|
+
* @param stepsToStatus the stepsToStatus object returned by the BE
|
8
|
+
* @returns The processed Map
|
9
|
+
*/
|
10
|
+
var processBookingSteps = function (stepsToStatus) {
|
11
|
+
try {
|
12
|
+
return new Map(Object.entries(stepsToStatus).map(function (_a) {
|
13
|
+
var bookingStep = _a[0], values = _a[1];
|
14
|
+
return [
|
15
|
+
bookingStep,
|
16
|
+
values
|
17
|
+
];
|
18
|
+
}));
|
19
|
+
}
|
20
|
+
catch (error) {
|
21
|
+
throw new Error("Error while processing booking steps");
|
22
|
+
}
|
23
|
+
};
|
24
|
+
exports.processBookingSteps = processBookingSteps;
|