@roomstay/frontend 2.6.69 → 2.6.71
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/dist/279.bundle.js +1 -1
- package/dist/288.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/430.bundle.js +1 -0
- package/dist/439.bundle.js +1 -0
- package/dist/537.bundle.js +1 -1
- package/dist/659.bundle.js +1 -0
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/animations/AutoAutoHeight.d.ts +1 -0
- package/dist/src/animations/AutoAutoHeight.js +5 -3
- package/dist/src/animations/AutoAutoHeight.js.map +1 -1
- package/dist/src/api/AvailabilityAPI.js +3 -6
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/HotelAPI.d.ts +1 -1
- package/dist/src/api/HotelAPI.js +1 -1
- package/dist/src/api/HotelAPI.js.map +1 -1
- package/dist/src/api/ReservationAPI.d.ts +5 -0
- package/dist/src/api/ReservationAPI.js +31 -7
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/components/User/Forms/SignUpForm.js +1 -1
- package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
- package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.d.ts +14 -0
- package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.js +49 -0
- package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.js.map +1 -0
- package/dist/src/components/generic/date/DatePicker.js +6 -5
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/navigation/Header.js +1 -1
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +15 -20
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/steps/confirmation/MastercardPaymentMethod.d.ts +27 -0
- package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js +75 -0
- package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js.map +1 -0
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +4 -15
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
- package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
- package/dist/src/components/steps/room/RoomList.js +17 -2
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/components/steps/room/StepRoomHotelDetails.js +4 -15
- package/dist/src/components/steps/room/StepRoomHotelDetails.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +19 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +6 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +6 -6
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.d.ts +5 -0
- package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js +83 -0
- package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js.map +1 -0
- package/dist/src/components/summary/BEMobileSummaryModal.js +4 -15
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +7 -0
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +38 -20
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +14 -4
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +8 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +12 -9
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +2 -3
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +17 -4
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +6 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +12 -6
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
- package/dist/src/events/index.d.ts +1 -1
- package/dist/src/events/index.js +1 -1
- package/dist/src/events/index.js.map +1 -1
- package/dist/src/events/state/SelectedHotelChangeEvent.js.map +1 -1
- package/dist/src/handlers/payment/MastercardPaymentHandler.d.ts +2 -0
- package/dist/src/handlers/payment/MastercardPaymentHandler.js +41 -0
- package/dist/src/handlers/payment/MastercardPaymentHandler.js.map +1 -0
- package/dist/src/handlers/payment/PaymentHandler.d.ts +4 -0
- package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
- package/dist/src/hooks/useCalendarNightStay.d.ts +2 -2
- package/dist/src/hooks/useCalendarNightStay.js +5 -4
- package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +3 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +6 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/Api/ReservationsDTO.d.ts +2 -25
- package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
- package/dist/src/models/Client/Hotel/Company.d.ts +2 -0
- package/dist/src/models/Client/Hotel/Company.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +1 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Room/Room.d.ts +1 -0
- package/dist/src/models/Room/Room.js +3 -0
- package/dist/src/models/Room/Room.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +6 -15
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
- package/dist/src/providers/FilterProvider.js +1 -4
- package/dist/src/providers/FilterProvider.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +5 -0
- package/dist/src/translations/Translation.js +5 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +5 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/839.bundle.js +0 -1
- package/dist/950.bundle.js +0 -1
|
@@ -48,14 +48,16 @@ function AutoAutoHeight(props) {
|
|
|
48
48
|
});
|
|
49
49
|
(0, react_1.useEffect)(() => {
|
|
50
50
|
const setHeight = () => {
|
|
51
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
const visualOffset = (_a = props.topOffset) !== null && _a !== void 0 ? _a : 0;
|
|
53
|
+
setContentHeight(Math.max(0, height - visualOffset));
|
|
52
54
|
};
|
|
53
55
|
setHeight();
|
|
54
56
|
window.addEventListener('resize', setHeight);
|
|
55
57
|
return () => {
|
|
56
58
|
window.removeEventListener('resize', setHeight);
|
|
57
59
|
};
|
|
58
|
-
}, [height]);
|
|
60
|
+
}, [height, props.topOffset]);
|
|
59
61
|
(0, react_1.useEffect)(() => {
|
|
60
62
|
if (animationAtRest) {
|
|
61
63
|
setLoadedOnce(true);
|
|
@@ -74,7 +76,7 @@ function AutoAutoHeight(props) {
|
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
}, [props.open, animationAtRest]);
|
|
77
|
-
return (react_1.default.createElement(web_1.animated.span, { style: Object.assign({ display: 'block', overflow:
|
|
79
|
+
return (react_1.default.createElement(web_1.animated.span, { style: Object.assign({ display: 'block', overflow: props.open ? 'visible' : 'hidden' }, expand) },
|
|
78
80
|
react_1.default.createElement("div", { ref: ref }, !hideComponent && props.children)));
|
|
79
81
|
}
|
|
80
82
|
exports.default = AutoAutoHeight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoAutoHeight.js","sourceRoot":"/","sources":["src/animations/AutoAutoHeight.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,+CAAmD;AACnD,0EAA2C;
|
|
1
|
+
{"version":3,"file":"AutoAutoHeight.js","sourceRoot":"/","sources":["src/animations/AutoAutoHeight.tsx"],"names":[],"mappings":"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","sourcesContent":["import { animated, useSpring } from '@react-spring/web';\nimport React, { useEffect, useState } from 'react';\nimport useMeasure from 'react-use-measure';\n\ninterface AutoAutoHeightProps {\n children: React.ReactNode;\n open: boolean;\n startOpen?: boolean;\n onComponentHidden?: () => void;\n topOffset?: number;\n}\n\nexport default function AutoAutoHeight(props: AutoAutoHeightProps) {\n const [hideComponent, setHideComponent] = useState(!props.open);\n const [animationAtRest, setAnimationAtRest] = useState(false);\n\n const [loadedOnce, setLoadedOnce] = useState(false);\n\n const [contentHeight, setContentHeight] = useState(0);\n const [ref, { height }] = useMeasure({ debounce: 5 });\n\n const expand = useSpring({\n config: { friction: 25, duration: props.startOpen && !loadedOnce ? 0 : undefined },\n from: {\n height: 0,\n },\n to: {\n height: props.open ? contentHeight : 0,\n },\n onStart: () => setAnimationAtRest(false),\n onRest: () => setAnimationAtRest(true),\n });\n\n useEffect(() => {\n const setHeight = () => {\n const visualOffset = props.topOffset ?? 0;\n setContentHeight(Math.max(0, height - visualOffset));\n };\n\n setHeight();\n\n window.addEventListener('resize', setHeight);\n\n return () => {\n window.removeEventListener('resize', setHeight);\n };\n }, [height, props.topOffset]);\n\n useEffect(() => {\n if (animationAtRest) {\n setLoadedOnce(true);\n }\n }, [animationAtRest]);\n\n useEffect(() => {\n if (props.open) {\n setHideComponent(false);\n } else {\n if (animationAtRest) {\n setHideComponent(true);\n if (props.onComponentHidden) {\n props.onComponentHidden();\n }\n }\n }\n }, [props.open, animationAtRest]);\n\n return (\n <animated.span style={{ display: 'block', overflow: props.open ? 'visible' : 'hidden', ...expand }}>\n <div ref={ref}>{!hideComponent && props.children}</div>\n </animated.span>\n );\n}\n"]}
|
|
@@ -322,6 +322,7 @@ class AvailabilityAPI extends BaseAPI_1.default {
|
|
|
322
322
|
AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];
|
|
323
323
|
});
|
|
324
324
|
}
|
|
325
|
+
const rooms = {};
|
|
325
326
|
if (json.roomTypes) {
|
|
326
327
|
const allRoomsByKey = Object.keys(json.roomTypes);
|
|
327
328
|
if (allRoomsByKey.length) {
|
|
@@ -329,6 +330,8 @@ class AvailabilityAPI extends BaseAPI_1.default {
|
|
|
329
330
|
allRoomsByKey.forEach((roomCode) => {
|
|
330
331
|
this.roomTypesData[roomCode].code = roomCode;
|
|
331
332
|
this.rooms[roomCode] = Room_1.Room.fromData(this.roomTypesData[roomCode]);
|
|
333
|
+
this.rooms[roomCode].code = roomCode;
|
|
334
|
+
rooms[roomCode] = this.rooms[roomCode];
|
|
332
335
|
});
|
|
333
336
|
}
|
|
334
337
|
}
|
|
@@ -344,18 +347,12 @@ class AvailabilityAPI extends BaseAPI_1.default {
|
|
|
344
347
|
}
|
|
345
348
|
if (json.roomNights) {
|
|
346
349
|
const roomNights = json.roomNights;
|
|
347
|
-
const rooms = {};
|
|
348
350
|
const allNightsByKey = Object.keys(roomNights);
|
|
349
351
|
let first = true;
|
|
350
352
|
if (allNightsByKey.length) {
|
|
351
353
|
allNightsByKey.forEach((date) => {
|
|
352
354
|
const day = (0, dayjs_1.default)(date);
|
|
353
355
|
Object.keys(roomNights[date]).forEach((roomCode) => {
|
|
354
|
-
if (first) {
|
|
355
|
-
const room = Room_1.Room.fromData(this.roomTypesData[roomCode]);
|
|
356
|
-
room.code = roomCode;
|
|
357
|
-
rooms[roomCode] = room;
|
|
358
|
-
}
|
|
359
356
|
Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {
|
|
360
357
|
var _a, _b, _c;
|
|
361
358
|
const nightData = roomNights[date][roomCode].rates[rateKey];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport GetAvailabilityError from 'errors/GetAvailabilityError';\nimport { NoHotelSelectedError } from 'errors/NoHotelSelectedError';\nimport { RoomstayError } from 'errors/RoomstayError';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\n\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from '@/api/BaseAPI';\nimport BasketRow from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateNight from '@/models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\ninterface IPriceByDay {\n [date: string]: number;\n}\ninterface INightStayByDay {\n [date: string]: number;\n}\n\ntype AvailabilityParams = {\n checkInDate: string;\n checkOutDate: string;\n adults: string;\n children: string;\n infants: string;\n promoCode?: string;\n promoOnly?: string;\n roomCode?: string;\n memberNumber?: string;\n includeHotelInfo: string;\n};\n\nexport default class AvailabilityAPI extends BaseAPI {\n public static policyMappings: { guarantee: { [name: string]: string }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n public static maxNightPrice = 0;\n public static minNightPrice: number | null = null;\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private calendar: { [id: string]: IPriceByDay } = {};\n private arrivalMinNightStay: { [id: string]: INightStayByDay } = {};\n private arrivalMaxNightStay: { [id: string]: INightStayByDay } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> | null } = {};\n private calendarPromises: {\n [id: string]: Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n }>;\n } = {};\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelId: string,\n memberNumber: string | number = '',\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n const response = await this.fetchCalendar(fromDate, adults, children, infants, promoCode, roomCode, hotelId, memberNumber, undefined, isCrossSell);\n dayPricingData = response?.prices;\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (\n day: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelID: string,\n memberNumber: string | number = '',\n parseErrors = true\n ): Promise<{\n price: number;\n perCent: number;\n arrivalMinNightStay: number;\n arrivalMaxNightStay: number;\n } | null> => {\n if (!day || day.isBefore(dayjs(), 'date')) return null;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, infants, promoCode, roomCode, hotelID, memberNumber, parseErrors, false);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery?.prices) {\n return null;\n }\n\n const priceForDay = dataForQuery.prices[day.format(API_DATE_FORMAT)];\n const arrivalMinNightStay = dataForQuery.arrivalMinNightStay[day.format(API_DATE_FORMAT)];\n const arrivalMaxNightStay = dataForQuery.arrivalMaxNightStay[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n arrivalMinNightStay,\n arrivalMaxNightStay,\n };\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelId: string,\n memberNumber: number | string = '',\n parseErrors = true,\n isCrossSell = false\n ): Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n } | null> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, infants, promoCode, roomCode, isCrossSell, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return {\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n };\n }\n\n if (!!this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n const searchParams: AvailabilityParams = {\n checkInDate: fromDatePretty,\n checkOutDate: toDatePretty,\n adults: `${adults}`,\n children: `${children}`,\n infants: `${infants}`,\n promoCode: `${promoCode}`,\n includeHotelInfo: isCrossSell ? `0` : `1`,\n memberNumber: `${memberNumber}`,\n ...(roomCode ? { roomCode } : {}),\n };\n const queryParams = new URLSearchParams(searchParams);\n\n const apiPath = `${this.getApiPath()}availability/calendar/${targetHotel}?${queryParams.toString()}`;\n\n const response = await fetch(apiPath, {\n credentials: 'omit',\n headers: await BaseAPI.getBaseHeaders(),\n });\n\n if (response.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (parseErrors) {\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n this.arrivalMinNightStay[id] = json?.arrivalMinNightStay ?? {};\n this.arrivalMaxNightStay[id] = json?.arrivalMaxNightStay ?? {};\n this.calendar[id] = json.prices;\n resolve({\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n });\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string, memberNumber?: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (!!this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n memberNumber,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n /**\n * Fetches availability data.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelId - The unique identifier of the hotel.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @returns The fetched availability data.\n */\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false) => {\n const today = dayjs();\n\n if (!basketRow) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCodeParam, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (!!this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n try {\n const json = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n if (json.guaranteePolicies) {\n Object.keys(json.guaranteePolicies).map((code) => {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicies[code];\n });\n }\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const rooms: { [rate: string]: Room } = {};\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n if (first) {\n const room = Room.fromData(this.roomTypesData[roomCode]);\n room.code = roomCode;\n rooms[roomCode] = room;\n }\n\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode]?.getRate(rateKey)?.nightRates ?? {}).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available;\n rateNight.cost = nightData.cost;\n rateNight.discount = nightData.discount;\n rateNight.total = nightData.total;\n rateNight.tax = nightData.tax;\n rateNight.fee = nightData.fee;\n rateNight.date = day;\n\n if (nightData.fees) {\n for (const fee of nightData.fees) {\n rateNight.fees.push({ name: fee.name, amount: fee.amount });\n }\n }\n\n (rooms[roomCode].getRate(rateKey) as RoomRate).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n const roomArray = Object.values(rooms);\n\n this.cachedAvailability[id] = roomArray;\n resolve(roomArray);\n }\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings;\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n resolve([]);\n } catch (ex) {\n reject();\n }\n }).catch((reason) => {\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromise[id];\n }\n };\n\n public fetchAvailability = async ({\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n promoOnly,\n hotelId,\n }: {\n fromDate: dayjs.Dayjs;\n toDate: dayjs.Dayjs;\n adults: number;\n children?: number;\n infants: number;\n promoCode?: string;\n roomCode?: string;\n promoOnly?: boolean;\n hotelId: string;\n }) => {\n if (!fromDate || !toDate) return;\n\n return await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelId\n );\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport GetAvailabilityError from 'errors/GetAvailabilityError';\nimport { NoHotelSelectedError } from 'errors/NoHotelSelectedError';\nimport { RoomstayError } from 'errors/RoomstayError';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\n\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from '@/api/BaseAPI';\nimport BasketRow from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateNight from '@/models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\ninterface IPriceByDay {\n [date: string]: number;\n}\ninterface INightStayByDay {\n [date: string]: number;\n}\n\ntype AvailabilityParams = {\n checkInDate: string;\n checkOutDate: string;\n adults: string;\n children: string;\n infants: string;\n promoCode?: string;\n promoOnly?: string;\n roomCode?: string;\n memberNumber?: string;\n includeHotelInfo: string;\n};\n\nexport default class AvailabilityAPI extends BaseAPI {\n public static policyMappings: { guarantee: { [name: string]: string }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n public static maxNightPrice = 0;\n public static minNightPrice: number | null = null;\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private calendar: { [id: string]: IPriceByDay } = {};\n private arrivalMinNightStay: { [id: string]: INightStayByDay } = {};\n private arrivalMaxNightStay: { [id: string]: INightStayByDay } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> | null } = {};\n private calendarPromises: {\n [id: string]: Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n }>;\n } = {};\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelId: string,\n memberNumber: string | number = '',\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n const response = await this.fetchCalendar(fromDate, adults, children, infants, promoCode, roomCode, hotelId, memberNumber, undefined, isCrossSell);\n dayPricingData = response?.prices;\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (\n day: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelID: string,\n memberNumber: string | number = '',\n parseErrors = true\n ): Promise<{\n price: number;\n perCent: number;\n arrivalMinNightStay: number;\n arrivalMaxNightStay: number;\n } | null> => {\n if (!day || day.isBefore(dayjs(), 'date')) return null;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, infants, promoCode, roomCode, hotelID, memberNumber, parseErrors, false);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery?.prices) {\n return null;\n }\n\n const priceForDay = dataForQuery.prices[day.format(API_DATE_FORMAT)];\n const arrivalMinNightStay = dataForQuery.arrivalMinNightStay[day.format(API_DATE_FORMAT)];\n const arrivalMaxNightStay = dataForQuery.arrivalMaxNightStay[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n arrivalMinNightStay,\n arrivalMaxNightStay,\n };\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n hotelId: string,\n memberNumber: number | string = '',\n parseErrors = true,\n isCrossSell = false\n ): Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n } | null> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, infants, promoCode, roomCode, isCrossSell, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return {\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n };\n }\n\n if (!!this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n const searchParams: AvailabilityParams = {\n checkInDate: fromDatePretty,\n checkOutDate: toDatePretty,\n adults: `${adults}`,\n children: `${children}`,\n infants: `${infants}`,\n promoCode: `${promoCode}`,\n includeHotelInfo: isCrossSell ? `0` : `1`,\n memberNumber: `${memberNumber}`,\n ...(roomCode ? { roomCode } : {}),\n };\n const queryParams = new URLSearchParams(searchParams);\n\n const apiPath = `${this.getApiPath()}availability/calendar/${targetHotel}?${queryParams.toString()}`;\n\n const response = await fetch(apiPath, {\n credentials: 'omit',\n headers: await BaseAPI.getBaseHeaders(),\n });\n\n if (response.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (parseErrors) {\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n this.arrivalMinNightStay[id] = json?.arrivalMinNightStay ?? {};\n this.arrivalMaxNightStay[id] = json?.arrivalMaxNightStay ?? {};\n this.calendar[id] = json.prices;\n resolve({\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n });\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string, memberNumber?: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (!!this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n memberNumber,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n /**\n * Fetches availability data.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelId - The unique identifier of the hotel.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @returns The fetched availability data.\n */\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false) => {\n const today = dayjs();\n\n if (!basketRow) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCodeParam, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (!!this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n try {\n const json = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n if (json.guaranteePolicies) {\n Object.keys(json.guaranteePolicies).map((code) => {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicies[code];\n });\n }\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n const rooms: { [rate: string]: Room } = {};\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n this.rooms[roomCode].code = roomCode;\n rooms[roomCode] = this.rooms[roomCode];\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode]?.getRate(rateKey)?.nightRates ?? {}).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available;\n rateNight.cost = nightData.cost;\n rateNight.discount = nightData.discount;\n rateNight.total = nightData.total;\n rateNight.tax = nightData.tax;\n rateNight.fee = nightData.fee;\n rateNight.date = day;\n\n if (nightData.fees) {\n for (const fee of nightData.fees) {\n rateNight.fees.push({ name: fee.name, amount: fee.amount });\n }\n }\n\n (rooms[roomCode].getRate(rateKey) as RoomRate).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n const roomArray = Object.values(rooms);\n\n this.cachedAvailability[id] = roomArray;\n resolve(roomArray);\n }\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings;\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n resolve([]);\n } catch (ex) {\n reject();\n }\n }).catch((reason) => {\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromise[id];\n }\n };\n\n public fetchAvailability = async ({\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n promoOnly,\n hotelId,\n }: {\n fromDate: dayjs.Dayjs;\n toDate: dayjs.Dayjs;\n adults: number;\n children?: number;\n infants: number;\n promoCode?: string;\n roomCode?: string;\n promoOnly?: boolean;\n hotelId: string;\n }) => {\n if (!fromDate || !toDate) return;\n\n return await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelId\n );\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n}\n"]}
|
|
@@ -6,7 +6,7 @@ import { Language } from '../providers/LanguageProvider';
|
|
|
6
6
|
export default class HotelAPI extends BaseAPI {
|
|
7
7
|
private cachedResponses;
|
|
8
8
|
private pendingQueries;
|
|
9
|
-
fetchData: (lang: Language, hotel
|
|
9
|
+
fetchData: (lang: Language, hotel: Pick<Hotel, 'hotelID'>) => Promise<HotelDTO>;
|
|
10
10
|
fetchOverrides: (frontendId: string, companyId?: string) => Promise<HotelOverrideDTO>;
|
|
11
11
|
private getQueryID;
|
|
12
12
|
}
|
package/dist/src/api/HotelAPI.js
CHANGED
|
@@ -19,7 +19,7 @@ class HotelAPI extends BaseAPI_1.default {
|
|
|
19
19
|
this.cachedResponses = {};
|
|
20
20
|
this.pendingQueries = {};
|
|
21
21
|
this.fetchData = (lang, hotel) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const hotelID = hotel
|
|
22
|
+
const hotelID = hotel.hotelID;
|
|
23
23
|
const queryID = this.getQueryID([lang, hotelID]);
|
|
24
24
|
if (this.cachedResponses[queryID]) {
|
|
25
25
|
return this.cachedResponses[queryID];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAE1D,cAAS,GAAG,CAAO,IAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAE1D,cAAS,GAAG,CAAO,IAAc,EAAE,KAA6B,EAAqB,EAAE;YAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACd,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;iBACvD;gBAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;QAEM,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;IACN,CAAC;CAAA;AA/CD,2BA+CC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Language } from '@/providers/LanguageProvider';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n public fetchData = async (lang: Language, hotel: Pick<Hotel, 'hotelID'>): Promise<HotelDTO> => {\n const hotelID = hotel.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n\n if (!response.ok) {\n reject(`${response.status} ${response.statusText}`);\n }\n\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n}\n"]}
|
|
@@ -19,6 +19,11 @@ export default class ReservationAPI extends BaseAPI {
|
|
|
19
19
|
* Populates a pencil reservation request based on a quote request.
|
|
20
20
|
*/
|
|
21
21
|
buildPencilRequest: (rows: BasketRow[], memberNumber?: string, pencilId?: string) => IPencilReservationRequest;
|
|
22
|
+
/**
|
|
23
|
+
* Generates a unique query ID string based on basket row data.
|
|
24
|
+
* This ID is used to detect changes and re-fetch deposit quotes during checkout.
|
|
25
|
+
*/
|
|
26
|
+
buildQuoteQueryID: (rows: BasketRow[], memberNumber?: string) => string;
|
|
22
27
|
/**
|
|
23
28
|
* Returns a quote for the given
|
|
24
29
|
*/
|
|
@@ -47,10 +47,10 @@ class ReservationAPI extends BaseAPI_1.default {
|
|
|
47
47
|
* Populates a booking quote request.
|
|
48
48
|
*/
|
|
49
49
|
this.buildQuoteRequest = (rows, memberNumber) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const quoteRows = rows.reduce((acc, row) => {
|
|
51
|
+
var _a;
|
|
52
|
+
try {
|
|
53
|
+
acc.push({
|
|
54
54
|
rowId: row.getID(),
|
|
55
55
|
roomCode: row.getRoom().code,
|
|
56
56
|
rateCode: (_a = row.getRate()) === null || _a === void 0 ? void 0 : _a.code,
|
|
@@ -62,9 +62,15 @@ class ReservationAPI extends BaseAPI_1.default {
|
|
|
62
62
|
checkOut: row.getEndDate().format('YYYY-MM-DD'),
|
|
63
63
|
memberNumber,
|
|
64
64
|
totalDisplayedPrice: row.getTotalPrice(),
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (ex) {
|
|
68
|
+
// Skip row if it throws
|
|
69
|
+
// Fixed: The checkout step will hang indefinitely if any basket row is missing a selected room rate
|
|
70
|
+
}
|
|
71
|
+
return acc;
|
|
72
|
+
}, []);
|
|
73
|
+
return { rows: quoteRows };
|
|
68
74
|
};
|
|
69
75
|
/**
|
|
70
76
|
* Populates a pencil reservation request based on a quote request.
|
|
@@ -78,6 +84,24 @@ class ReservationAPI extends BaseAPI_1.default {
|
|
|
78
84
|
});
|
|
79
85
|
return pencilRequest;
|
|
80
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* Generates a unique query ID string based on basket row data.
|
|
89
|
+
* This ID is used to detect changes and re-fetch deposit quotes during checkout.
|
|
90
|
+
*/
|
|
91
|
+
this.buildQuoteQueryID = (rows, memberNumber) => {
|
|
92
|
+
const quoteRequest = this.buildQuoteRequest(rows, memberNumber);
|
|
93
|
+
return quoteRequest.rows
|
|
94
|
+
.map((row) => {
|
|
95
|
+
const sortedKeys = Object.keys(row).sort();
|
|
96
|
+
return sortedKeys
|
|
97
|
+
.map((key) => {
|
|
98
|
+
const value = row[key];
|
|
99
|
+
return `${key}-${value}`;
|
|
100
|
+
})
|
|
101
|
+
.join('-');
|
|
102
|
+
})
|
|
103
|
+
.join('-');
|
|
104
|
+
};
|
|
81
105
|
/**
|
|
82
106
|
* Returns a quote for the given
|
|
83
107
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAAqD;AAOrD,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACjB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,MAAqB,cAAe,SAAQ,iBAAO;IAAnD;;QACY,uBAAkB,GAA2B,EAAE,CAAC;QAExD;;WAEG;QACI,sBAAiB,GAAG,CAAC,IAAiB,EAAE,YAAqB,EAAwB,EAAE;YAC1F,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;oBACnB,OAAO;wBACH,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;wBAElB,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,IAAc;wBACtC,QAAQ,EAAE,MAAA,GAAG,CAAC,OAAO,EAAE,0CAAE,IAAc;wBAEvC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;wBAE7B,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;wBACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC3B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE;wBAEzB,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAChD,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAC/C,YAAY;wBACZ,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE;qBAC3C,CAAC;gBACN,CAAC,CAAC;aACL,CAAC;QACN,CAAC,CAAC;QAEF;;WAEG;QACI,uBAAkB,GAAG,CAAC,IAAiB,EAAE,YAAqB,EAAE,QAAiB,EAA6B,EAAE;YACnH,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,aAAa,mCACZ,YAAY,KACf,QAAQ,EAAE,QAAQ,GACrB,CAAC;YAEF,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;gBAElE,uCACO,UAAU,KACb,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,IAC/B;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC;QAEF;;WAEG;QACI,kBAAa,GAAG,CAAO,OAAe,EAAE,IAAiB,EAAE,YAAqB,EAAkC,EAAE;YACvH,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAW,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC,CAAA,CAAC;QAEF;;WAEG;QACI,sBAAiB,GAAG,CAAO,OAAe,EAAE,IAAiB,EAAE,YAAqB,EAAE,QAAiB,EAAuC,EAAE;YACnJ,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAW,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjF,CAAC,CAAA,CAAC;QAEF;;;;;;;;;;;WAWG;QACI,YAAO,GAAG,CACb,UAAuB,EACvB,YAA2B,EAC3B,OAAwB,EACxB,SAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,SAAiB,EACjB,WAA+B,SAAS,EACxC,aAAiC,SAAS,EAC1C,YAAY,GAAG,KAAK,EACpB,aAAiC,SAAS,EAC1C,eAAmC,SAAS,EACpB,EAAE;YAC1B,MAAM,KAAK,GAAU,EAAE,CAAC;YAExB,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;;gBACvB,MAAM,IAAI,GAAG;oBACT,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE;oBAClC,QAAQ,EAAE,CAAA,MAAA,GAAG,CAAC,OAAO,EAAE,0CAAE,IAAI,KAAI,EAAE;oBACnC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;oBAC7B,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;oBACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC3B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE;oBACzB,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;oBACpD,YAAY,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;oBAEnD,OAAO,EAAE,MAAA,GAAG,CAAC,YAAY,0CAAE,OAAO;oBAClC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACzB,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;gBAE5D,MAAM,QAAQ,GAAQ;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE;iBACnC,CAAC;gBACF,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,EAAE;oBACrB,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC;iBACvD;gBACD,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;oBACvB,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;iBAC9C;gBAED,IAAI,SAAS,CAAC,KAAK,EAAE;oBACjB,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;iBACzC;gBACD,IAAI,SAAS,CAAC,UAAU,EAAE;oBACtB,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;iBAC5C;gBACD,IAAI,SAAS,CAAC,UAAU,EAAE;oBACtB,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;iBAC9C;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE;oBACnB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;iBAC5C;gBAED,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAQ,EAAE,CAAC;YAE1B,IAAI,YAAY,EAAE;gBACd,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;aACjC;YAED,OAAO,IAAI,CAAC,IAAI,CACZ,qBAAW,CAAC,YAAY,EACxB;gBACI,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,MAAM;gBAChB,cAAc,EAAE,UAAU;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC/B,UAAU,EAAE,UAAU;aACzB,EACD,OAAO,EACP,SAAS,CACZ,CAAC;QACN,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,CAAO,YAAsB,EAAE,WAAmB,EAAE,OAAe,EAAE,iBAA0B,EAA4B,EAAE;YACzI,OAAO,IAAI,CAAC,IAAI,CACZ,qBAAW,CAAC,YAAY,EACxB;gBACI,WAAW,EAAE,WAAW;gBACxB,cAAc,EAAE,YAAY;gBAC5B,iBAAiB;aACpB,EACD,OAAO,EACP,EAAE,EACF,QAAQ,CACX,CAAC;QACN,CAAC,CAAA,CAAC;QAEK,aAAQ,GAAG,CAAO,YAAsB,EAAE,WAAmB,EAAE,OAAe,EAAoB,EAAE;YACvG,MAAM,IAAI,CAAC,IAAI,CACX,qBAAW,CAAC,YAAY,EACxB;gBACI,WAAW,EAAE,WAAW;gBACxB,cAAc,EAAE,YAAY;aAC/B,EACD,OAAO,EACP,EAAE,EACF,UAAU,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;QAEK,sBAAiB,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,OAAe,EAAoB,EAAE,CACxF,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;;YAClC,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAW,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEzF,MAAA,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,0CAAE,YAAY,0CAAE,OAAO,CAAC,CAAC,WAA2B,EAAE,EAAE;oBAC/E,IAAI,WAAW,CAAC,iBAAiB,KAAK,EAAE,EAAE;wBACtC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC;qBACpC;gBACL,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,QAAQ,CAAC,CAAC;aACrB;YAAC,OAAO,EAAE,EAAE;gBACT,MAAM,CAAC,EAAE,CAAC,CAAC;aACd;QACL,CAAC,CAAA,CAAC,CAAC;QAEA,oBAAe,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,OAAe,EAA4B,EAAE,CAC9F,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YAClC;;IAER;YACQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE;gBAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/C;YAED,IAAI;gBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAW,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAElF,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;gBAEvC,OAAO,CAAC,QAAQ,CAAC,CAAC;aACrB;YAAC,OAAO,EAAE,EAAE;gBACT,MAAM,CAAC,EAAE,CAAC,CAAC;aACd;QACL,CAAC,CAAA,CAAC,CAAC;QAEA,wBAAmB,GAAG,CAAO,OAAe,EAAE,aAAqB,EAAE,gBAAwB,EAAiE,EAAE;YACnK,OAAA,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI;oBACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,qBAAW,CAAC,YAAY,EACxB;wBACI,aAAa;wBACb,gBAAgB;qBACnB,EACD,OAAO,EACP,EAAE,EACF,cAAc,CACjB,CAAC;oBAEF,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACrB;gBAAC,OAAO,EAAE,EAAE;oBACT,MAAM,CAAC,EAAE,CAAC,CAAC;iBACd;YACL,CAAC,CAAA,CAAC,CAAA;UAAA,CAAC;IACX,CAAC;CAAA;AAlQD,iCAkQC","sourcesContent":["import { IBookingPayment, IBookingQuoteRequest, IBookingQuoteResponse, IPencilReservationRequest, IPencilReservationResponse } from '@roomstay/core';\n\nimport BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { IRoomstayMemberBooking } from '@/models/RoomstayMembers/IRoomstayMemberBooking';\nimport UserProfile from '@/models/UserProfile';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n /**\n * Populates a booking quote request.\n */\n public buildQuoteRequest = (rows: BasketRow[], memberNumber?: string): IBookingQuoteRequest => {\n return {\n rows: rows.map((row) => {\n return {\n rowId: row.getID(),\n\n roomCode: row.getRoom().code as string,\n rateCode: row.getRate()?.code as string,\n\n promoCode: row.getPromoCode(),\n\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n\n checkIn: row.getStartDate().format('YYYY-MM-DD'),\n checkOut: row.getEndDate().format('YYYY-MM-DD'),\n memberNumber,\n totalDisplayedPrice: row.getTotalPrice(),\n };\n }),\n };\n };\n\n /**\n * Populates a pencil reservation request based on a quote request.\n */\n public buildPencilRequest = (rows: BasketRow[], memberNumber?: string, pencilId?: string): IPencilReservationRequest => {\n const quoteRequest = this.buildQuoteRequest(rows, memberNumber);\n const pencilRequest: IPencilReservationRequest = {\n ...quoteRequest,\n pencilId: pencilId,\n };\n\n pencilRequest.rows = quoteRequest.rows.map((requestRow) => {\n const basketRow = rows.find((r) => r.getID() == requestRow.rowId);\n\n return {\n ...requestRow,\n pencilId: basketRow?.pencilId,\n };\n });\n\n return pencilRequest;\n };\n\n /**\n * Returns a quote for the given\n */\n public getPriceQuote = async (hotelId: string, rows: BasketRow[], memberNumber?: string): Promise<IBookingQuoteResponse> => {\n const quoteBody = this.buildQuoteRequest(rows, memberNumber);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'quote');\n };\n\n /**\n * Pencils a reservation for the given rooms. Returns the timeout, and quote if applicable.\n */\n public pencilReservation = async (hotelId: string, rows: BasketRow[], memberNumber?: string, pencilId?: string): Promise<IPencilReservationResponse> => {\n const quoteBody = this.buildPencilRequest(rows, memberNumber, pencilId);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'pencil');\n };\n\n /**\n *\n * @param basketRows\n * @param userProfiles\n * @param payment\n * @param addonRows\n * @param comments\n * @param hotelId\n * @param sessionId\n * @param specialReq\n * @returns\n */\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n sessionId: string,\n pencilId: string | undefined = undefined,\n specialReq: string | undefined = undefined,\n retryPayment = false,\n roomstayId: string | undefined = undefined,\n memberNumber: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n roomType: row.getRoom().code || '',\n ratePlan: row.getRate()?.code || '',\n promoCode: row.getPromoCode(),\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n checkInDate: row.getStartDate().format('YYYY-MM-DD'),\n checkOutDate: row.getEndDate().format('YYYY-MM-DD'),\n\n quoteId: row.quoteDetails?.quoteId,\n rowId: row.getID(),\n memberNumber,\n pencilId: row.pencilId,\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n code: addon.code,\n startDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.ratePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.startTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.pricingType = addon.pricingType;\n }\n\n return response;\n });\n\n const getParams: any = {};\n\n if (retryPayment) {\n getParams.retryPayment = true;\n }\n\n return this.post(\n APIEndpoint.Reservations,\n {\n rooms: rooms,\n services: addons,\n specialRequest: specialReq,\n comments: comments,\n profiles: userProfiles,\n payment: payment,\n sessionId: sessionId,\n pencilId: pencilId,\n sourceUrl: window.location.href,\n roomstayId: roomstayId,\n },\n hotelId,\n getParams\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public linkBookingToMember = async (hotelId: string, reservationId: string, reservationEmail: string): Promise<{ message: string; booking: IRoomstayMemberBooking }> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.post(\n APIEndpoint.Reservations,\n {\n reservationId,\n reservationEmail,\n },\n hotelId,\n {},\n 'link-booking'\n );\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingPayment, IBookingQuoteRequest, IBookingQuoteResponse, IPencilReservationRequest, IPencilReservationResponse } from '@roomstay/core';\n\nimport BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { IRoomstayMemberBooking } from '@/models/RoomstayMembers/IRoomstayMemberBooking';\nimport UserProfile from '@/models/UserProfile';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n /**\n * Populates a booking quote request.\n */\n public buildQuoteRequest = (rows: BasketRow[], memberNumber?: string): IBookingQuoteRequest => {\n const quoteRows = rows.reduce<IBookingQuoteRequest['rows']>((acc, row) => {\n try {\n acc.push({\n rowId: row.getID(),\n roomCode: row.getRoom().code as string,\n rateCode: row.getRate()?.code as string,\n promoCode: row.getPromoCode(),\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n checkIn: row.getStartDate().format('YYYY-MM-DD'),\n checkOut: row.getEndDate().format('YYYY-MM-DD'),\n memberNumber,\n totalDisplayedPrice: row.getTotalPrice(),\n });\n } catch (ex) {\n // Skip row if it throws\n // Fixed: The checkout step will hang indefinitely if any basket row is missing a selected room rate\n }\n return acc;\n }, []);\n\n return { rows: quoteRows };\n };\n\n /**\n * Populates a pencil reservation request based on a quote request.\n */\n public buildPencilRequest = (rows: BasketRow[], memberNumber?: string, pencilId?: string): IPencilReservationRequest => {\n const quoteRequest = this.buildQuoteRequest(rows, memberNumber);\n const pencilRequest: IPencilReservationRequest = {\n ...quoteRequest,\n pencilId: pencilId,\n };\n\n pencilRequest.rows = quoteRequest.rows.map((requestRow) => {\n const basketRow = rows.find((r) => r.getID() == requestRow.rowId);\n\n return {\n ...requestRow,\n pencilId: basketRow?.pencilId,\n };\n });\n\n return pencilRequest;\n };\n\n /**\n * Generates a unique query ID string based on basket row data.\n * This ID is used to detect changes and re-fetch deposit quotes during checkout.\n */\n public buildQuoteQueryID = (rows: BasketRow[], memberNumber?: string): string => {\n const quoteRequest: IBookingQuoteRequest = this.buildQuoteRequest(rows, memberNumber);\n return quoteRequest.rows\n .map((row) => {\n const sortedKeys = Object.keys(row).sort();\n return sortedKeys\n .map((key) => {\n const value = row[key as keyof typeof row];\n return `${key}-${value}`;\n })\n .join('-');\n })\n .join('-');\n };\n\n /**\n * Returns a quote for the given\n */\n public getPriceQuote = async (hotelId: string, rows: BasketRow[], memberNumber?: string): Promise<IBookingQuoteResponse> => {\n const quoteBody = this.buildQuoteRequest(rows, memberNumber);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'quote');\n };\n\n /**\n * Pencils a reservation for the given rooms. Returns the timeout, and quote if applicable.\n */\n public pencilReservation = async (hotelId: string, rows: BasketRow[], memberNumber?: string, pencilId?: string): Promise<IPencilReservationResponse> => {\n const quoteBody = this.buildPencilRequest(rows, memberNumber, pencilId);\n return this.post(APIEndpoint.Reservations, quoteBody, hotelId, {}, 'pencil');\n };\n\n /**\n *\n * @param basketRows\n * @param userProfiles\n * @param payment\n * @param addonRows\n * @param comments\n * @param hotelId\n * @param sessionId\n * @param specialReq\n * @returns\n */\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n sessionId: string,\n pencilId: string | undefined = undefined,\n specialReq: string | undefined = undefined,\n retryPayment = false,\n roomstayId: string | undefined = undefined,\n memberNumber: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n roomType: row.getRoom().code || '',\n ratePlan: row.getRate()?.code || '',\n promoCode: row.getPromoCode(),\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n checkInDate: row.getStartDate().format('YYYY-MM-DD'),\n checkOutDate: row.getEndDate().format('YYYY-MM-DD'),\n\n quoteId: row.quoteDetails?.quoteId,\n rowId: row.getID(),\n memberNumber,\n pencilId: row.pencilId,\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n code: addon.code,\n startDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.ratePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.startTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.pricingType = addon.pricingType;\n }\n\n return response;\n });\n\n const getParams: any = {};\n\n if (retryPayment) {\n getParams.retryPayment = true;\n }\n\n return this.post(\n APIEndpoint.Reservations,\n {\n rooms: rooms,\n services: addons,\n specialRequest: specialReq,\n comments: comments,\n profiles: userProfiles,\n payment: payment,\n sessionId: sessionId,\n pencilId: pencilId,\n sourceUrl: window.location.href,\n roomstayId: roomstayId,\n },\n hotelId,\n getParams\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public linkBookingToMember = async (hotelId: string, reservationId: string, reservationEmail: string): Promise<{ message: string; booking: IRoomstayMemberBooking }> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.post(\n APIEndpoint.Reservations,\n {\n reservationId,\n reservationEmail,\n },\n hotelId,\n {},\n 'link-booking'\n );\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
|
|
@@ -173,7 +173,7 @@ const SignUpForm = (props) => {
|
|
|
173
173
|
react_1.default.createElement(Checkbox_1.default, Object.assign({ label: react_1.default.createElement("div", null,
|
|
174
174
|
t(Translation_1.Translation.Navigation.SignUp.Inputs.Terms.BaseText),
|
|
175
175
|
' ',
|
|
176
|
-
react_1.default.createElement("a", { href: hotel === null || hotel === void 0 ? void 0 : hotel.privacyPolicyUrl, target: "_blank", style: { color: Color_1.Color.Accent }, rel: "noreferrer" }, t(Translation_1.Translation.Navigation.SignUp.Inputs.Terms.LinkText))) }, register('termsAndConditions', {
|
|
176
|
+
react_1.default.createElement("a", { href: (hotel === null || hotel === void 0 ? void 0 : hotel.privacyPolicyUrl) || (ccx === null || ccx === void 0 ? void 0 : ccx.privacyPolicyUrl), target: "_blank", style: { color: Color_1.Color.Accent }, rel: "noreferrer" }, t(Translation_1.Translation.Navigation.SignUp.Inputs.Terms.LinkText))) }, register('termsAndConditions', {
|
|
177
177
|
required: {
|
|
178
178
|
value: true,
|
|
179
179
|
message: t(Translation_1.Translation.Navigation.SignUp.Inputs.Terms.Error),
|