@roomstay/frontend 2.6.77-0 → 2.6.77
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/{451.bundle.js → 151.bundle.js} +1 -1
- package/dist/177.bundle.js +1 -0
- package/dist/279.bundle.js +1 -0
- package/dist/288.bundle.js +1 -0
- package/dist/370.bundle.js +1 -0
- package/dist/430.bundle.js +1 -0
- package/dist/439.bundle.js +1 -0
- package/dist/446.bundle.js +1 -0
- package/dist/449.bundle.js +1 -0
- package/dist/535.bundle.js +2 -0
- package/dist/{349.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +1 -1
- package/dist/537.bundle.js +1 -0
- package/dist/619.bundle.js +1 -0
- package/dist/625.bundle.js +1 -0
- package/dist/659.bundle.js +1 -0
- package/dist/686.bundle.js +1 -0
- package/dist/873.bundle.js +1 -0
- package/dist/972.bundle.js +1 -0
- package/dist/978.bundle.js +1 -0
- package/dist/984.bundle.js +1 -0
- package/dist/main.bundle.js +1 -1
- package/dist/src/animations/AutoAutoHeight.d.ts +1 -1
- package/dist/src/api/HotelAPI.d.ts +0 -2
- package/dist/src/api/HotelAPI.js +0 -7
- package/dist/src/api/HotelAPI.js.map +1 -1
- package/dist/src/api/ReservationAPI.js +9 -12
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -2
- package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -2
- package/dist/src/components/User/Forms/VerifyEmailForm.d.ts +1 -2
- package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.d.ts +1 -2
- package/dist/src/components/generic/Alert.d.ts +2 -2
- package/dist/src/components/generic/BEButton.d.ts +1 -1
- package/dist/src/components/generic/BackButton.d.ts +1 -2
- package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +0 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +1 -7
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +2 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +1 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +5 -14
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +10 -24
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.d.ts +2 -10
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +22 -187
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/Card/IconNavCard/IconNavCard.d.ts +2 -2
- package/dist/src/components/generic/Countdown.d.ts +1 -2
- package/dist/src/components/generic/Currency.d.ts +1 -2
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +1 -2
- package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.d.ts +1 -2
- package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.d.ts +1 -2
- package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.d.ts +1 -2
- package/dist/src/components/generic/Distance.d.ts +1 -2
- package/dist/src/components/generic/Headline.d.ts +1 -1
- package/dist/src/components/generic/HtmlContentViewer.d.ts +1 -2
- package/dist/src/components/generic/InputGroup/InputGroup.d.ts +2 -2
- package/dist/src/components/generic/LineBreak.d.ts +1 -2
- package/dist/src/components/generic/Notification.d.ts +1 -1
- package/dist/src/components/generic/NumberIncrement.d.ts +1 -2
- package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -2
- package/dist/src/components/generic/PageTitle/index.d.ts +1 -2
- package/dist/src/components/generic/PaymentCard/PaymentCard.d.ts +1 -2
- package/dist/src/components/generic/Pill.d.ts +1 -1
- package/dist/src/components/generic/Placeholder.d.ts +1 -2
- package/dist/src/components/generic/PromoCodeInput.d.ts +1 -2
- package/dist/src/components/generic/RecentSearchesCard.d.ts +1 -2
- package/dist/src/components/generic/RoomstayMark.d.ts +1 -2
- package/dist/src/components/generic/Select/Select.d.ts +1 -2
- package/dist/src/components/generic/Select/Select.js +2 -2
- package/dist/src/components/generic/Select/Select.js.map +1 -1
- package/dist/src/components/generic/Slider/Slider.d.ts +1 -1
- package/dist/src/components/generic/Tabs/TabRouteContainer.d.ts +2 -2
- package/dist/src/components/generic/Tooltip/Tooltip.d.ts +2 -2
- package/dist/src/components/generic/badging/SSLSecureBadge.d.ts +1 -2
- package/dist/src/components/generic/buttons/NextStepButton.d.ts +1 -2
- package/dist/src/components/generic/date/DatePicker.d.ts +1 -2
- package/dist/src/components/generic/date/DatePickerDay.d.ts +1 -2
- package/dist/src/components/generic/date/DatePickerDays.d.ts +1 -2
- package/dist/src/components/generic/date/DatePickerMonth.d.ts +1 -2
- package/dist/src/components/generic/date/DatePickerWeek.d.ts +1 -2
- package/dist/src/components/generic/date/FloatingDatePicker.d.ts +1 -1
- package/dist/src/components/generic/date/WeekViewSkeleton.d.ts +1 -2
- package/dist/src/components/generic/loader/ImageLoader.d.ts +1 -1
- package/dist/src/components/generic/loader/LargeLoader.d.ts +1 -2
- package/dist/src/components/generic/loader/OverlayLoader.d.ts +1 -2
- package/dist/src/components/generic/loader/SmallSpinner.d.ts +1 -2
- package/dist/src/components/generic/map/HotelLocationMap.d.ts +1 -2
- package/dist/src/components/generic/modal/ConfirmationModal.d.ts +1 -2
- package/dist/src/components/generic/modal/ErrorModal.d.ts +1 -1
- package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +1 -2
- package/dist/src/components/generic/modal/SimpleModal.d.ts +1 -1
- package/dist/src/components/generic/modal/TabbedModal.d.ts +1 -1
- package/dist/src/components/generic/radio/RadioFields.d.ts +1 -2
- package/dist/src/components/graphics/TravelerNotfound.d.ts +1 -2
- package/dist/src/components/iconComponents/BookNowPayLaterIcon.d.ts +1 -2
- package/dist/src/components/members/InlineSignUpSection.d.ts +1 -2
- package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +1 -2
- package/dist/src/components/members/SignInModal/InternalMemberSignInModal.d.ts +1 -2
- package/dist/src/components/members/SignInModal/MemberPortalSignInModal.d.ts +1 -2
- package/dist/src/components/members/SignInModal/MemberSignInModal.d.ts +1 -2
- package/dist/src/components/navigation/Header.d.ts +1 -2
- package/dist/src/components/navigation/StepSelector.d.ts +1 -2
- package/dist/src/components/navigation/StepSelectorModal.d.ts +1 -2
- package/dist/src/components/pages/Account/Card/MemberCardItem.d.ts +1 -2
- package/dist/src/components/pages/PageColorComponent.d.ts +1 -2
- package/dist/src/components/reservation/ReservationItem.d.ts +1 -2
- package/dist/src/components/steps/DaysSelectedInformer.d.ts +1 -2
- package/dist/src/components/steps/MinimumNightStayPill.d.ts +1 -2
- package/dist/src/components/steps/addons/AddonCard.d.ts +1 -2
- package/dist/src/components/steps/addons/AddonList.d.ts +1 -2
- package/dist/src/components/steps/addons/AddonsNotFoundBlock.d.ts +1 -2
- package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +1 -2
- package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.d.ts +1 -2
- package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +1 -2
- package/dist/src/components/steps/confirmation/AccountDetails.d.ts +1 -2
- package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.d.ts +1 -2
- package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +1 -2
- package/dist/src/components/steps/confirmation/PlanpayLabel.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +10 -11
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationForm.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js +4 -11
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.d.ts +1 -2
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.d.ts +1 -2
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.d.ts +1 -2
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.d.ts +1 -2
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.d.ts +1 -2
- package/dist/src/components/steps/date/OccupancyWarningBlock.d.ts +1 -2
- package/dist/src/components/steps/date/PeoplePicker.d.ts +1 -2
- package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -2
- package/dist/src/components/steps/date/StepDatePricePerRoom.d.ts +1 -2
- package/dist/src/components/steps/date/StepOneDateRange.d.ts +1 -2
- package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +1 -2
- package/dist/src/components/steps/date/StepOneDateRangePickerLegend.d.ts +1 -2
- package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -2
- package/dist/src/components/steps/date/StepOneStatusPeople.d.ts +1 -2
- package/dist/src/components/steps/hotel/HotelCard.d.ts +1 -2
- package/dist/src/components/steps/hotel/HotelCardList.d.ts +1 -2
- package/dist/src/components/steps/hotel/HotelCardModal.d.ts +1 -2
- package/dist/src/components/steps/hotel/HotelInfoPerksRow.d.ts +1 -2
- package/dist/src/components/steps/hotel/HotelSearchParameters.d.ts +1 -2
- package/dist/src/components/steps/hotel/NoHotelsAvailable.d.ts +1 -2
- package/dist/src/components/steps/room/AvailableUpgradesModal.js +5 -0
- package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
- package/dist/src/components/steps/room/ImageGallerySlider.d.ts +1 -2
- package/dist/src/components/steps/room/InactivityWindow.d.ts +1 -2
- package/dist/src/components/steps/room/LargeRoomCard.d.ts +1 -2
- package/dist/src/components/steps/room/NoRoomsFoundBlock.d.ts +1 -2
- package/dist/src/components/steps/room/RatesNotFoundBlock.d.ts +1 -2
- package/dist/src/components/steps/room/RoomList.d.ts +1 -2
- package/dist/src/components/steps/room/RoomModal.d.ts +1 -2
- package/dist/src/components/steps/room/RoomModalPerkRow.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomAlertBlocks.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomBestRateAlert.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomErrorForm.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomHotelDetails.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomSortBy.d.ts +1 -2
- package/dist/src/components/steps/room/StepRoomSummaryAndButton.d.ts +1 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.d.ts +1 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.d.ts +1 -2
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.d.ts +1 -2
- package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +1 -2
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.d.ts +1 -2
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +1 -2
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.d.ts +1 -2
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +1 -2
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +1 -2
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.d.ts +1 -2
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.d.ts +1 -2
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.d.ts +2 -3
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +26 -15
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.d.ts +2 -3
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +1 -2
- package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.d.ts +1 -2
- package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.d.ts +1 -2
- package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.d.ts +1 -2
- package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.d.ts +1 -2
- package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.d.ts +1 -2
- package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.d.ts +1 -2
- package/dist/src/components/summary/BEMobileSummary.d.ts +1 -2
- package/dist/src/components/summary/BEMobileSummaryModal.d.ts +1 -2
- package/dist/src/components/summary/BESummary.d.ts +1 -2
- package/dist/src/components/summary/BESummaryAddonRow.d.ts +1 -2
- package/dist/src/components/summary/BESummaryPerkBlock.d.ts +1 -2
- package/dist/src/components/summary/BESummaryPrivacyPolicy.d.ts +1 -2
- package/dist/src/components/summary/BESummaryRoomRow.d.ts +1 -2
- package/dist/src/components/summary/BESummaryRoomRow.js +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.d.ts +1 -2
- package/dist/src/contexts/BasketContext/BasketContextWrapper.d.ts +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +11 -63
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.d.ts +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.d.ts +2 -2
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +0 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationFormContext.d.ts +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +2 -3
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.d.ts +1 -2
- package/dist/src/contexts/ErrorContext.d.ts +1 -1
- package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.d.ts +1 -2
- package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.d.ts +1 -2
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -2
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +2 -10
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.d.ts +1 -1
- package/dist/src/contexts/ModalContext.d.ts +1 -1
- package/dist/src/contexts/NotificationContext.d.ts +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +0 -7
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.d.ts +1 -2
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +0 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.d.ts +1 -2
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +2 -2
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +0 -3
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +1 -2
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.d.ts +1 -2
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +0 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
- package/dist/src/hooks/useNextStepAction.d.ts +1 -2
- package/dist/src/icons/Check.d.ts +1 -2
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +2 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +0 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +1 -2
- package/dist/src/models/BasketRow.js +2 -32
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +0 -13
- package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +0 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Room/RoomRate.d.ts +3 -0
- package/dist/src/models/Room/RoomRate.js +6 -1
- package/dist/src/models/Room/RoomRate.js.map +1 -1
- package/dist/src/models/RoomstaySession.d.ts +0 -1
- package/dist/src/models/RoomstaySession.js.map +1 -1
- package/dist/src/pages/account/AccountHome/AccountHomePage.d.ts +1 -2
- package/dist/src/pages/account/AccountOutlet.d.ts +1 -1
- package/dist/src/pages/account/AccountRouter.d.ts +1 -2
- package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.d.ts +1 -2
- package/dist/src/pages/account/Details/AccountDetailsCardsPage.d.ts +1 -2
- package/dist/src/pages/account/Details/AccountDetailsProfilePage.d.ts +1 -2
- package/dist/src/pages/account/Help/AccountHelpPage.d.ts +1 -2
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.d.ts +1 -2
- package/dist/src/pages/account/Reservations/AccountReservationsPage.d.ts +1 -2
- package/dist/src/pages/findReservation/FindReservation.d.ts +1 -2
- package/dist/src/pages/findReservation/FindReservationResults.d.ts +1 -2
- package/dist/src/pages/findReservation/ReservationRow.d.ts +1 -2
- package/dist/src/pages/findReservation/ReservationRowModal.d.ts +1 -2
- package/dist/src/pages/hotel/HotelInfo.d.ts +1 -2
- package/dist/src/pages/hotel/HotelInfoPlaceholder.d.ts +1 -2
- package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +1 -2
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepAddon/StepAddonLoader.d.ts +1 -2
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.d.ts +1 -2
- package/dist/src/pages/steps/StepDate/StepDate.d.ts +1 -2
- package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.d.ts +1 -2
- package/dist/src/pages/steps/StepGuide.d.ts +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +1 -2
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepHotel/StepHotelLoader.d.ts +1 -2
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.d.ts +1 -2
- package/dist/src/pages/steps/StepRoom/StepRoomLoader.d.ts +1 -2
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +1 -2
- package/dist/src/providers/DIProvider.d.ts +1 -2
- package/dist/src/providers/FeatureProvider.js +0 -2
- package/dist/src/providers/FeatureProvider.js.map +1 -1
- package/dist/src/providers/feature/Feature.d.ts +0 -2
- package/dist/src/providers/feature/Feature.js +0 -4
- package/dist/src/providers/feature/Feature.js.map +1 -1
- package/dist/src/providers/storage/SessionProvider.js +0 -2
- package/dist/src/providers/storage/SessionProvider.js.map +1 -1
- package/dist/src/routes/NaturallyProgressedStepRoute.d.ts +1 -2
- package/dist/src/stories/BookingWizard.stories.d.ts +1 -1
- package/dist/src/stories/ConfirmationModal.stories.d.ts +1 -2
- package/dist/src/stories/DateRangePicker.stories.d.ts +4 -5
- package/dist/src/stories/ErrorModal.stories.d.ts +1 -2
- package/dist/src/stories/EventCarousel.stories.d.ts +2 -2
- package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +2 -2
- package/dist/src/stories/IconNavCard.stories.d.ts +2 -2
- package/dist/src/stories/NumberIncrement.stories.d.ts +1 -2
- package/dist/src/stories/PaymentCard.stories.d.ts +2 -3
- package/dist/src/stories/RadioButtonGroup.stories.d.ts +3 -3
- package/dist/src/stories/Select.stories.d.ts +3 -3
- package/dist/src/stories/SimpleModal.stories.d.ts +1 -2
- package/dist/src/stories/Slider.stories.d.ts +2 -3
- package/dist/src/stories/TabbedModal.stories.d.ts +1 -2
- package/dist/src/stories/Tabs.stories.d.ts +1 -1
- package/dist/src/translations/Translation.d.ts +1 -6
- package/dist/src/translations/Translation.js +1 -6
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +1 -6
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/TotalCalculator.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.d.ts +1 -2
- package/dist/vendors.bundle.js +1 -1
- package/dist/vendors.bundle.js.LICENSE.txt +6 -6
- package/package.json +2 -2
- package/dist/153.bundle.js +0 -1
- package/dist/176.bundle.js +0 -1
- package/dist/273.bundle.js +0 -1
- package/dist/292.bundle.js +0 -1
- package/dist/316.bundle.js +0 -1
- package/dist/349.bundle.js +0 -2
- package/dist/352.bundle.js +0 -1
- package/dist/41.bundle.js +0 -1
- package/dist/479.bundle.js +0 -1
- package/dist/534.bundle.js +0 -1
- package/dist/557.bundle.js +0 -1
- package/dist/620.bundle.js +0 -1
- package/dist/696.bundle.js +0 -1
- package/dist/734.bundle.js +0 -1
- package/dist/83.bundle.js +0 -1
- package/dist/910.bundle.js +0 -1
- package/dist/922.bundle.js +0 -1
- package/dist/99.bundle.js +0 -1
- package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.d.ts +0 -7
- package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.js +0 -54
- package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.js.map +0 -1
- package/dist/src/providers/feature/ConfirmationImportantInformationFeature.d.ts +0 -10
- package/dist/src/providers/feature/ConfirmationImportantInformationFeature.js +0 -13
- package/dist/src/providers/feature/ConfirmationImportantInformationFeature.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;
|
|
1
|
+
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AAmJjH,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n checkInTime?: string | null;\n checkOutTime?: string | null;\n filters: {\n [id: string]: {\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n };\n };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n petFriendly?: boolean;\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n timeZone: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n itineraryNote: string;\n disableSavedPayments: boolean;\n} & Pick<\n AdminHotelConfig,\n | 'childConfiguration'\n | 'perks'\n | 'perkTitle'\n | 'countryPrefix'\n | 'quoteImageDesktop'\n | 'quoteImageMobile'\n | 'memberOnlyImage'\n | 'captureChildAge'\n | 'company'\n | 'fees'\n | 'addDepositFeeToBookingTotal'\n | 'minAdultAge'\n | 'maxAdultAge'\n | 'countInfantsInOccupancy'\n | 'preferProviderBookingId'\n | 'showUnavailableRooms'\n | 'isRACMemberNoRequired'\n> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
|
|
@@ -80,8 +80,7 @@ export default class BasketRow {
|
|
|
80
80
|
setRate(rate: RoomRate | null, upsellEnabled?: boolean): void;
|
|
81
81
|
private setPreUpsellRoomRate;
|
|
82
82
|
getPreUpsellRoomRate(): RoomRate | undefined;
|
|
83
|
-
getTotalPrice(
|
|
84
|
-
getAveragePrice: (getCost?: boolean) => number;
|
|
83
|
+
getTotalPrice(getCost?: boolean): number | undefined;
|
|
85
84
|
checkDiffFromReservation(res: ReservationDTO): false | BasketRowDifferences;
|
|
86
85
|
setAuxiliaryFilter(value: {
|
|
87
86
|
[id: string]: any;
|
|
@@ -27,23 +27,6 @@ class BasketRow {
|
|
|
27
27
|
};
|
|
28
28
|
this.enableRoomCodeFilter = false; // Enable room code filter when the the URL's room parameter is present
|
|
29
29
|
this.roomCode = ''; // Indicates availability for a specific room extracted from the URL's room parameter
|
|
30
|
-
this.getAveragePrice = (getCost = false) => {
|
|
31
|
-
if (this.quoteDetails) {
|
|
32
|
-
// If deposit is required, get the average price from quote details
|
|
33
|
-
const total = this.getTotalPrice(getCost);
|
|
34
|
-
const rate = this.getRate();
|
|
35
|
-
if (!total || !rate)
|
|
36
|
-
return 0;
|
|
37
|
-
return total / Object.keys(rate.nightRates).length;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// Otherwise, calculate the average price from Rate
|
|
41
|
-
const rate = this.getRate();
|
|
42
|
-
if (!rate)
|
|
43
|
-
return 0;
|
|
44
|
-
return rate.getAveragePrice(getCost);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
30
|
/*
|
|
48
31
|
* Rate is optional since we can create row entries on first step, where there is no ability to select rate.
|
|
49
32
|
*/
|
|
@@ -222,25 +205,12 @@ class BasketRow {
|
|
|
222
205
|
getPreUpsellRoomRate() {
|
|
223
206
|
return this.preUpsellRoomRate;
|
|
224
207
|
}
|
|
225
|
-
getTotalPrice(
|
|
208
|
+
getTotalPrice(getCost = false) {
|
|
226
209
|
var _a;
|
|
227
|
-
|
|
228
|
-
// If deposit is required, get the total Base rate before fees from quote details
|
|
229
|
-
let totalPrice = this.quoteDetails.totalRate;
|
|
230
|
-
if (!beforeTax) {
|
|
231
|
-
// **Previous logic**: totalPrice = total Base rate + Fees on Deposit amount
|
|
232
|
-
// totalPrice += this.quoteDetails.totalFees;
|
|
233
|
-
// **Updated logic** : totalPrice = total Base rate + its fees
|
|
234
|
-
totalPrice = this.quoteDetails.fullPaymentAmount;
|
|
235
|
-
}
|
|
236
|
-
return totalPrice;
|
|
237
|
-
}
|
|
238
|
-
// Otherwise, calculate the total price from Rate
|
|
239
|
-
return (_a = this.getRate()) === null || _a === void 0 ? void 0 : _a.getTotalPrice(beforeTax);
|
|
210
|
+
return (_a = this.getRate()) === null || _a === void 0 ? void 0 : _a.getTotalPrice(getCost);
|
|
240
211
|
}
|
|
241
212
|
checkDiffFromReservation(res) {
|
|
242
213
|
const differences = {};
|
|
243
|
-
const beforeTax = false;
|
|
244
214
|
if (res.total.beforeFees) {
|
|
245
215
|
// This beforeFees field will be included when we're using Itemised Fees. Because fees can be a part of
|
|
246
216
|
// rates, we'll just confirm that the price excluding fees is correct for now.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingQuoteResponse } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\nimport { getQueryParamFromHash } from '@/util/CalendarHelper';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nimport { EAppQueryParameters } from './AppQueryParameters';\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n private manualInputPromoCode: boolean;\n\n private enableRoomCodeFilter = false; // Enable room code filter when the the URL's room parameter is present\n private roomCode = ''; // Indicates availability for a specific room extracted from the URL's room parameter\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n\n private preUpsellRoomRate?: RoomRate;\n\n public quoteDetails?: NonNullable<IBookingQuoteResponse>['rows'][number];\n public pencilId?: string;\n\n public checkoutDefaults?: Partial<UserProfile>;\n\n public auxiliaryFilter?: { [id: string]: string | number };\n\n /**\n *\n * @param rate - Optional `RoomRate` object associated with the basket row.\n * @param uniqId - Optional unique identifier for this basket row instance.\n * @param shouldEnableRoomCodeFilter - Whether to check the URL for a room code and enable filtering accordingly.\n * Defaults to `true`.\n */\n public constructor(rate?: RoomRate, uniqId?: string, shouldEnableRoomCodeFilter = true) {\n /*\n * Rate is optional since we can create row entries on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n if (shouldEnableRoomCodeFilter) {\n const roomCode = getQueryParamFromHash(EAppQueryParameters.Room); // Extract the the URL's room parameter\n this.enableRoomCodeFilter = !!roomCode;\n this.roomCode = roomCode || '';\n }\n\n this.manualInputPromoCode = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode(memberOnlyPromoCode?: string) {\n if (!memberOnlyPromoCode) {\n return this.promoCode.toUpperCase();\n }\n\n if (memberOnlyPromoCode !== this.promoCode.toUpperCase() || this.isManualInputPromoCode()) {\n return this.promoCode.toUpperCase();\n }\n\n return '';\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public isManualInputPromoCode() {\n return this.manualInputPromoCode;\n }\n\n public setManualInputPromoCode(value: boolean) {\n this.manualInputPromoCode = value;\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled && this.rate) {\n this.setPreUpsellRoomRate(this.rate);\n }\n\n this.rate = rate;\n\n if (rate) {\n const room = rate.getRoom();\n this.room = room;\n if (room.code) {\n this.roomCode = room.code; // [step/room] Update Indicates availability for a specific room\n }\n }\n }\n\n private setPreUpsellRoomRate(roomRate: RoomRate) {\n this.preUpsellRoomRate = roomRate;\n }\n\n public getPreUpsellRoomRate() {\n return this.preUpsellRoomRate;\n }\n\n public getTotalPrice(beforeTax = false) {\n if (this.quoteDetails) {\n // If deposit is required, get the total Base rate before fees from quote details\n let totalPrice = this.quoteDetails.totalRate;\n if (!beforeTax) {\n // **Previous logic**: totalPrice = total Base rate + Fees on Deposit amount\n // totalPrice += this.quoteDetails.totalFees;\n // **Updated logic** : totalPrice = total Base rate + its fees\n totalPrice = this.quoteDetails.fullPaymentAmount;\n }\n return totalPrice;\n }\n // Otherwise, calculate the total price from Rate\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public getAveragePrice = (getCost = false): number => {\n if (this.quoteDetails) {\n // If deposit is required, get the average price from quote details\n const total = this.getTotalPrice(getCost);\n const rate = this.getRate();\n if (!total || !rate) return 0;\n\n return total / Object.keys(rate.nightRates).length;\n } else {\n // Otherwise, calculate the average price from Rate\n const rate = this.getRate();\n if (!rate) return 0;\n return rate.getAveragePrice(getCost);\n }\n };\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n const beforeTax = false;\n\n if (res.total.beforeFees) {\n // This beforeFees field will be included when we're using Itemised Fees. Because fees can be a part of\n // rates, we'll just confirm that the price excluding fees is correct for now.\n if (Number(res.total.beforeFees).toFixed(2) !== Number(this.getTotalPrice(true)).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(true),\n after: res.total.beforeFees,\n };\n }\n } else {\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n\n public setAuxiliaryFilter(value: { [id: string]: any }) {\n this.auxiliaryFilter = value;\n }\n\n public getAuxiliaryFilter() {\n return this.auxiliaryFilter;\n }\n\n public getEnableRoomCodeFilter() {\n return this.enableRoomCodeFilter;\n }\n\n public setEnableRoomCodeFilter(enable: boolean) {\n this.enableRoomCodeFilter = enable;\n }\n\n public getRoomCode() {\n return this.roomCode || '';\n }\n\n public setRoomCode(roomCode: string) {\n this.roomCode = roomCode;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAO1B,0DAA8D;AAC9D,wCAAqC;AACrC,oEAA4D;AAE5D,6DAA2D;AAC3D,MAAqB,SAAS;IA4C1B;;;;;;OAMG;IACH,YAAmB,IAAe,EAAE,MAAe,EAAE,0BAA0B,GAAG,IAAI;;QA1C9E,mBAAc,GAMlB;YACA,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAA,eAAK,GAAE;YAClB,OAAO,EAAE,IAAA,eAAK,GAAE;SACnB,CAAC;QAMM,yBAAoB,GAAG,KAAK,CAAC,CAAC,uEAAuE;QACrG,aAAQ,GAAG,EAAE,CAAC,CAAC,qFAAqF;QAwBxG;;WAEG;QACH,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,CAAC,MAAM,GAAG,MAAA,oCAAc,CAAC,MAAM,mCAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAA,oCAAc,CAAC,QAAQ,mCAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAA,oCAAc,CAAC,OAAO,mCAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,0BAA0B,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAA,sCAAqB,EAAC,wCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC;YACzG,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;SAClC;QAED,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,mBAA4B;QAC5C,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACvC;QAED,IAAI,mBAAmB,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACvF,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACvC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,kBAAkB;QACrB,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YAClC,OAAO,aAAK,CAAC,OAAO,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YAC3C,OAAO,aAAK,CAAC,KAAK,CAAC;SACtB;QAED,OAAO,aAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE5B,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAC,IAAI,CAAY,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,6BAA6B,CAAC,IAAI,CAAY,CAAA,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,OAAO,CAAC;IAC3K,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAEM,uBAAuB,CAAC,KAAc;QACzC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,eAAe;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACnD;QAED,OAAO,CAAC,CAAC;IACb,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,cAAc;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,MAAM,GAAG,WAAW,EAAE,SAAS,GAAG,GAAG;QACzD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SACxF;IACL,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;IAEM,YAAY,CAAC,IAAY;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,KAAc;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,MAAe;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAEM,kBAAkB,CAAC,MAAmC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,CAAC;IAEM,YAAY,CAAC,IAAiB;QACjC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;IAEM,UAAU,CAAC,IAAiB;QAC/B,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;IACL,CAAC;IAEM,SAAS,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,OAAe;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,iBAAiB;QACpB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/C,CAAC;IAEM,kBAAkB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,IAAqB,EAAE,aAAuB;QACzD,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,gEAAgE;aAC9F;SACJ;IACL,CAAC;IAEO,oBAAoB,CAAC,QAAkB;QAC3C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACtC,CAAC;IAEM,oBAAoB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAEM,aAAa,CAAC,OAAO,GAAG,KAAK;;QAChC,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,wBAAwB,CAAC,GAAmB;QAC/C,MAAM,WAAW,GAAyB,EAAE,CAAC;QAE7C,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;YACtB,uGAAuG;YACvG,8EAA8E;YAC9E,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACzF,WAAW,CAAC,UAAU,GAAG;oBACrB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBAChC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;iBAC9B,CAAC;aACL;SACJ;aAAM;YACH,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnF,WAAW,CAAC,UAAU,GAAG;oBACrB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;oBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;iBAC5B,CAAC;aACL;SACJ;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;YACjC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE9B,OAAO,WAAW,CAAC;SACtB;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,kBAAkB,CAAC,KAA4B;QAClD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAEM,uBAAuB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAEM,uBAAuB,CAAC,MAAe;QAC1C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;IACvC,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC/B,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAjVD,4BAiVC","sourcesContent":["import { IBookingQuoteResponse } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\nimport { getQueryParamFromHash } from '@/util/CalendarHelper';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nimport { EAppQueryParameters } from './AppQueryParameters';\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n private manualInputPromoCode: boolean;\n\n private enableRoomCodeFilter = false; // Enable room code filter when the the URL's room parameter is present\n private roomCode = ''; // Indicates availability for a specific room extracted from the URL's room parameter\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n\n private preUpsellRoomRate?: RoomRate;\n\n public quoteDetails?: NonNullable<IBookingQuoteResponse>['rows'][number];\n public pencilId?: string;\n\n public checkoutDefaults?: Partial<UserProfile>;\n\n public auxiliaryFilter?: { [id: string]: string | number };\n\n /**\n *\n * @param rate - Optional `RoomRate` object associated with the basket row.\n * @param uniqId - Optional unique identifier for this basket row instance.\n * @param shouldEnableRoomCodeFilter - Whether to check the URL for a room code and enable filtering accordingly.\n * Defaults to `true`.\n */\n public constructor(rate?: RoomRate, uniqId?: string, shouldEnableRoomCodeFilter = true) {\n /*\n * Rate is optional since we can create row entries on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n if (shouldEnableRoomCodeFilter) {\n const roomCode = getQueryParamFromHash(EAppQueryParameters.Room); // Extract the the URL's room parameter\n this.enableRoomCodeFilter = !!roomCode;\n this.roomCode = roomCode || '';\n }\n\n this.manualInputPromoCode = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode(memberOnlyPromoCode?: string) {\n if (!memberOnlyPromoCode) {\n return this.promoCode.toUpperCase();\n }\n\n if (memberOnlyPromoCode !== this.promoCode.toUpperCase() || this.isManualInputPromoCode()) {\n return this.promoCode.toUpperCase();\n }\n\n return '';\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public isManualInputPromoCode() {\n return this.manualInputPromoCode;\n }\n\n public setManualInputPromoCode(value: boolean) {\n this.manualInputPromoCode = value;\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled && this.rate) {\n this.setPreUpsellRoomRate(this.rate);\n }\n\n this.rate = rate;\n\n if (rate) {\n const room = rate.getRoom();\n this.room = room;\n if (room.code) {\n this.roomCode = room.code; // [step/room] Update Indicates availability for a specific room\n }\n }\n }\n\n private setPreUpsellRoomRate(roomRate: RoomRate) {\n this.preUpsellRoomRate = roomRate;\n }\n\n public getPreUpsellRoomRate() {\n return this.preUpsellRoomRate;\n }\n\n public getTotalPrice(getCost = false) {\n return this.getRate()?.getTotalPrice(getCost);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (res.total.beforeFees) {\n // This beforeFees field will be included when we're using Itemised Fees. Because fees can be a part of\n // rates, we'll just confirm that the price excluding fees is correct for now.\n if (Number(res.total.beforeFees).toFixed(2) !== Number(this.getTotalPrice(true)).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(true),\n after: res.total.beforeFees,\n };\n }\n } else {\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n\n public setAuxiliaryFilter(value: { [id: string]: any }) {\n this.auxiliaryFilter = value;\n }\n\n public getAuxiliaryFilter() {\n return this.auxiliaryFilter;\n }\n\n public getEnableRoomCodeFilter() {\n return this.enableRoomCodeFilter;\n }\n\n public setEnableRoomCodeFilter(enable: boolean) {\n this.enableRoomCodeFilter = enable;\n }\n\n public getRoomCode() {\n return this.roomCode || '';\n }\n\n public setRoomCode(roomCode: string) {\n this.roomCode = roomCode;\n }\n}\n"]}
|
|
@@ -8,17 +8,4 @@ export interface BookingWizardProperty extends ShowYearOnCalendarProps {
|
|
|
8
8
|
image: string;
|
|
9
9
|
text: string;
|
|
10
10
|
};
|
|
11
|
-
address?: {
|
|
12
|
-
line1: string;
|
|
13
|
-
line2: string;
|
|
14
|
-
line3: string;
|
|
15
|
-
city: string;
|
|
16
|
-
postalCode?: string;
|
|
17
|
-
state: string;
|
|
18
|
-
country: string;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export interface IBookingWizardSearchProperty extends Pick<BookingWizardProperty, 'id' | 'name' | 'address'> {
|
|
22
|
-
bookingWizardRegion: string;
|
|
23
|
-
logo?: string;
|
|
24
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardProperty.js","sourceRoot":"/","sources":["src/models/BookingWizard/BookingWizardProperty.ts"],"names":[],"mappings":"","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\n\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\n\nexport interface BookingWizardProperty extends ShowYearOnCalendarProps {\n id: string
|
|
1
|
+
{"version":3,"file":"BookingWizardProperty.js","sourceRoot":"/","sources":["src/models/BookingWizard/BookingWizardProperty.ts"],"names":[],"mappings":"","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\n\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\n\nexport interface BookingWizardProperty extends ShowYearOnCalendarProps {\n id: string;\n name: string;\n colors?: Omit<IHotelColorScheme, 'navbar'>;\n card?: {\n image: string;\n text: string;\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAmBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n disableSavedPayments?: boolean;\n showUnavailableRooms?: boolean;\n isRACMemberNoRequired?: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n /**\n * Order available rooms\n */\n currentRoomSort?: RoomSort;\n /**\n * Order available rates\n */\n currentRoomRateSort?: RoomSort | undefined;\n maxAdults?: number; //fixed from frontend\n mobileDefaultRatesClosed?: boolean;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n
|
|
1
|
+
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAmBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n disableSavedPayments?: boolean;\n showUnavailableRooms?: boolean;\n isRACMemberNoRequired?: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n /**\n * Order available rooms\n */\n currentRoomSort?: RoomSort;\n /**\n * Order available rates\n */\n currentRoomRateSort?: RoomSort | undefined;\n maxAdults?: number; //fixed from frontend\n mobileDefaultRatesClosed?: boolean;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n\n // TODO: Should be a better way to use this configuration.\n isRACMemberNoRequired?: boolean;\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
|
|
@@ -30,6 +30,7 @@ export interface IRoomRate {
|
|
|
30
30
|
dinner: boolean;
|
|
31
31
|
};
|
|
32
32
|
rateOverrides?: RateOverride[];
|
|
33
|
+
nightsToDiscount?: number;
|
|
33
34
|
}
|
|
34
35
|
export type RateLabelsByDay = {
|
|
35
36
|
Monday: boolean;
|
|
@@ -85,6 +86,7 @@ export declare class RoomRate implements RoomRateSortable, Serializable<RoomRate
|
|
|
85
86
|
private nightRatesArray;
|
|
86
87
|
private room;
|
|
87
88
|
rateOverrides?: RateOverride[];
|
|
89
|
+
nightsToDiscount?: number;
|
|
88
90
|
constructor();
|
|
89
91
|
static fromData(data: Partial<{
|
|
90
92
|
code: string;
|
|
@@ -95,6 +97,7 @@ export declare class RoomRate implements RoomRateSortable, Serializable<RoomRate
|
|
|
95
97
|
getTotalPrice: (getCost?: boolean) => number;
|
|
96
98
|
getTotalPriceBeforeDiscount: (getCost?: boolean) => number;
|
|
97
99
|
getTotalDiscount: () => number;
|
|
100
|
+
isStayXPayYRate: () => boolean;
|
|
98
101
|
getAveragePrice: (getCost?: boolean) => number;
|
|
99
102
|
getAveragePriceBeforeDiscount: (getCost?: boolean) => number;
|
|
100
103
|
getTotalFees: () => number;
|
|
@@ -44,6 +44,9 @@ class RoomRate {
|
|
|
44
44
|
return Number(night.discount);
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
|
+
this.isStayXPayYRate = () => {
|
|
48
|
+
return !!(this.nightsToDiscount && this.nightsToDiscount > 0);
|
|
49
|
+
};
|
|
47
50
|
this.getAveragePrice = (getCost = false) => {
|
|
48
51
|
const total = this.getTotalPrice(getCost);
|
|
49
52
|
return total / Object.keys(this.nightRates).length;
|
|
@@ -476,12 +479,13 @@ class RoomRate {
|
|
|
476
479
|
promoCodeName: this.promoCodeName,
|
|
477
480
|
mealsIncluded: this.mealsIncluded,
|
|
478
481
|
rateOverrides: this.rateOverrides,
|
|
482
|
+
nightsToDiscount: this.nightsToDiscount,
|
|
479
483
|
};
|
|
480
484
|
return toSerialize;
|
|
481
485
|
}
|
|
482
486
|
unSerialize(data) {
|
|
483
487
|
var _a;
|
|
484
|
-
const { name, code, description, longDescription, isMemberOnly, guaranteeCode, cancelPolicyCode, lowestPrice, promoCode, promoCodeName, mealsIncluded } = data;
|
|
488
|
+
const { name, code, description, longDescription, isMemberOnly, guaranteeCode, cancelPolicyCode, lowestPrice, promoCode, promoCodeName, mealsIncluded, nightsToDiscount } = data;
|
|
485
489
|
const unSerializedNightRates = {};
|
|
486
490
|
if (data.nightRates) {
|
|
487
491
|
(_a = Object.keys(data.nightRates)) === null || _a === void 0 ? void 0 : _a.forEach((date) => {
|
|
@@ -503,6 +507,7 @@ class RoomRate {
|
|
|
503
507
|
this.nightRates = unSerializedNightRates;
|
|
504
508
|
this.nightRatesArray = [];
|
|
505
509
|
this.rateOverrides = data.rateOverrides;
|
|
510
|
+
this.nightsToDiscount = nightsToDiscount;
|
|
506
511
|
return this;
|
|
507
512
|
}
|
|
508
513
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomRate.js","sourceRoot":"/","sources":["src/models/Room/RoomRate.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { accumulateFees, feeMapToArray, HotelFee, ItemisedFee, mapSimpleFeesToItemisedFees } from '@/models/Fee';\nimport type { Room } from '@/models/Room/Room';\nimport RoomRateNight, { IRoomRateNight } from '@/models/Room/RoomRateNight';\nimport type RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport type { Serializable } from '@/models/Serializable';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\n\nexport enum RoomRatePriceInclusion {\n ExcludingFees = 'Fees Excluded',\n ExcludingTaxes = 'Taxes Excluded',\n ExcludingFeesAndTaxes = 'Excluding Fees and Taxes',\n IncludingFeesAndTaxes = 'Including Fees and Taxes',\n}\n\nexport interface IRoomRate {\n name: string;\n code: string;\n description: string;\n longDescription?: string;\n\n isMemberOnly?: boolean;\n guaranteeCode: string;\n cancelPolicyCode: string;\n nightRates: { [date: string]: IRoomRateNight };\n\n lowestPrice: number;\n promoCode: string;\n promoCodeName: string;\n\n mealsIncluded?: {\n breakfast: boolean;\n lunch: boolean;\n dinner: boolean;\n };\n rateOverrides?: RateOverride[];\n}\n\nexport type RateLabelsByDay = {\n Monday: boolean;\n Tuesday: boolean;\n Wednesday: boolean;\n Thursday: boolean;\n Friday: boolean;\n Saturday: boolean;\n Sunday: boolean;\n};\n\nexport type RateOverride = {\n name: string;\n shortDescription: string;\n longDescription: string;\n enabledPerDay: RateLabelsByDay;\n startDate: string;\n endDate: string;\n queryStartDate: string;\n queryEndDate: string;\n};\n\nexport type RateOverrideKeys = 'name' | 'shortDescription' | 'longDescription';\n\ninterface RequestedDate {\n startDate: Dayjs;\n endDate: Dayjs;\n}\n\ninterface DisplayRate {\n name: string;\n shortDescription: string;\n longDescription: string;\n startDate?: Dayjs;\n endDate?: Dayjs;\n override: RateOverride;\n}\n\nexport class RoomRate implements RoomRateSortable, Serializable<RoomRate, IRoomRate> {\n public name!: string;\n public code!: string;\n\n public description!: string;\n public longDescription!: string;\n\n public isMemberOnly!: boolean;\n\n public guaranteeCode!: string;\n\n public cancelPolicyCode!: string;\n\n public nightRates: { [date: string]: RoomRateNight };\n public lowestPrice!: number;\n public promoCode?: string;\n public promoCodeName?: string;\n public mealsIncluded?: {\n breakfast: boolean;\n lunch: boolean;\n dinner: boolean;\n } = {\n breakfast: false,\n lunch: false,\n dinner: false,\n };\n private nightRatesArray: RoomRateNight[];\n private room!: Room;\n public rateOverrides?: RateOverride[];\n\n public constructor() {\n this.nightRates = {};\n this.nightRatesArray = [];\n }\n\n public static fromData(data: Partial<{ code: string }> | any) {\n const rate = new this();\n\n rate.applyData(data);\n\n if (StaticContextProvider.MemberOnlyRateCodes?.includes(data.code)) {\n rate.isMemberOnly = true;\n }\n\n return rate;\n }\n\n public applyData(data: any) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n }\n\n public setRoom(room: Room) {\n this.room = room;\n }\n\n public getRoom(): Room {\n return this.room;\n }\n\n public getTotalPrice = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total);\n });\n return total;\n };\n\n public getTotalPriceBeforeDiscount = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total) + Number(night.discount);\n });\n return total;\n };\n\n public getTotalDiscount = (): number => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.discount);\n });\n };\n\n public getAveragePrice = (getCost = false): number => {\n const total = this.getTotalPrice(getCost);\n\n return total / Object.keys(this.nightRates).length;\n };\n\n public getAveragePriceBeforeDiscount = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total) + Number(night.discount);\n });\n\n return total / nightsAsArray.length;\n };\n\n public getTotalFees = () => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.fee);\n });\n };\n\n public getItemisedFees = (hotelFees: HotelFee[]): ItemisedFee[] => {\n const feeMap = new Map<HotelFee, number>();\n\n this.getNightRateArray().forEach((night) => {\n if (night.fees) {\n const fees = mapSimpleFeesToItemisedFees(night.fees, hotelFees);\n accumulateFees(feeMap, fees);\n }\n });\n\n return feeMapToArray(feeMap);\n };\n\n public getTotalTaxes = () => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.tax);\n });\n };\n\n public getPriceType = () => {\n let hasFees = false;\n let hasTax = false;\n\n Object.values(this.nightRates).forEach((night) => {\n if (night.fee && night.fee !== '0') {\n hasFees = true;\n }\n\n if (night.tax && night.tax !== '0') {\n hasTax = true;\n }\n });\n\n if (hasFees && hasTax) {\n return RoomRatePriceInclusion.ExcludingFeesAndTaxes;\n } else if (hasFees) {\n return RoomRatePriceInclusion.ExcludingTaxes;\n } else if (hasTax) {\n return RoomRatePriceInclusion.ExcludingFees;\n } else {\n return RoomRatePriceInclusion.IncludingFeesAndTaxes;\n }\n };\n\n public getGuaranteePolicy = () => {\n return AvailabilityAPI.policyMappings.guarantee[this.guaranteeCode] ?? '';\n };\n\n public getCancellationPolicy = () => {\n return AvailabilityAPI.policyMappings.cancel[this.cancelPolicyCode] ?? '';\n };\n\n public getPriceSortValue = () => {\n return this.getAveragePrice();\n };\n\n /**\n * Not implemented\n */\n public getRecommendedSortValue() {\n return 0;\n }\n\n public serialize() {\n const serializedNightRates: any = {};\n Object.keys(this.nightRates).forEach((date) => {\n serializedNightRates[date] = this.nightRates[date].serialize();\n });\n\n const toSerialize: IRoomRate = {\n name: this.name,\n code: this.code,\n description: this.description,\n longDescription: this.longDescription,\n isMemberOnly: this.isMemberOnly,\n guaranteeCode: this.guaranteeCode,\n cancelPolicyCode: this.cancelPolicyCode,\n nightRates: serializedNightRates,\n lowestPrice: this.lowestPrice,\n promoCode: this.promoCode,\n promoCodeName: this.promoCodeName,\n mealsIncluded: this.mealsIncluded,\n rateOverrides: this.rateOverrides,\n } as IRoomRate;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoomRate) {\n const { name, code, description, longDescription, isMemberOnly, guaranteeCode, cancelPolicyCode, lowestPrice, promoCode, promoCodeName, mealsIncluded } = data;\n\n const unSerializedNightRates: any = {};\n\n if (data.nightRates) {\n Object.keys(data.nightRates)?.forEach((date) => {\n const nightRate = new RoomRateNight();\n unSerializedNightRates[date] = nightRate.unSerialize(data.nightRates[date]);\n });\n }\n\n this.name = name;\n this.code = code;\n this.description = description;\n this.longDescription = longDescription as string;\n this.isMemberOnly = isMemberOnly as boolean;\n this.guaranteeCode = guaranteeCode;\n this.cancelPolicyCode = cancelPolicyCode;\n this.lowestPrice = lowestPrice;\n this.promoCode = promoCode;\n this.promoCodeName = promoCodeName;\n this.mealsIncluded = mealsIncluded;\n this.nightRates = unSerializedNightRates;\n this.nightRatesArray = [];\n this.rateOverrides = data.rateOverrides;\n\n return this;\n }\n\n private getNightRateArray = () => {\n if (!this.nightRatesArray.length) {\n this.nightRatesArray = Object.values(this.nightRates);\n }\n\n return this.nightRatesArray;\n };\n\n private reduceNightData = (reducer: (sum: number, rate: RoomRateNight) => number) => {\n return this.getNightRateArray().reduce<number>(reducer, 0) ?? 0;\n };\n\n private nightRateTotal = (value: (rate: RoomRateNight) => number) => {\n return this.reduceNightData((sum: number, redNight: RoomRateNight) => {\n const summingValue = value(redNight);\n\n return sum ? sum + summingValue : summingValue;\n });\n };\n\n public datesOverlap = (startDate1: Dayjs, endDate1: Dayjs, startDate2: Dayjs, endDate2: Dayjs): boolean => {\n const overlap1 = startDate1.isSameOrBefore(endDate2) && startDate2.isSameOrBefore(endDate1);\n const overlap2 = startDate1.isSameOrAfter(endDate2) && startDate2.isSameOrAfter(endDate1);\n return overlap1 || overlap2;\n };\n\n public getDefaultLabelsByDate = (requestedDate: RequestedDate) => {\n const days: { label: string; alternateLabel: string }[] = [];\n let currentDate = requestedDate.startDate.clone();\n while (currentDate.isSameOrBefore(requestedDate.endDate)) {\n days.push({\n label: currentDate.format('dddd, MMM DD, YYYY'),\n alternateLabel: '', // No rate label available\n });\n currentDate = currentDate.add(1, 'day');\n }\n return days;\n };\n\n public getPossiblyOverwrittenDetails = (requestedDate: RequestedDate) => {\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) return { name: this.name, shortDescription: this.description, longDescription: this.longDescription };\n\n const originalRequestedStartDate = requestedDate.startDate;\n\n let shortDescription = this.description;\n let longDescription = this.longDescription;\n let name = this.name;\n\n // Loop through all overrides and check for any matching the booking dates\n rateOverrides.forEach((override) => {\n if (!originalRequestedStartDate) return;\n\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n\n const overlap =\n (!override.queryStartDate || queryStartDate.isSameOrBefore(originalRequestedStartDate, 'date')) &&\n (!override.queryEndDate || queryEndDate.isSameOrAfter(originalRequestedStartDate, 'date'));\n\n const stayDay = originalRequestedStartDate.format('dddd');\n\n if (overlap && override.enabledPerDay[stayDay as keyof RateLabelsByDay] === true) {\n name = override.name;\n shortDescription = override.shortDescription;\n longDescription = override.longDescription;\n }\n });\n\n return { name, shortDescription, longDescription };\n };\n\n public getAvailableRateOverrides = (): RateOverride[] => {\n if (!this.rateOverrides?.length) return [];\n\n const now = dayjs();\n //startDate/endDate/queryStartDate/queryEndDate must not empty\n const rateOverrides: RateOverride[] = this.rateOverrides.filter((override) => {\n // Check if the override can apply to this query in current time.\n // We don't require any of the filter fields, so if they are set we should check that they apply.\n if (override.startDate) {\n if (!dayjs(override.startDate).isSameOrBefore(now)) {\n return false;\n }\n\n if (override.endDate && !dayjs(override.endDate).isSameOrAfter(now)) {\n return false;\n }\n }\n\n return true;\n });\n return rateOverrides;\n };\n\n public hasRateVariesByDay = (requestedDate: RequestedDate): boolean => {\n // Validate startDate/endDate\n if (!requestedDate?.startDate || !requestedDate.endDate) return false;\n\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) false;\n\n const originalRequestedStartDate = dayjs(requestedDate.startDate);\n const originalRequestedEndDate = dayjs(requestedDate.endDate);\n\n // Loop through all overrides and check for any matching the booking dates\n return rateOverrides.some((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n\n if (override.startDate && overrideStartDate.isAfter(originalRequestedEndDate)) {\n return false;\n }\n\n if (override.endDate && overrideEndDate.isBefore(originalRequestedStartDate)) {\n return false;\n }\n\n if (override.queryStartDate && queryStartDate.isAfter(originalRequestedEndDate)) {\n return false;\n }\n if (override.queryEndDate && queryEndDate.isBefore(originalRequestedStartDate)) {\n return false;\n }\n\n return true;\n });\n };\n\n public getDisplayRates = (requestedDate: RequestedDate): DisplayRate[] => {\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) return [];\n\n const originalRequestedStartDate = dayjs(requestedDate.startDate);\n const originalRequestedEndDate = dayjs(requestedDate.endDate);\n\n const displayRates: DisplayRate[] = [\n {\n name: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n override: {\n name: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n enabledPerDay: {\n Monday: true,\n Tuesday: true,\n Wednesday: true,\n Thursday: true,\n Friday: true,\n Saturday: true,\n Sunday: true,\n },\n startDate: '',\n endDate: '',\n queryStartDate: '',\n queryEndDate: '',\n },\n },\n ];\n // Loop through all overrides and check for any matching the booking dates\n rateOverrides.forEach((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n //requestedStartDate & requestedEndDate must be in date range of override's startDate/endDate\n const requestedStartDate = originalRequestedStartDate.isBefore(overrideStartDate) ? overrideStartDate : originalRequestedStartDate;\n const requestedEndDate = originalRequestedEndDate.isAfter(overrideEndDate) ? overrideEndDate : originalRequestedEndDate;\n const overlap = this.datesOverlap(requestedStartDate, requestedEndDate, queryStartDate, queryEndDate);\n if (overlap) {\n if (requestedStartDate.isBefore(queryStartDate, 'date')) {\n if (queryEndDate.isBefore(requestedEndDate, 'date')) {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: queryStartDate,\n endDate: queryEndDate,\n });\n } else {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: queryStartDate,\n endDate: requestedEndDate,\n });\n }\n } else {\n if (queryEndDate.isBefore(requestedEndDate, 'date')) {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: requestedStartDate,\n endDate: queryEndDate,\n });\n } else {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: requestedStartDate,\n endDate: requestedEndDate,\n });\n }\n }\n }\n });\n\n return displayRates;\n };\n\n public displayRateToDayLabel = (displayRate: DisplayRate): string => {\n if (!displayRate.startDate || !displayRate.endDate) return '';\n\n const dayDayLabels: Record<string, string> = {};\n const startDayLabel = displayRate.startDate.format('MMM DD, YYYY');\n const endDayLabel = displayRate.endDate.format('MMM DD, YYYY');\n dayDayLabels[startDayLabel] = startDayLabel;\n dayDayLabels[endDayLabel] = endDayLabel;\n return `${Object.values(dayDayLabels).join(' - ')}`;\n };\n\n public displayRateToDayName = (displayRate: DisplayRate): string => {\n if (!displayRate.startDate || !displayRate.endDate) return '';\n\n const dayNames: Record<string, string> = {};\n const startDayName = displayRate.startDate.format('dddd');\n const endDayName = displayRate.endDate.format('dddd');\n dayNames[startDayName] = startDayName;\n dayNames[endDayName] = endDayName;\n return `${Object.values(dayNames).join(' - ')}`;\n };\n\n public getLabelsByDate = (requestedDate: RequestedDate): { label: string; alternateLabel: string; shortDescription?: string; longDescription?: string }[] => {\n const overrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!overrides.length) {\n // If overrides are null or empty, return an empty rateLabelByDay for the whole date range\n return this.getDefaultLabelsByDate(requestedDate);\n }\n\n const labelsByDate: Record<string, { label: string; alternateLabel: string; shortDescription?: string; longDescription?: string; date: string }> = {};\n let dayOneOverride: RateOverride | null = null;\n\n overrides.forEach((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const overrideQueryStartDate = dayjs(override.queryStartDate);\n const overrideQueryEndDate = dayjs(override.queryEndDate);\n\n const isApplicableForStayDate = () => {\n if (overrideStartDate && overrideStartDate.isAfter(stayDate)) {\n return false;\n }\n\n if (overrideEndDate && overrideEndDate.isBefore(stayDate)) {\n return false;\n }\n\n if (overrideQueryStartDate && overrideQueryStartDate.isAfter(stayDate)) {\n return false;\n }\n\n if (overrideQueryEndDate && overrideQueryEndDate.isBefore(stayDate)) {\n return false;\n }\n\n return true;\n };\n\n let stayDate = requestedDate.startDate.clone();\n while (stayDate.isSameOrBefore(requestedDate.endDate, 'date')) {\n const dayIndex = stayDate.format('YYYY-MM-DD');\n const dayLabel = stayDate.format('dddd, MMM DD, YYYY');\n const stayDay = stayDate.format('dddd');\n //stayDate must be in date range of override's startDate/endDate and queryStartDate/queryEndDate\n if (isApplicableForStayDate()) {\n if (override.enabledPerDay[stayDay as keyof RateLabelsByDay] === true) {\n // Keep setting the dayOneOverride until the first day of the stay is reached, this will tell us\n // what is the initial rate label for the stay\n if (stayDate.isSame(requestedDate.startDate, 'date')) {\n dayOneOverride = override;\n }\n\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n };\n }\n } else if (!labelsByDate[dayIndex]?.label) {\n // No rate label override\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: '',\n };\n }\n\n if (dayOneOverride === override) {\n // If the first day of the stay is an override, the user thinks all dates are the same, so we\n // need to remove the override from this day, and specify the default for the remaining empty days.\n\n if (labelsByDate[dayIndex]?.label === dayLabel && labelsByDate[dayIndex]?.alternateLabel === override.name) {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: '',\n shortDescription: '',\n longDescription: '',\n };\n } else if (labelsByDate[dayIndex]?.alternateLabel === '') {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n };\n }\n }\n\n // If label dates aren't populated, they're the originl rate labels.\n if (!labelsByDate[dayIndex]?.label) {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: dayOneOverride === override ? this.name : '',\n shortDescription: this.description,\n longDescription: this.longDescription,\n };\n }\n\n stayDate = stayDate.add(1, 'day');\n }\n });\n\n return Object.values(labelsByDate).sort((a, b) => {\n return a.date > b.date ? 1 : -1;\n });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RoomRate.js","sourceRoot":"/","sources":["src/models/Room/RoomRate.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { accumulateFees, feeMapToArray, HotelFee, ItemisedFee, mapSimpleFeesToItemisedFees } from '@/models/Fee';\nimport type { Room } from '@/models/Room/Room';\nimport RoomRateNight, { IRoomRateNight } from '@/models/Room/RoomRateNight';\nimport type RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport type { Serializable } from '@/models/Serializable';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\n\nexport enum RoomRatePriceInclusion {\n ExcludingFees = 'Fees Excluded',\n ExcludingTaxes = 'Taxes Excluded',\n ExcludingFeesAndTaxes = 'Excluding Fees and Taxes',\n IncludingFeesAndTaxes = 'Including Fees and Taxes',\n}\n\nexport interface IRoomRate {\n name: string;\n code: string;\n description: string;\n longDescription?: string;\n\n isMemberOnly?: boolean;\n guaranteeCode: string;\n cancelPolicyCode: string;\n nightRates: { [date: string]: IRoomRateNight };\n\n lowestPrice: number;\n promoCode: string;\n promoCodeName: string;\n\n mealsIncluded?: {\n breakfast: boolean;\n lunch: boolean;\n dinner: boolean;\n };\n rateOverrides?: RateOverride[];\n nightsToDiscount?: number;\n}\n\nexport type RateLabelsByDay = {\n Monday: boolean;\n Tuesday: boolean;\n Wednesday: boolean;\n Thursday: boolean;\n Friday: boolean;\n Saturday: boolean;\n Sunday: boolean;\n};\n\nexport type RateOverride = {\n name: string;\n shortDescription: string;\n longDescription: string;\n enabledPerDay: RateLabelsByDay;\n startDate: string;\n endDate: string;\n queryStartDate: string;\n queryEndDate: string;\n};\n\nexport type RateOverrideKeys = 'name' | 'shortDescription' | 'longDescription';\n\ninterface RequestedDate {\n startDate: Dayjs;\n endDate: Dayjs;\n}\n\ninterface DisplayRate {\n name: string;\n shortDescription: string;\n longDescription: string;\n startDate?: Dayjs;\n endDate?: Dayjs;\n override: RateOverride;\n}\n\nexport class RoomRate implements RoomRateSortable, Serializable<RoomRate, IRoomRate> {\n public name!: string;\n public code!: string;\n\n public description!: string;\n public longDescription!: string;\n\n public isMemberOnly!: boolean;\n\n public guaranteeCode!: string;\n\n public cancelPolicyCode!: string;\n\n public nightRates: { [date: string]: RoomRateNight };\n public lowestPrice!: number;\n public promoCode?: string;\n public promoCodeName?: string;\n public mealsIncluded?: {\n breakfast: boolean;\n lunch: boolean;\n dinner: boolean;\n } = {\n breakfast: false,\n lunch: false,\n dinner: false,\n };\n private nightRatesArray: RoomRateNight[];\n private room!: Room;\n public rateOverrides?: RateOverride[];\n public nightsToDiscount?: number;\n\n public constructor() {\n this.nightRates = {};\n this.nightRatesArray = [];\n }\n\n public static fromData(data: Partial<{ code: string }> | any) {\n const rate = new this();\n\n rate.applyData(data);\n\n if (StaticContextProvider.MemberOnlyRateCodes?.includes(data.code)) {\n rate.isMemberOnly = true;\n }\n\n return rate;\n }\n\n public applyData(data: any) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n }\n\n public setRoom(room: Room) {\n this.room = room;\n }\n\n public getRoom(): Room {\n return this.room;\n }\n\n public getTotalPrice = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total);\n });\n return total;\n };\n\n public getTotalPriceBeforeDiscount = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total) + Number(night.discount);\n });\n return total;\n };\n\n public getTotalDiscount = (): number => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.discount);\n });\n };\n\n public isStayXPayYRate = (): boolean => {\n return !!(this.nightsToDiscount && this.nightsToDiscount > 0);\n };\n\n public getAveragePrice = (getCost = false): number => {\n const total = this.getTotalPrice(getCost);\n\n return total / Object.keys(this.nightRates).length;\n };\n\n public getAveragePriceBeforeDiscount = (getCost = false) => {\n let total = 0;\n const nightsAsArray = Object.values(this.nightRates);\n nightsAsArray.forEach((night: RoomRateNight) => {\n total += Number(getCost ? night.cost : night.total) + Number(night.discount);\n });\n\n return total / nightsAsArray.length;\n };\n\n public getTotalFees = () => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.fee);\n });\n };\n\n public getItemisedFees = (hotelFees: HotelFee[]): ItemisedFee[] => {\n const feeMap = new Map<HotelFee, number>();\n\n this.getNightRateArray().forEach((night) => {\n if (night.fees) {\n const fees = mapSimpleFeesToItemisedFees(night.fees, hotelFees);\n accumulateFees(feeMap, fees);\n }\n });\n\n return feeMapToArray(feeMap);\n };\n\n public getTotalTaxes = () => {\n return this.nightRateTotal((night: RoomRateNight) => {\n return Number(night.tax);\n });\n };\n\n public getPriceType = () => {\n let hasFees = false;\n let hasTax = false;\n\n Object.values(this.nightRates).forEach((night) => {\n if (night.fee && night.fee !== '0') {\n hasFees = true;\n }\n\n if (night.tax && night.tax !== '0') {\n hasTax = true;\n }\n });\n\n if (hasFees && hasTax) {\n return RoomRatePriceInclusion.ExcludingFeesAndTaxes;\n } else if (hasFees) {\n return RoomRatePriceInclusion.ExcludingTaxes;\n } else if (hasTax) {\n return RoomRatePriceInclusion.ExcludingFees;\n } else {\n return RoomRatePriceInclusion.IncludingFeesAndTaxes;\n }\n };\n\n public getGuaranteePolicy = () => {\n return AvailabilityAPI.policyMappings.guarantee[this.guaranteeCode] ?? '';\n };\n\n public getCancellationPolicy = () => {\n return AvailabilityAPI.policyMappings.cancel[this.cancelPolicyCode] ?? '';\n };\n\n public getPriceSortValue = () => {\n return this.getAveragePrice();\n };\n\n /**\n * Not implemented\n */\n public getRecommendedSortValue() {\n return 0;\n }\n\n public serialize() {\n const serializedNightRates: any = {};\n Object.keys(this.nightRates).forEach((date) => {\n serializedNightRates[date] = this.nightRates[date].serialize();\n });\n\n const toSerialize: IRoomRate = {\n name: this.name,\n code: this.code,\n description: this.description,\n longDescription: this.longDescription,\n isMemberOnly: this.isMemberOnly,\n guaranteeCode: this.guaranteeCode,\n cancelPolicyCode: this.cancelPolicyCode,\n nightRates: serializedNightRates,\n lowestPrice: this.lowestPrice,\n promoCode: this.promoCode,\n promoCodeName: this.promoCodeName,\n mealsIncluded: this.mealsIncluded,\n rateOverrides: this.rateOverrides,\n nightsToDiscount: this.nightsToDiscount,\n } as IRoomRate;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoomRate) {\n const { name, code, description, longDescription, isMemberOnly, guaranteeCode, cancelPolicyCode, lowestPrice, promoCode, promoCodeName, mealsIncluded, nightsToDiscount } =\n data;\n\n const unSerializedNightRates: any = {};\n\n if (data.nightRates) {\n Object.keys(data.nightRates)?.forEach((date) => {\n const nightRate = new RoomRateNight();\n unSerializedNightRates[date] = nightRate.unSerialize(data.nightRates[date]);\n });\n }\n\n this.name = name;\n this.code = code;\n this.description = description;\n this.longDescription = longDescription as string;\n this.isMemberOnly = isMemberOnly as boolean;\n this.guaranteeCode = guaranteeCode;\n this.cancelPolicyCode = cancelPolicyCode;\n this.lowestPrice = lowestPrice;\n this.promoCode = promoCode;\n this.promoCodeName = promoCodeName;\n this.mealsIncluded = mealsIncluded;\n this.nightRates = unSerializedNightRates;\n this.nightRatesArray = [];\n this.rateOverrides = data.rateOverrides;\n this.nightsToDiscount = nightsToDiscount;\n\n return this;\n }\n\n private getNightRateArray = () => {\n if (!this.nightRatesArray.length) {\n this.nightRatesArray = Object.values(this.nightRates);\n }\n\n return this.nightRatesArray;\n };\n\n private reduceNightData = (reducer: (sum: number, rate: RoomRateNight) => number) => {\n return this.getNightRateArray().reduce<number>(reducer, 0) ?? 0;\n };\n\n private nightRateTotal = (value: (rate: RoomRateNight) => number) => {\n return this.reduceNightData((sum: number, redNight: RoomRateNight) => {\n const summingValue = value(redNight);\n\n return sum ? sum + summingValue : summingValue;\n });\n };\n\n public datesOverlap = (startDate1: Dayjs, endDate1: Dayjs, startDate2: Dayjs, endDate2: Dayjs): boolean => {\n const overlap1 = startDate1.isSameOrBefore(endDate2) && startDate2.isSameOrBefore(endDate1);\n const overlap2 = startDate1.isSameOrAfter(endDate2) && startDate2.isSameOrAfter(endDate1);\n return overlap1 || overlap2;\n };\n\n public getDefaultLabelsByDate = (requestedDate: RequestedDate) => {\n const days: { label: string; alternateLabel: string }[] = [];\n let currentDate = requestedDate.startDate.clone();\n while (currentDate.isSameOrBefore(requestedDate.endDate)) {\n days.push({\n label: currentDate.format('dddd, MMM DD, YYYY'),\n alternateLabel: '', // No rate label available\n });\n currentDate = currentDate.add(1, 'day');\n }\n return days;\n };\n\n public getPossiblyOverwrittenDetails = (requestedDate: RequestedDate) => {\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) return { name: this.name, shortDescription: this.description, longDescription: this.longDescription };\n\n const originalRequestedStartDate = requestedDate.startDate;\n\n let shortDescription = this.description;\n let longDescription = this.longDescription;\n let name = this.name;\n\n // Loop through all overrides and check for any matching the booking dates\n rateOverrides.forEach((override) => {\n if (!originalRequestedStartDate) return;\n\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n\n const overlap =\n (!override.queryStartDate || queryStartDate.isSameOrBefore(originalRequestedStartDate, 'date')) &&\n (!override.queryEndDate || queryEndDate.isSameOrAfter(originalRequestedStartDate, 'date'));\n\n const stayDay = originalRequestedStartDate.format('dddd');\n\n if (overlap && override.enabledPerDay[stayDay as keyof RateLabelsByDay] === true) {\n name = override.name;\n shortDescription = override.shortDescription;\n longDescription = override.longDescription;\n }\n });\n\n return { name, shortDescription, longDescription };\n };\n\n public getAvailableRateOverrides = (): RateOverride[] => {\n if (!this.rateOverrides?.length) return [];\n\n const now = dayjs();\n //startDate/endDate/queryStartDate/queryEndDate must not empty\n const rateOverrides: RateOverride[] = this.rateOverrides.filter((override) => {\n // Check if the override can apply to this query in current time.\n // We don't require any of the filter fields, so if they are set we should check that they apply.\n if (override.startDate) {\n if (!dayjs(override.startDate).isSameOrBefore(now)) {\n return false;\n }\n\n if (override.endDate && !dayjs(override.endDate).isSameOrAfter(now)) {\n return false;\n }\n }\n\n return true;\n });\n return rateOverrides;\n };\n\n public hasRateVariesByDay = (requestedDate: RequestedDate): boolean => {\n // Validate startDate/endDate\n if (!requestedDate?.startDate || !requestedDate.endDate) return false;\n\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) false;\n\n const originalRequestedStartDate = dayjs(requestedDate.startDate);\n const originalRequestedEndDate = dayjs(requestedDate.endDate);\n\n // Loop through all overrides and check for any matching the booking dates\n return rateOverrides.some((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n\n if (override.startDate && overrideStartDate.isAfter(originalRequestedEndDate)) {\n return false;\n }\n\n if (override.endDate && overrideEndDate.isBefore(originalRequestedStartDate)) {\n return false;\n }\n\n if (override.queryStartDate && queryStartDate.isAfter(originalRequestedEndDate)) {\n return false;\n }\n if (override.queryEndDate && queryEndDate.isBefore(originalRequestedStartDate)) {\n return false;\n }\n\n return true;\n });\n };\n\n public getDisplayRates = (requestedDate: RequestedDate): DisplayRate[] => {\n const rateOverrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!rateOverrides.length) return [];\n\n const originalRequestedStartDate = dayjs(requestedDate.startDate);\n const originalRequestedEndDate = dayjs(requestedDate.endDate);\n\n const displayRates: DisplayRate[] = [\n {\n name: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n override: {\n name: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n enabledPerDay: {\n Monday: true,\n Tuesday: true,\n Wednesday: true,\n Thursday: true,\n Friday: true,\n Saturday: true,\n Sunday: true,\n },\n startDate: '',\n endDate: '',\n queryStartDate: '',\n queryEndDate: '',\n },\n },\n ];\n // Loop through all overrides and check for any matching the booking dates\n rateOverrides.forEach((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const queryStartDate = dayjs(override.queryStartDate);\n const queryEndDate = dayjs(override.queryEndDate);\n //requestedStartDate & requestedEndDate must be in date range of override's startDate/endDate\n const requestedStartDate = originalRequestedStartDate.isBefore(overrideStartDate) ? overrideStartDate : originalRequestedStartDate;\n const requestedEndDate = originalRequestedEndDate.isAfter(overrideEndDate) ? overrideEndDate : originalRequestedEndDate;\n const overlap = this.datesOverlap(requestedStartDate, requestedEndDate, queryStartDate, queryEndDate);\n if (overlap) {\n if (requestedStartDate.isBefore(queryStartDate, 'date')) {\n if (queryEndDate.isBefore(requestedEndDate, 'date')) {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: queryStartDate,\n endDate: queryEndDate,\n });\n } else {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: queryStartDate,\n endDate: requestedEndDate,\n });\n }\n } else {\n if (queryEndDate.isBefore(requestedEndDate, 'date')) {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: requestedStartDate,\n endDate: queryEndDate,\n });\n } else {\n displayRates.push({\n override: override,\n name: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n startDate: requestedStartDate,\n endDate: requestedEndDate,\n });\n }\n }\n }\n });\n\n return displayRates;\n };\n\n public displayRateToDayLabel = (displayRate: DisplayRate): string => {\n if (!displayRate.startDate || !displayRate.endDate) return '';\n\n const dayDayLabels: Record<string, string> = {};\n const startDayLabel = displayRate.startDate.format('MMM DD, YYYY');\n const endDayLabel = displayRate.endDate.format('MMM DD, YYYY');\n dayDayLabels[startDayLabel] = startDayLabel;\n dayDayLabels[endDayLabel] = endDayLabel;\n return `${Object.values(dayDayLabels).join(' - ')}`;\n };\n\n public displayRateToDayName = (displayRate: DisplayRate): string => {\n if (!displayRate.startDate || !displayRate.endDate) return '';\n\n const dayNames: Record<string, string> = {};\n const startDayName = displayRate.startDate.format('dddd');\n const endDayName = displayRate.endDate.format('dddd');\n dayNames[startDayName] = startDayName;\n dayNames[endDayName] = endDayName;\n return `${Object.values(dayNames).join(' - ')}`;\n };\n\n public getLabelsByDate = (requestedDate: RequestedDate): { label: string; alternateLabel: string; shortDescription?: string; longDescription?: string }[] => {\n const overrides: RateOverride[] = this.getAvailableRateOverrides();\n if (!overrides.length) {\n // If overrides are null or empty, return an empty rateLabelByDay for the whole date range\n return this.getDefaultLabelsByDate(requestedDate);\n }\n\n const labelsByDate: Record<string, { label: string; alternateLabel: string; shortDescription?: string; longDescription?: string; date: string }> = {};\n let dayOneOverride: RateOverride | null = null;\n\n overrides.forEach((override) => {\n const overrideStartDate = dayjs(override.startDate);\n const overrideEndDate = dayjs(override.endDate);\n const overrideQueryStartDate = dayjs(override.queryStartDate);\n const overrideQueryEndDate = dayjs(override.queryEndDate);\n\n const isApplicableForStayDate = () => {\n if (overrideStartDate && overrideStartDate.isAfter(stayDate)) {\n return false;\n }\n\n if (overrideEndDate && overrideEndDate.isBefore(stayDate)) {\n return false;\n }\n\n if (overrideQueryStartDate && overrideQueryStartDate.isAfter(stayDate)) {\n return false;\n }\n\n if (overrideQueryEndDate && overrideQueryEndDate.isBefore(stayDate)) {\n return false;\n }\n\n return true;\n };\n\n let stayDate = requestedDate.startDate.clone();\n while (stayDate.isSameOrBefore(requestedDate.endDate, 'date')) {\n const dayIndex = stayDate.format('YYYY-MM-DD');\n const dayLabel = stayDate.format('dddd, MMM DD, YYYY');\n const stayDay = stayDate.format('dddd');\n //stayDate must be in date range of override's startDate/endDate and queryStartDate/queryEndDate\n if (isApplicableForStayDate()) {\n if (override.enabledPerDay[stayDay as keyof RateLabelsByDay] === true) {\n // Keep setting the dayOneOverride until the first day of the stay is reached, this will tell us\n // what is the initial rate label for the stay\n if (stayDate.isSame(requestedDate.startDate, 'date')) {\n dayOneOverride = override;\n }\n\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: override.name,\n shortDescription: override.shortDescription,\n longDescription: override.longDescription,\n };\n }\n } else if (!labelsByDate[dayIndex]?.label) {\n // No rate label override\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: '',\n };\n }\n\n if (dayOneOverride === override) {\n // If the first day of the stay is an override, the user thinks all dates are the same, so we\n // need to remove the override from this day, and specify the default for the remaining empty days.\n\n if (labelsByDate[dayIndex]?.label === dayLabel && labelsByDate[dayIndex]?.alternateLabel === override.name) {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: '',\n shortDescription: '',\n longDescription: '',\n };\n } else if (labelsByDate[dayIndex]?.alternateLabel === '') {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: this.name,\n shortDescription: this.description,\n longDescription: this.longDescription,\n };\n }\n }\n\n // If label dates aren't populated, they're the originl rate labels.\n if (!labelsByDate[dayIndex]?.label) {\n labelsByDate[dayIndex] = {\n label: dayLabel,\n date: dayIndex,\n alternateLabel: dayOneOverride === override ? this.name : '',\n shortDescription: this.description,\n longDescription: this.longDescription,\n };\n }\n\n stayDate = stayDate.add(1, 'day');\n }\n });\n\n return Object.values(labelsByDate).sort((a, b) => {\n return a.date > b.date ? 1 : -1;\n });\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomstaySession.js","sourceRoot":"/","sources":["src/models/RoomstaySession.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"RoomstaySession.js","sourceRoot":"/","sources":["src/models/RoomstaySession.ts"],"names":[],"mappings":";;;AAmEa,QAAA,sBAAsB,GAAG,YAAY,CAAC","sourcesContent":["import { SignInUser } from '@frontend/contexts';\nimport { IBookingPayment } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport type BasketRow from '@/models/BasketRow';\nimport type { IRoom } from '@/models/Room/Room';\nimport type { IRoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\n\nimport ReservationsDTO from './Api/ReservationsDTO';\n\n/**\n * Booking engine state object, that is stored, can be loaded and unloaded\n */\nexport type RoomstaySession = {\n id: number;\n step: string;\n startDate: dayjs.Dayjs | null;\n endDate: dayjs.Dayjs | null;\n hotelID: number | string;\n source: string;\n user?: SignInUser;\n memberId?: string;\n pencilId?: string;\n\n basketRows: BasketRow[];\n\n reservationRequest?: {\n userProfiles: UserProfile[];\n payment: IBookingPayment;\n comments: string;\n };\n reservation?: ReservationsDTO;\n};\n\nexport type SerializedRoomstaySession = {\n id: number;\n step: string;\n startDate: string;\n endDate: string;\n hotelID: number | string;\n source: string;\n user?: string;\n memberId?: string;\n\n basketRows: SerializedRoomstaySessionBasketRow[];\n\n reservation?: ReservationsDTO;\n reservationRequest?: RoomstaySession['reservationRequest'];\n};\n\nexport type SerializedRoomstaySessionBasketRow = {\n uniqId: string;\n startDate: string;\n endDate: string;\n\n adults: number;\n children: number;\n infants: number;\n\n promoCode: string;\n promoCodeStatus: string;\n\n room: IRoom;\n rate: IRoomRate;\n};\n\nexport const SERIALIZED_DATE_FORMAT = 'YYYY/MM/DD';\n"]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountHomePage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountHomePage: () => JSX.Element;
|
|
@@ -2,5 +2,5 @@ import React from 'react';
|
|
|
2
2
|
type AccountOutletProps = {
|
|
3
3
|
children: React.ReactNode | React.ReactNode[];
|
|
4
4
|
};
|
|
5
|
-
export declare const AccountOutlet: (props: AccountOutletProps) =>
|
|
5
|
+
export declare const AccountOutlet: (props: AccountOutletProps) => JSX.Element;
|
|
6
6
|
export {};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountRouter: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountRouter: () => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountChangePasswordPage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountChangePasswordPage: () => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountDetailsCardsPage: (ref: any) => React.JSX.Element;
|
|
1
|
+
export declare const AccountDetailsCardsPage: (ref: any) => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountDetailsProfilePage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountDetailsProfilePage: () => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountHelpPage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountHelpPage: () => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountReservationSinglePage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountReservationSinglePage: () => JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const AccountReservationPage: () => React.JSX.Element;
|
|
1
|
+
export declare const AccountReservationPage: () => JSX.Element;
|