mts-booking-library 1.1.10 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/booking/booking.d.ts +61 -10
- package/lib/booking/booking.js +174 -12
- package/lib/booking/journeyBooking.d.ts +51 -18
- package/lib/booking/journeyBooking.js +200 -48
- package/lib/booking/serviceBooking.d.ts +5 -4
- package/lib/booking/serviceBooking.js +45 -12
- package/lib/booking/subscriptionBooking.d.ts +30 -7
- package/lib/booking/subscriptionBooking.js +154 -15
- package/lib/index.d.ts +6 -2
- package/lib/index.js +8 -2
- package/lib/types/ErrorResponse.d.ts +1 -0
- package/lib/types/ErrorResponse.js +5 -0
- package/lib/types/common/Cart.d.ts +14 -26
- package/lib/types/common/Extra.d.ts +20 -0
- package/lib/types/common/Extra.js +2 -0
- package/lib/types/common/Payment.d.ts +63 -0
- package/lib/types/common/Payment.js +24 -0
- package/lib/types/common/Person.d.ts +29 -7
- package/lib/types/common/Person.js +8 -1
- package/lib/types/common/Reduction.d.ts +31 -0
- package/lib/types/common/Reduction.js +2 -0
- package/lib/types/common/Tariffs.d.ts +21 -0
- package/lib/types/journeys/BusMatrix.d.ts +34 -0
- package/lib/types/journeys/BusMatrix.js +20 -0
- package/lib/types/services/ServiceCart.d.ts +1 -1
- package/lib/utils/apiCall.js +14 -8
- package/package.json +3 -3
@@ -52,6 +52,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
52
52
|
};
|
53
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
54
54
|
exports.SubscriptionBooking = void 0;
|
55
|
+
var ErrorResponse_1 = require("../types/ErrorResponse");
|
55
56
|
var booking_1 = require("./booking");
|
56
57
|
var SubscriptionBooking = /** @class */ (function (_super) {
|
57
58
|
__extends(SubscriptionBooking, _super);
|
@@ -90,7 +91,14 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
90
91
|
if (cartDate > new Date()) {
|
91
92
|
_this.cart = cart;
|
92
93
|
_this.bookingDueDate = cartDate; // See Booking class
|
93
|
-
|
94
|
+
// Fill the booking process status
|
95
|
+
_this.bookingStepsToStatus = new Map(Object.entries(cart.stepsToStatus).map(function (_a) {
|
96
|
+
var bookingStep = _a[0], values = _a[1];
|
97
|
+
return [
|
98
|
+
bookingStep,
|
99
|
+
values
|
100
|
+
];
|
101
|
+
}));
|
94
102
|
_this.createCartTimer(cartDate);
|
95
103
|
}
|
96
104
|
});
|
@@ -105,7 +113,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
105
113
|
setTimeout(function () {
|
106
114
|
localStorage.removeItem("cartId");
|
107
115
|
// Put actions that have to be done when timer expires here
|
108
|
-
_this.
|
116
|
+
_this.bookingStepsToStatus = new Map();
|
109
117
|
_this.cart = undefined;
|
110
118
|
_this.bookingDueDate = undefined; // See Booking class
|
111
119
|
_this.onCartExpiration();
|
@@ -119,7 +127,13 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
119
127
|
var url;
|
120
128
|
return __generator(this, function (_a) {
|
121
129
|
url = "".concat(this.config.API_ENDPOINT, "/booking/cart?").concat(new URLSearchParams({ cartId: cartId.toString() }));
|
122
|
-
return [2 /*return*/, this.callGetApi(url)
|
130
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
131
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
132
|
+
localStorage.removeItem("cartId");
|
133
|
+
throw new Error("Error ".concat(response.httpStatus, " ").concat(response.message));
|
134
|
+
}
|
135
|
+
return response.cart;
|
136
|
+
})];
|
123
137
|
});
|
124
138
|
});
|
125
139
|
};
|
@@ -132,7 +146,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
132
146
|
var url;
|
133
147
|
return __generator(this, function (_a) {
|
134
148
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/departures?");
|
135
|
-
return [2 /*return*/, this.callGetApi(url)
|
149
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
150
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.departures;
|
151
|
+
})];
|
136
152
|
});
|
137
153
|
});
|
138
154
|
};
|
@@ -147,7 +163,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
147
163
|
return __generator(this, function (_a) {
|
148
164
|
searchParams = new URLSearchParams({ departureStopName: departureStopName });
|
149
165
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/destinations?").concat(searchParams);
|
150
|
-
return [2 /*return*/, this.callGetApi(url)
|
166
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
167
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.destinations;
|
168
|
+
})];
|
151
169
|
});
|
152
170
|
});
|
153
171
|
};
|
@@ -167,7 +185,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
167
185
|
destinationStopName: destinationStopName
|
168
186
|
});
|
169
187
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/validityTypes?").concat(searchParams);
|
170
|
-
return [2 /*return*/, this.callGetApi(url)
|
188
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
189
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.validityTypes;
|
190
|
+
})];
|
171
191
|
});
|
172
192
|
});
|
173
193
|
};
|
@@ -190,7 +210,9 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
190
210
|
validityType: validityType
|
191
211
|
});
|
192
212
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/search?").concat(searchParams);
|
193
|
-
return [2 /*return*/, this.callGetApi(url)
|
213
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
214
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.subscriptions;
|
215
|
+
})];
|
194
216
|
});
|
195
217
|
});
|
196
218
|
};
|
@@ -215,14 +237,16 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
215
237
|
validityType: request.validityType
|
216
238
|
});
|
217
239
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/availabilities?").concat(searchParams);
|
218
|
-
return [2 /*return*/, this.callGetApi(url)
|
240
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
241
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
242
|
+
})];
|
219
243
|
});
|
220
244
|
});
|
221
245
|
};
|
222
246
|
/**
|
223
247
|
* This method creates a subscription cart for the given parameters.
|
224
248
|
* @param {CreateSubscriptionCartRequest} request the request object containing the parameters for the availability check
|
225
|
-
* @returns
|
249
|
+
* @returns {SubscriptionCart} The created cart
|
226
250
|
*/
|
227
251
|
SubscriptionBooking.prototype.createSubscriptionCart = function (request) {
|
228
252
|
return __awaiter(this, void 0, void 0, function () {
|
@@ -230,12 +254,127 @@ var SubscriptionBooking = /** @class */ (function (_super) {
|
|
230
254
|
var _this = this;
|
231
255
|
return __generator(this, function (_a) {
|
232
256
|
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions");
|
233
|
-
return [2 /*return*/, this.callPostApi(url, request).then(function (
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
257
|
+
return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
|
258
|
+
// Check for errors
|
259
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
260
|
+
return response;
|
261
|
+
}
|
262
|
+
_this.cart = response.cart;
|
263
|
+
// Save the cartId in the localStorage
|
264
|
+
localStorage.setItem("cartId", response.cart.id.toString());
|
265
|
+
// Fill the booking process status
|
266
|
+
_this.bookingStepsToStatus = new Map(Object.entries(response.cart.stepsToStatus).map(function (_a) {
|
267
|
+
var bookingStep = _a[0], values = _a[1];
|
268
|
+
return [
|
269
|
+
bookingStep,
|
270
|
+
values
|
271
|
+
];
|
272
|
+
}));
|
273
|
+
_this.bookingDueDate = new Date(response.cart.bookingDueDate);
|
274
|
+
_this.createCartTimer(new Date(response.cart.bookingDueDate));
|
275
|
+
return response.cart;
|
276
|
+
})];
|
277
|
+
});
|
278
|
+
});
|
279
|
+
};
|
280
|
+
/**
|
281
|
+
* @description This method shall be called when the user wants to retrieve information about the buyer and the passengers.
|
282
|
+
* @returns An object of type {@link GetBuyerPassengersDetailsResponse} containing the buyer and the passengers information,
|
283
|
+
* as well as a list of the available tariffs for each trip.
|
284
|
+
*/
|
285
|
+
SubscriptionBooking.prototype.getBuyerPassengersDetails = function () {
|
286
|
+
return __awaiter(this, void 0, void 0, function () {
|
287
|
+
var buyerPassengersDetails, url;
|
288
|
+
return __generator(this, function (_a) {
|
289
|
+
// First check that it is possible to call this API
|
290
|
+
if (!this.cart) {
|
291
|
+
throw Error("Cart is not initialized yet");
|
292
|
+
}
|
293
|
+
buyerPassengersDetails = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.BUYER_PASSENGERS);
|
294
|
+
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
295
|
+
throw Error("The status of the cart does not allow to call this API");
|
296
|
+
}
|
297
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details?");
|
298
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
299
|
+
// Check for errors
|
300
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
301
|
+
return response;
|
302
|
+
}
|
303
|
+
// Parse the map for the tariffs
|
304
|
+
var tripsToTariffs = new Map(Object.entries(response.tariffs).map(function (_a) {
|
305
|
+
var tripId = _a[0], tariff = _a[1];
|
306
|
+
return [
|
307
|
+
+tripId,
|
308
|
+
tariff
|
309
|
+
];
|
310
|
+
}));
|
311
|
+
return {
|
312
|
+
buyer: response.buyer,
|
313
|
+
passengers: response.passengers,
|
314
|
+
tariffs: tripsToTariffs
|
315
|
+
};
|
316
|
+
})];
|
317
|
+
});
|
318
|
+
});
|
319
|
+
};
|
320
|
+
/**
|
321
|
+
* @description This method shall be called when the user wants to retrieve information about an esisting buyer.
|
322
|
+
* @param {string} [linkavelCardNumber=undefined] The linkavel card number of the buyer. This parameter is required if linkavelCardPhoneNumber is not set.
|
323
|
+
* A linkavelCardNumber is a string of 9 digits.
|
324
|
+
* @param {string} [linkavelCardPhoneNumber=undefined] The linkavel card phone number of the buyer. This parameter is required if linkavelCardNumber is not set.
|
325
|
+
* @returns An object of type {@link GetBuyerPassengersDetailsResponse} containing the buyer and the passengers information,
|
326
|
+
* as well as a list of the available tariffs for each trip.
|
327
|
+
*/
|
328
|
+
SubscriptionBooking.prototype.getBuyer = function (linkavelCardNumber, linkavelCardPhoneNumber) {
|
329
|
+
return __awaiter(this, void 0, void 0, function () {
|
330
|
+
var buyerPassengersDetails, searchParams, url;
|
331
|
+
return __generator(this, function (_a) {
|
332
|
+
// First check that it is possible to call this API
|
333
|
+
if (!this.cart) {
|
334
|
+
throw Error("Cart is not initialized yet");
|
335
|
+
}
|
336
|
+
buyerPassengersDetails = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.BUYER_PASSENGERS);
|
337
|
+
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
338
|
+
throw Error("The status of the cart does not allow to call this API");
|
339
|
+
}
|
340
|
+
if (!linkavelCardNumber && !linkavelCardPhoneNumber) {
|
341
|
+
throw Error("At least one of the parameters linkavelCardNumber and linkavelCardPhoneNumber must be set");
|
342
|
+
}
|
343
|
+
searchParams = new URLSearchParams({
|
344
|
+
linkavelCardNumber: linkavelCardNumber !== null && linkavelCardNumber !== void 0 ? linkavelCardNumber : "",
|
345
|
+
linkavelCardPhoneNumber: linkavelCardPhoneNumber !== null && linkavelCardPhoneNumber !== void 0 ? linkavelCardPhoneNumber : "",
|
346
|
+
});
|
347
|
+
url = "".concat(this.config.API_ENDPOINT, "/buyers?").concat(searchParams, "}");
|
348
|
+
return [2 /*return*/, this.callGetApi(url).then(function (response) {
|
349
|
+
// Check for errors
|
350
|
+
if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
|
351
|
+
return response;
|
352
|
+
}
|
353
|
+
return response.buyers[0];
|
354
|
+
})];
|
355
|
+
});
|
356
|
+
});
|
357
|
+
};
|
358
|
+
/**
|
359
|
+
* @description This methosd shall be called when the user wants to update the buyer and the passengers information.
|
360
|
+
* @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
|
361
|
+
* @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
|
362
|
+
*/
|
363
|
+
SubscriptionBooking.prototype.updateBuyerPassengersDetails = function (passengersDetails) {
|
364
|
+
return __awaiter(this, void 0, void 0, function () {
|
365
|
+
var buyerPassengersDetails, url;
|
366
|
+
return __generator(this, function (_a) {
|
367
|
+
// First check that it is possible to call this API
|
368
|
+
if (!this.cart) {
|
369
|
+
throw Error("Cart is not initialized yet");
|
370
|
+
}
|
371
|
+
buyerPassengersDetails = this.bookingStepsToStatus.get(booking_1.Booking.BookingSteps.BUYER_PASSENGERS);
|
372
|
+
if (!buyerPassengersDetails || !buyerPassengersDetails[0]) {
|
373
|
+
throw Error("The status of the cart does not allow to call this API");
|
374
|
+
}
|
375
|
+
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details");
|
376
|
+
return [2 /*return*/, this.callPostApi(url, passengersDetails).then(function (response) {
|
377
|
+
return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
|
239
378
|
})];
|
240
379
|
});
|
241
380
|
});
|
package/lib/index.d.ts
CHANGED
@@ -2,9 +2,13 @@ export { Booking } from "./booking/booking";
|
|
2
2
|
export { JourneyBooking } from "./booking/journeyBooking";
|
3
3
|
export { ServiceBooking } from "./booking/serviceBooking";
|
4
4
|
export { SubscriptionBooking } from "./booking/subscriptionBooking";
|
5
|
-
export { Person,
|
6
|
-
export {
|
5
|
+
export { Person, DEFAULT_PERSON, initializePerson } from "./types/common/Person";
|
6
|
+
export { EditPassengerRequestType, EditPassengersDetailsRequest, GetBuyerPassengersDetailsResponse } from "./types/common/Person";
|
7
|
+
export { Tariff, TariffsMatrix, TariffSummary, TariffType, TermsType, PassengerTariff, ExtraTariff } from "./types/common/Tariffs";
|
8
|
+
export { Reduction, AddReductionRequest } from "./types/common/Reduction";
|
9
|
+
export { Gateway, GetSellerGatewaysResponse, GetPaymentInformationFromGatewayResponse, GatewayTypes, PaymentMethods } from "./types/common/Payment";
|
7
10
|
export { ErrorResponse } from "./types/ErrorResponse";
|
11
|
+
export { BusLayoutCell, BusMatrix, BusCellTypes, SeatStatus } from "./types/journeys/BusMatrix";
|
8
12
|
export { JourneyCart, JourneyBookingType, CreateJourneyCartRequest, TripBookingInfo, DEFAULT_CREATE_JOURNEY_CART } from "./types/journeys/JourneyCart";
|
9
13
|
export { JourneyInfo } from "./types/journeys/JourneyInfo";
|
10
14
|
export { JourneySearchRequest, JourneySearchResult, DEFAULT_JOURNEY_SEARCH } from "./types/journeys/JourneySearch";
|
package/lib/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DEFAULT_JOURNEY_SEARCH = exports.DEFAULT_CREATE_JOURNEY_CART = exports.DEFAULT_PERSON = exports.SubscriptionBooking = exports.ServiceBooking = exports.JourneyBooking = exports.Booking = void 0;
|
3
|
+
exports.DEFAULT_JOURNEY_SEARCH = exports.DEFAULT_CREATE_JOURNEY_CART = exports.SeatStatus = exports.BusCellTypes = exports.PaymentMethods = exports.GatewayTypes = exports.initializePerson = exports.DEFAULT_PERSON = exports.SubscriptionBooking = exports.ServiceBooking = exports.JourneyBooking = exports.Booking = void 0;
|
4
4
|
//#region Export Booking classes
|
5
5
|
var booking_1 = require("./booking/booking");
|
6
6
|
Object.defineProperty(exports, "Booking", { enumerable: true, get: function () { return booking_1.Booking; } });
|
@@ -15,9 +15,15 @@ Object.defineProperty(exports, "SubscriptionBooking", { enumerable: true, get: f
|
|
15
15
|
// @note: Cart is not exported because it is extended by other types
|
16
16
|
var Person_1 = require("./types/common/Person");
|
17
17
|
Object.defineProperty(exports, "DEFAULT_PERSON", { enumerable: true, get: function () { return Person_1.DEFAULT_PERSON; } });
|
18
|
+
Object.defineProperty(exports, "initializePerson", { enumerable: true, get: function () { return Person_1.initializePerson; } });
|
19
|
+
var Payment_1 = require("./types/common/Payment");
|
20
|
+
Object.defineProperty(exports, "GatewayTypes", { enumerable: true, get: function () { return Payment_1.GatewayTypes; } });
|
21
|
+
Object.defineProperty(exports, "PaymentMethods", { enumerable: true, get: function () { return Payment_1.PaymentMethods; } });
|
18
22
|
//#endregion
|
19
23
|
//#region Export JourneyBooking types
|
20
|
-
|
24
|
+
var BusMatrix_1 = require("./types/journeys/BusMatrix");
|
25
|
+
Object.defineProperty(exports, "BusCellTypes", { enumerable: true, get: function () { return BusMatrix_1.BusCellTypes; } });
|
26
|
+
Object.defineProperty(exports, "SeatStatus", { enumerable: true, get: function () { return BusMatrix_1.SeatStatus; } });
|
21
27
|
var JourneyCart_1 = require("./types/journeys/JourneyCart");
|
22
28
|
Object.defineProperty(exports, "DEFAULT_CREATE_JOURNEY_CART", { enumerable: true, get: function () { return JourneyCart_1.DEFAULT_CREATE_JOURNEY_CART; } });
|
23
29
|
var JourneySearch_1 = require("./types/journeys/JourneySearch");
|
@@ -1,2 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.objectIsMTSErrorResponse = void 0;
|
4
|
+
var objectIsMTSErrorResponse = function (error) {
|
5
|
+
return "mtsCode" in error && "httpStatus" in error && "message" in error;
|
6
|
+
};
|
7
|
+
exports.objectIsMTSErrorResponse = objectIsMTSErrorResponse;
|
@@ -1,14 +1,20 @@
|
|
1
1
|
import { Booking } from "../../booking/booking";
|
2
|
+
import { Reduction } from "./Reduction";
|
3
|
+
import { Extra } from "./Extra";
|
2
4
|
/**
|
3
5
|
* @description Cart is the object returned by the API when a cart is created.
|
4
6
|
* Note that depending on the type of booking, this type will be extended with different fields:
|
5
|
-
* - TourCart: {@link
|
6
|
-
* - JourneyCart: {@link JourneyCart
|
7
|
-
* - SubscriptionCart: {@link SubscriptionCart
|
7
|
+
* - TourCart: {@link ServiceCart}
|
8
|
+
* - JourneyCart: {@link JourneyCart}
|
9
|
+
* - SubscriptionCart: {@link SubscriptionCart}
|
8
10
|
* @property {number} id The id of the cart
|
9
11
|
* @property {string} cartCode The code of the cart
|
10
|
-
* @property {
|
11
|
-
*
|
12
|
+
* @property {Map<string, boolean[]>} stepsToStatus This data structure describes the steps of the booking process.
|
13
|
+
* The keys of this dictionary represent the booking steps. See ... for the list of possible steps. If the
|
14
|
+
* key is present, then the booking step shall be displayed. The value is a list of 3 booleans:
|
15
|
+
* - The first tells whether it is possible to go to that section. If not, other sections must be completed first.
|
16
|
+
* - The second tells whether the section is completed.
|
17
|
+
* - The third tells whether the section is required.
|
12
18
|
* @property {Booking.Currencies} currency The currency of the cart. See {@link Booking.Currencies}
|
13
19
|
* @property {string} bookingDueDate The date and time when the cart expires
|
14
20
|
* @property {number} buyerId The id of the buyer
|
@@ -16,33 +22,15 @@ import { Booking } from "../../booking/booking";
|
|
16
22
|
export type Cart = {
|
17
23
|
id: number;
|
18
24
|
cartCode: string;
|
19
|
-
|
20
|
-
nextStatus: Booking.CartStatus;
|
25
|
+
stepsToStatus: Map<string, boolean[]>;
|
21
26
|
currency: Booking.Currencies;
|
22
27
|
bookingDueDate: string;
|
23
28
|
buyerId: number;
|
24
|
-
reductions:
|
25
|
-
tripId: number;
|
26
|
-
tripName: string;
|
27
|
-
value: number;
|
28
|
-
isPercentage: boolean;
|
29
|
-
voucherCode?: string;
|
30
|
-
}[];
|
31
|
-
isSeatsSelectionAllowed: boolean;
|
29
|
+
reductions: Reduction[];
|
32
30
|
sellingMethod: string;
|
33
31
|
totalValue: number;
|
34
32
|
totalResellerFee?: number;
|
35
33
|
totalCreditFromChange: number;
|
36
34
|
totalAmountToPay: number;
|
37
|
-
|
38
|
-
id: number;
|
39
|
-
resourceId: number;
|
40
|
-
name: string;
|
41
|
-
description: string;
|
42
|
-
notes: string;
|
43
|
-
tariff: {
|
44
|
-
tariffId: number;
|
45
|
-
tariffName: string;
|
46
|
-
};
|
47
|
-
}[];
|
35
|
+
extras: Extra[];
|
48
36
|
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { ExtraTariff } from "./Tariffs";
|
2
|
+
/**
|
3
|
+
* @description this type represents an extra, which is an additional service that can be added to a cart. Extras are selected in the booking step `EXTRAS`.
|
4
|
+
*
|
5
|
+
* @property {number} id The id of the extra
|
6
|
+
* @property {number} resourceId The id of a resource associated with this extra, for description purposes.
|
7
|
+
* Could the be the id of an image, text or HTML that the seller wants to display to the customer.
|
8
|
+
* @property {string} name The name of the extra
|
9
|
+
* @property {string} description The description of the extra
|
10
|
+
* @property {string} notes Some notes about the extra
|
11
|
+
* @property {ExtraTariff} tariff The tariff at which the extra was sold
|
12
|
+
*/
|
13
|
+
export type Extra = {
|
14
|
+
id: number;
|
15
|
+
resourceId: number;
|
16
|
+
name: string;
|
17
|
+
description: string;
|
18
|
+
notes: string;
|
19
|
+
tariff: ExtraTariff;
|
20
|
+
};
|
@@ -0,0 +1,63 @@
|
|
1
|
+
/**
|
2
|
+
* @description This type represents a payment method available for the cart
|
3
|
+
* @param {number} id The id of the payment method
|
4
|
+
* @param {GatewayTypes} type The type of the payment method
|
5
|
+
* @param {string} name The name of the payment method, to be displayed to the user
|
6
|
+
*/
|
7
|
+
export type Gateway = {
|
8
|
+
id: number;
|
9
|
+
type: GatewayTypes;
|
10
|
+
name: string;
|
11
|
+
};
|
12
|
+
/**
|
13
|
+
* @description This type represents the response of the {@link Booking.getSellerGateways} API. Note that at least
|
14
|
+
* one of the two fields will be null, depending on the seller configuration.
|
15
|
+
* @param {Gateway | null} cardGatewayDTO The card gateway, if available. Currecntly this can only be {@link GatewayTypes.AXEPTA_BNL}
|
16
|
+
* or {@link GatewayTypes.AXERVE_BANCASELLA}
|
17
|
+
* @param {Gateway | null} payPalGatewayDTO The PayPal gateway, if available.
|
18
|
+
*/
|
19
|
+
export type GetSellerGatewaysResponse = {
|
20
|
+
cardGatewayDTO: Gateway | null;
|
21
|
+
payPalGatewayDTO: Gateway | null;
|
22
|
+
};
|
23
|
+
/**
|
24
|
+
* @description This type represents the response of the {@link Booking.getPaymentInformationFromGateway} API.
|
25
|
+
* Note that only the fields of the chosen gateway will be populated.
|
26
|
+
* @param {string | null} axervE_BANCASELLA_PaymentId The payment id of the Axerve Bancasella gateway
|
27
|
+
* @param {string | null} axervE_BANCASELLA_PaymentToken The payment token of the Axerve Bancasella gateway
|
28
|
+
* @param {string | null} axervE_BANCASELLA_ShopLogin The shop login of the Axerve Bancasella gateway
|
29
|
+
* @param {string | null} axeptA_BNL_PaymentId The payment id of the Axepta BNL gateway
|
30
|
+
* @param {string | null} axeptA_BNL_SmartLicenseKey The smart license key of the Axepta BNL gateway
|
31
|
+
* @param {string | null} paypaL_ClientId The client id of the PayPal gateway
|
32
|
+
* @param {string | null} paypaL_OrderId The order id of the PayPal gateway
|
33
|
+
* @param {string | null} paypaL_Link The link of the PayPal gateway
|
34
|
+
*/
|
35
|
+
export type GetPaymentInformationFromGatewayResponse = {
|
36
|
+
axervE_BANCASELLA_PaymentId: string | null;
|
37
|
+
axervE_BANCASELLA_PaymentToken: string | null;
|
38
|
+
axervE_BANCASELLA_ShopLogin: string | null;
|
39
|
+
axeptA_BNL_PaymentId: string | null;
|
40
|
+
axeptA_BNL_SmartLicenseKey: string | null;
|
41
|
+
paypaL_ClientId: string | null;
|
42
|
+
paypaL_OrderId: string | null;
|
43
|
+
paypaL_Link: string | null;
|
44
|
+
};
|
45
|
+
/**
|
46
|
+
* @description This enum contains the possible values for the `type` field of the {@link Gateway} type
|
47
|
+
*/
|
48
|
+
export declare enum GatewayTypes {
|
49
|
+
AXEPTA_BNL = "AXEPTA_BNL",
|
50
|
+
AXERVE_BANCASELLA = "AXERVE_BANCASELLA",
|
51
|
+
PAYPAL = "PAYPAL"
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* @description This enum contains the possible values for the `paymentMethod` parameter of the {@link Booking.issueTickets} function.
|
55
|
+
*/
|
56
|
+
export declare enum PaymentMethods {
|
57
|
+
CARD = "CARD",
|
58
|
+
CASH = "CASH",
|
59
|
+
CREDIT_FROM_CHANGE = "CREDIT_FROM_CHANGE",
|
60
|
+
PAY_LATER = "PAY_LATER",
|
61
|
+
ONLINE_CARD = "ONLINE CARD",
|
62
|
+
WALLET = "WALLET"
|
63
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PaymentMethods = exports.GatewayTypes = void 0;
|
4
|
+
/**
|
5
|
+
* @description This enum contains the possible values for the `type` field of the {@link Gateway} type
|
6
|
+
*/
|
7
|
+
var GatewayTypes;
|
8
|
+
(function (GatewayTypes) {
|
9
|
+
GatewayTypes["AXEPTA_BNL"] = "AXEPTA_BNL";
|
10
|
+
GatewayTypes["AXERVE_BANCASELLA"] = "AXERVE_BANCASELLA";
|
11
|
+
GatewayTypes["PAYPAL"] = "PAYPAL";
|
12
|
+
})(GatewayTypes || (exports.GatewayTypes = GatewayTypes = {}));
|
13
|
+
/**
|
14
|
+
* @description This enum contains the possible values for the `paymentMethod` parameter of the {@link Booking.issueTickets} function.
|
15
|
+
*/
|
16
|
+
var PaymentMethods;
|
17
|
+
(function (PaymentMethods) {
|
18
|
+
PaymentMethods["CARD"] = "CARD";
|
19
|
+
PaymentMethods["CASH"] = "CASH";
|
20
|
+
PaymentMethods["CREDIT_FROM_CHANGE"] = "CREDIT_FROM_CHANGE";
|
21
|
+
PaymentMethods["PAY_LATER"] = "PAY_LATER";
|
22
|
+
PaymentMethods["ONLINE_CARD"] = "ONLINE CARD";
|
23
|
+
PaymentMethods["WALLET"] = "WALLET";
|
24
|
+
})(PaymentMethods || (exports.PaymentMethods = PaymentMethods = {}));
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { PassengerTariff } from "./Tariffs";
|
1
2
|
/**
|
2
3
|
* @description Represents a person, that can be a passenger or the buyer.
|
3
4
|
*
|
@@ -6,6 +7,7 @@
|
|
6
7
|
* @property {string} lastName - The last name of the person.
|
7
8
|
* @property {string} email - The email of the person.
|
8
9
|
* @property {string} phoneNumber - The phone number of the person.
|
10
|
+
* @property {string} [notes=undefined] - The notes for this person.
|
9
11
|
*/
|
10
12
|
export type Person = {
|
11
13
|
id: number;
|
@@ -13,19 +15,39 @@ export type Person = {
|
|
13
15
|
lastName: string;
|
14
16
|
email: string;
|
15
17
|
phoneNumber: string;
|
18
|
+
notes?: string;
|
16
19
|
};
|
17
20
|
export declare const DEFAULT_PERSON: Person;
|
21
|
+
export declare const initializePerson: (person?: Person | undefined | null) => Person;
|
18
22
|
/**
|
19
|
-
* @description Represents the
|
23
|
+
* @description Represents the response of the {@link getBuyerPassengersDetails} method.
|
20
24
|
*
|
21
|
-
* @property {Person[]} passengers - An array of {@link Person} extended by the map `tripsToTariffs` objects representing the passengers.
|
22
25
|
* @property {Person} buyer - The {@link Person} object representing the buyer.
|
26
|
+
* @property {Person[]} passengers - An array of {@link Person} objects representing the passengers.
|
27
|
+
* @property {Map<number, PassengerTariff>} tariffs - A map from the trip id to the {@link PassengerTariff} object,
|
28
|
+
* representing the available tariffs for that trip (from the ones chosen by the user when creating the cart).
|
29
|
+
*/
|
30
|
+
export type GetBuyerPassengersDetailsResponse = {
|
31
|
+
buyer: Person;
|
32
|
+
passengers: Person[];
|
33
|
+
tariffs: Map<number, PassengerTariff>;
|
34
|
+
};
|
35
|
+
/**
|
36
|
+
* @description Represents the type of the passengers array in {@link EditPassengersDetailsRequest}.
|
23
37
|
*/
|
24
|
-
export type
|
25
|
-
|
26
|
-
|
27
|
-
[tripId: number]: number;
|
28
|
-
};
|
38
|
+
export type EditPassengerRequestType = Person & {
|
39
|
+
tripsToTariffs: {
|
40
|
+
[tripId: number]: number;
|
29
41
|
};
|
42
|
+
};
|
43
|
+
/**
|
44
|
+
* @description Represents the passengers details.
|
45
|
+
* This type shall be used as request for the {@link updatePassengersDetails} method.
|
46
|
+
*
|
47
|
+
* @property {EditPassengerRequestType[]} passengers - An array of {@link Person} extended by the map `tripsToTariffs` objects representing the passengers.
|
48
|
+
* @property {Person} buyer - The {@link Person} object representing the buyer.
|
49
|
+
*/
|
50
|
+
export type EditPassengersDetailsRequest = {
|
51
|
+
passengers: EditPassengerRequestType[];
|
30
52
|
buyer: Person;
|
31
53
|
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
// This module contains the types to manage the passengers information
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
4
|
-
exports.DEFAULT_PERSON = void 0;
|
4
|
+
exports.initializePerson = exports.DEFAULT_PERSON = void 0;
|
5
5
|
exports.DEFAULT_PERSON = {
|
6
6
|
id: 0,
|
7
7
|
name: '',
|
@@ -9,3 +9,10 @@ exports.DEFAULT_PERSON = {
|
|
9
9
|
email: '',
|
10
10
|
phoneNumber: ''
|
11
11
|
};
|
12
|
+
var initializePerson = function (person) {
|
13
|
+
if (!person) {
|
14
|
+
return exports.DEFAULT_PERSON;
|
15
|
+
}
|
16
|
+
return person;
|
17
|
+
};
|
18
|
+
exports.initializePerson = initializePerson;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* @description This type represents a reduction applied to the cart. Reductions are applied in the booking step `DISCOUNTS`.
|
3
|
+
*
|
4
|
+
* @property {number} tripId The id of the trip to which the reduction is applied
|
5
|
+
* @property {string} tripName The name of the trip to which the reduction is applied
|
6
|
+
* @property {number} value The value of the reduction
|
7
|
+
* @property {boolean} isPercentage If true, the reduction is a percentage. In this case, it is a number from 0 to 1.
|
8
|
+
* Otherwise, it is in the currency of the cart.
|
9
|
+
* @property {string} [voucherCode=undefined] The voucher code used to apply the reduction
|
10
|
+
*/
|
11
|
+
export type Reduction = {
|
12
|
+
tripId: number;
|
13
|
+
tripName: string;
|
14
|
+
value: number;
|
15
|
+
isPercentage: boolean;
|
16
|
+
voucherCode?: string;
|
17
|
+
};
|
18
|
+
/**
|
19
|
+
* @description This type represents a request to add a reduction to the cart
|
20
|
+
*
|
21
|
+
* @property {number} tripId The id of the trip to which the reduction is applied. If the tripId is 0,
|
22
|
+
* then the reduction will be applied to the whole cart
|
23
|
+
* @property {number} reduction The value of the reduction
|
24
|
+
* @property {boolean} isPercentage If true, the reduction is a percentage. In this case, it is a number from 0 to 1.
|
25
|
+
* Otherwise, it is in the currency of the cart (the value must be greater than 0)
|
26
|
+
*/
|
27
|
+
export type AddReductionRequest = {
|
28
|
+
tripId: number;
|
29
|
+
reduction: number;
|
30
|
+
isPercentage: boolean;
|
31
|
+
};
|
@@ -55,3 +55,24 @@ export type TariffSummary = {
|
|
55
55
|
label: string;
|
56
56
|
value: number;
|
57
57
|
};
|
58
|
+
/**
|
59
|
+
* @description This type represent a tariff on a particular trip. It shall be used for selecting the tariffs
|
60
|
+
* of the passenger (in the passenger details page).
|
61
|
+
*
|
62
|
+
* @property {number} id The id of the tariff
|
63
|
+
* @property {string} tariffName The name of the tariff
|
64
|
+
*/
|
65
|
+
export type PassengerTariff = {
|
66
|
+
id: number;
|
67
|
+
tariffName: string;
|
68
|
+
};
|
69
|
+
/**
|
70
|
+
* @description This type represents the tariff at which the extra was sold.
|
71
|
+
*
|
72
|
+
* @property {number} tariffId The id of the tariff
|
73
|
+
* @property {string} tariffName The name of the tariff
|
74
|
+
*/
|
75
|
+
export type ExtraTariff = {
|
76
|
+
tariffId: number;
|
77
|
+
tariffName: string;
|
78
|
+
};
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/**
|
2
|
+
* This represents a a bus layout cell, a part of a {@link BusMatrix}.
|
3
|
+
* @param {number} id - The id of bus layout cell.
|
4
|
+
* @param {BusCellTypes} type - The id of the bus layout cell. It shall be used to select what to display when rendering the bus layout.
|
5
|
+
* @param {string} label - The label to display on the seat (e.g. 8A)
|
6
|
+
* @param {SeatStatus} status - The status of the seat.
|
7
|
+
*/
|
8
|
+
export type BusLayoutCell = {
|
9
|
+
id: number;
|
10
|
+
type: BusCellTypes;
|
11
|
+
label: string;
|
12
|
+
status: SeatStatus;
|
13
|
+
};
|
14
|
+
/**
|
15
|
+
* This represents a tariff matrix. It is a 3D array of {@link BusLayoutCell} objects.
|
16
|
+
* - On the first dimension, there is the floor of the bus.
|
17
|
+
* - On the second dimentsion, there are the rows.
|
18
|
+
* - On the third dimension, the are the columns.
|
19
|
+
*/
|
20
|
+
export type BusMatrix = BusLayoutCell[][][];
|
21
|
+
export declare enum BusCellTypes {
|
22
|
+
SEAT = "SEAT",
|
23
|
+
SELECTED_SEAT = "SELECTED_SEAT",
|
24
|
+
DRIVER = "DRIVER",
|
25
|
+
WC = "WC",
|
26
|
+
EXIT = "EXIT",
|
27
|
+
TABLE = "TABLE",
|
28
|
+
STAIRS = "STAIRS"
|
29
|
+
}
|
30
|
+
export declare enum SeatStatus {
|
31
|
+
RESERVED = "RESERVED",
|
32
|
+
AVAILABLE = "AVAILABLE",
|
33
|
+
OCCUPIED = "OCCUPIED"
|
34
|
+
}
|