mts-booking-library 1.2.10 → 1.2.11
Sign up to get free protection for your applications and to get access to all the features.
- 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 +2 -2
- package/lib/booking/subscriptionBooking.js +10 -9
- 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
|
});
|
@@ -90,9 +90,9 @@ export declare class SubscriptionBooking extends Booking {
|
|
90
90
|
/**
|
91
91
|
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
92
92
|
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
93
|
-
* @returns An {@link ErrorResponse} object in case of error,
|
93
|
+
* @returns An {@link ErrorResponse} object in case of error, true otherwise.
|
94
94
|
*/
|
95
|
-
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse |
|
95
|
+
updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse | boolean>;
|
96
96
|
}
|
97
97
|
export declare namespace SubscriptionBooking {
|
98
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
|
});
|
@@ -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;
|