@roomstay/frontend 2.6.57 → 2.6.58
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/493.bundle.js +1 -1
- package/dist/537.bundle.js +1 -0
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.js +8 -6
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.js +6 -2
- package/dist/src/components/generic/Event/EventCard.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +19 -4
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +1 -0
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +2 -2
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +3 -2
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +10 -10
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
- package/dist/src/components/generic/date/DatePicker.js +7 -3
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +13 -3
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +5 -2
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/reservation/ReservationList.js +1 -1
- package/dist/src/components/reservation/ReservationList.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentInformation.js +4 -1
- package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +7 -4
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +9 -7
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/DatePickerContext.d.ts +1 -0
- package/dist/src/contexts/DatePickerContext.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +3 -0
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +3 -3
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/handlers/payment/PaymentHandler.d.ts +1 -0
- package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
- package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +13 -35
- package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +3 -6
- package/dist/src/models/BasketRow.js +11 -15
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +1 -2
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/models/Room/Room.d.ts +7 -0
- package/dist/src/models/Room/Room.js +13 -0
- package/dist/src/models/Room/Room.js.map +1 -1
- package/dist/src/models/Room/RoomRate.js +3 -0
- package/dist/src/models/Room/RoomRate.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +12 -8
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.d.ts +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +20 -5
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/stories/RadioButtonGroup.stories.d.ts +1 -1
- package/dist/src/util/Analytics/GoogleAnalytics4.js +27 -12
- package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
- package/dist/src/util/Analytics/UniversalAnalytics.js +3 -3
- package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
- package/dist/src/util/DataLayer.d.ts +5 -1
- package/dist/src/util/DataLayer.js +9 -2
- package/dist/src/util/DataLayer.js.map +1 -1
- package/dist/src/util/EventsHelper.d.ts +4 -1
- package/dist/src/util/EventsHelper.js +15 -4
- package/dist/src/util/EventsHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/586.bundle.js +0 -1
- package/dist/850.bundle.js +0 -1
|
@@ -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 { 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\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 /** @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\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 currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\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\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"]}
|
|
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 { 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\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 /** @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}\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 currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\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\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"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EBookingPaymentMethod } from '@roomstay/core';
|
|
2
1
|
import BasketRowDifferences from './BasketRowDifferences';
|
|
3
2
|
export declare enum EUserProfileFormKey {
|
|
4
3
|
Title = "Title",
|
|
@@ -30,7 +29,7 @@ export interface ConfirmationFormValues {
|
|
|
30
29
|
IATANumber?: string;
|
|
31
30
|
userProfiles: TUserProfileFormValues[];
|
|
32
31
|
copyCheckBox?: boolean;
|
|
33
|
-
paymentMethod:
|
|
32
|
+
paymentMethod: string;
|
|
34
33
|
marketingOptIn: boolean;
|
|
35
34
|
privacyPolicy: boolean;
|
|
36
35
|
comments?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Confirmation.js","sourceRoot":"/","sources":["src/models/Confirmation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Confirmation.js","sourceRoot":"/","sources":["src/models/Confirmation.ts"],"names":[],"mappings":";;;AAEA,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC3B,sCAAe,CAAA;IACf,4CAAqB,CAAA;IACrB,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,oCAAa,CAAA;IACb,4CAAqB,CAAA;IACrB,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,kDAA2B,CAAA;AAC/B,CAAC,EAbW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAa9B;AAED,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACjC,oDAAuB,CAAA;AAC3B,CAAC,EAFW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAEpC","sourcesContent":["import BasketRowDifferences from './BasketRowDifferences';\n\nexport enum EUserProfileFormKey {\n Title = 'Title',\n Forename = 'Forename',\n Surname = 'Surname',\n Email = 'Email',\n Phone = 'Phone',\n Address = 'Address',\n City = 'City',\n PostCode = 'PostCode',\n State = 'State',\n Country = 'Country',\n CountryId = 'CountryId',\n CountryCode = 'CountryCode',\n}\n\nexport enum EUserRequiredInputFormKey {\n AuxInputs = 'AuxInputs',\n}\n\nexport type TUserProfileFormValues = {\n [userProfileKey in EUserProfileFormKey]: string;\n} & { AuxInputs?: { [key: string]: string | number } } & {\n CaptureChildAge?: string[];\n};\n\nexport interface ConfirmationFormValues {\n IATANumber?: string;\n userProfiles: TUserProfileFormValues[];\n copyCheckBox?: boolean;\n paymentMethod: string; // this is the name of the handler, not an EBookingPaymentMethod!\n marketingOptIn: boolean;\n privacyPolicy: boolean;\n\n comments?: string;\n}\n\nexport interface IBookValidationResult {\n differences: BasketRowDifferences[];\n warnings: string[];\n}\n"]}
|
|
@@ -44,6 +44,13 @@ export declare class Room implements RoomRateSortable, Serializable<Room, IRoom>
|
|
|
44
44
|
applyData(data: Partial<IRoom>): void;
|
|
45
45
|
getLowestPriceType: (raw?: boolean) => RoomRatePriceInclusion;
|
|
46
46
|
getLowestPrice(raw?: boolean, rawPrice?: boolean): number;
|
|
47
|
+
/**
|
|
48
|
+
* Function for getting the lowest total price of the room from all the possible rates.
|
|
49
|
+
* @param includeAllRates If set to true will include all rates, otherwise will only include filtered rates
|
|
50
|
+
* @param getCost If set to true will return the cost of the rate, otherwise will return the average price see {@link RoomRate.getTotalPrice}
|
|
51
|
+
* @returns
|
|
52
|
+
*/
|
|
53
|
+
getLowestTotalPrice(includeAllRates?: boolean, getCost?: boolean): number;
|
|
47
54
|
getHighestPrice(raw?: boolean): number;
|
|
48
55
|
addRate(rate: RoomRate): void;
|
|
49
56
|
getImages(): string[];
|
|
@@ -52,6 +52,19 @@ class Room {
|
|
|
52
52
|
return sum < avrg && sum ? sum : avrg;
|
|
53
53
|
}, 0)) !== null && _b !== void 0 ? _b : 0);
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Function for getting the lowest total price of the room from all the possible rates.
|
|
57
|
+
* @param includeAllRates If set to true will include all rates, otherwise will only include filtered rates
|
|
58
|
+
* @param getCost If set to true will return the cost of the rate, otherwise will return the average price see {@link RoomRate.getTotalPrice}
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
getLowestTotalPrice(includeAllRates = false, getCost = false) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
return ((_b = (_a = (includeAllRates ? this.rates : this.filteredRates)) === null || _a === void 0 ? void 0 : _a.reduce((sum, rate) => {
|
|
64
|
+
const avrg = rate.getTotalPrice(getCost);
|
|
65
|
+
return sum < avrg && sum ? sum : avrg;
|
|
66
|
+
}, 0)) !== null && _b !== void 0 ? _b : 0);
|
|
67
|
+
}
|
|
55
68
|
getHighestPrice(raw = false) {
|
|
56
69
|
var _a, _b;
|
|
57
70
|
return ((_b = (_a = (raw ? this.rates : this.filteredRates)) === null || _a === void 0 ? void 0 : _a.reduce((sum, rate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0)) !== null && _b !== void 0 ? _b : 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":";;;AAEA,qDAAqF;AAwBrF,MAAa,IAAI;IAmBb,YAAmB,KAAsB;QARlC,oBAAe,GAA4C,EAAE,CAAC;QAoD9D,uBAAkB,GAAG,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE;;YACxC,OAAO,CACH,MAAA,MAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAgB;iBAClD,MAAM,CAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACnC,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,CAAC,EAAE,IAAI,CAAC,0CACN,YAAY,EAAE,mCAAI,iCAAsB,CAAC,qBAAqB,CACvE,CAAC;QACN,CAAC,CAAC;QAnDE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACzB;IACL,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAS;QAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;SAChC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,mBAAmB,CAAC,IAAI,GAAG,IAAI;;QAClC,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEtC,IAAI,IAAI,EAAE;YACN,SAAS,GAAG,CAAC,MAAA,IAAI,CAAC,gBAAgB,0CAAE,MAAiB,IAAG,EAAE,CAAC,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACnI;QAED,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,kBAAkB;;QACrB,OAAO,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEM,SAAS,CAAC,IAAoB;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;YAC9B,IAAY,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAYM,cAAc,CAAC,GAAG,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;;QAC/C,OAAO,CACH,MAAA,MAAA,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,MAAM,CAAS,CAAC,GAAW,EAAE,IAAc,EAAE,EAAE;YACpF,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC,EAAE,CAAC,CAAC,mCAAI,CAAC,CACb,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,GAAG,GAAG,KAAK;;QAC9B,OAAO,CACH,MAAA,MAAA,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,MAAM,CAAS,CAAC,GAAW,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,mCAAI,CAAC,CACzK,CAAC;IACN,CAAC;IAEM,OAAO,CAAC,IAAc;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,SAAS;QACZ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,gBAAgB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,QAAQ;QACX,OAAQ,IAAI,CAAC,aAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpD,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,OAAO,CAAC,IAAY;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;gBAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3B;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAEM,uBAAuB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,SAAS;QACZ,MAAM,WAAW,GAAU;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK;SACX,CAAC;QAEX,OAAO,WAAW,CAAC;IACvB,CAAC;IAEM,WAAW,CAAC,IAAW;;QAC1B,MAAM,QAAQ,GAAe,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;YAC5D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAErC,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAEtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAA6D;;QAI5G,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACjB,OAAO;gBACH,SAAS,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,EAAE;aAChC,CAAC;SACL;QACD,MAAM,YAAY,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAc,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,0CAAE,MAAM,EAAC,CAAC,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QACjF,IAAI,gBAAgB,EAAE;YAClB,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;SACrD;QACD,MAAM,iBAAiB,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,iBAAiB,EAAC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,iBAAiB,CAAC;QACrH,OAAO;YACH,iBAAiB,EAAE,iBAAiB;YACpC,SAAS,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE;SAC7B,CAAC;IACN,CAAC;CACJ;AAhMD,oBAgMC","sourcesContent":["import { ConfigHotel, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport { IRoomRate, RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport { Serializable } from '@/models/Serializable';\n\nexport interface IRoom {\n id: number;\n\n code: string;\n name: string;\n longDescription: string;\n shortDescription: string;\n\n occupancy: number;\n\n images: string[];\n rates: IRoomRate[];\n roomGroupId?: string;\n auxiliaryValues: { [key: string]: (string | number)[] };\n order: number;\n\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n}\n\nexport class Room implements RoomRateSortable, Serializable<Room, IRoom> {\n public id?: number;\n public code?: string;\n public name?: string;\n public longDescription?: string;\n public shortDescription?: string;\n\n public occupancy?: number;\n\n public images: string[];\n public roomGroupId?: string;\n public auxiliaryValues?: { [key: string]: (string | number)[] } = {};\n public filteredRates?: RoomRate[];\n private rates: RoomRate[];\n public order?: number;\n\n public prePerkDisclaimer?: string;\n public perks?: ConfigHotel['perks'];\n\n public constructor(props?: Partial<IRoom>) {\n this.rates = [];\n this.images = [];\n this.auxiliaryValues = {};\n\n if (props) {\n this.applyData(props);\n }\n }\n\n public static fromData(data: any) {\n const room = new this();\n\n if (!data.images && data.imageUrls) {\n data.images = data.imageUrls;\n }\n\n room.applyData(data);\n\n return room;\n }\n\n public getShortDescription(trim = true) {\n let shortDesc = this.shortDescription;\n\n if (trim) {\n shortDesc = (this.shortDescription?.length as number) > 97 ? this.shortDescription?.substr(0, 97) + '…' : this.shortDescription;\n }\n\n return shortDesc?.replace(/(<br>\\s*)+$/, '');\n }\n\n public getLongDescription() {\n return this.longDescription?.replace(/(<br>\\s*)+$/, '');\n }\n\n public applyData(data: Partial<IRoom>) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n\n this.filteredRates = this.rates;\n }\n\n public getLowestPriceType = (raw = false) => {\n return (\n ((raw ? this.rates : this.filteredRates) as RoomRate[])\n .reduce<RoomRate | null>((sum, rate) => {\n return sum && sum.getAveragePrice() < rate.getAveragePrice() ? sum : rate;\n }, null)\n ?.getPriceType() ?? RoomRatePriceInclusion.IncludingFeesAndTaxes\n );\n };\n\n public getLowestPrice(raw = false, rawPrice = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getAveragePrice(rawPrice);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n public getHighestPrice(raw = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0) ?? 0\n );\n }\n\n public addRate(rate: RoomRate) {\n rate.setRoom(this);\n this.rates.push(rate);\n }\n\n public getImages(): string[] {\n if (this.images && this.images.length) {\n return this.images;\n }\n\n return [];\n }\n\n public getOriginalRates(): RoomRate[] {\n return this.rates;\n }\n\n public getRates(): RoomRate[] {\n return (this.filteredRates as RoomRate[]).sort((a, b) => {\n return a.isMemberOnly ? -1 : b.isMemberOnly ? 1 : 0;\n });\n }\n\n public getRate(code: string): RoomRate | null {\n for (const rate in this.rates) {\n if (code === this.rates[rate].code) {\n return this.rates[rate];\n }\n }\n\n return null;\n }\n\n public getPriceSortValue() {\n return this.getLowestPrice();\n }\n\n public getRecommendedSortValue() {\n return this.order;\n }\n\n public serialize() {\n const toSerialize: IRoom = {\n id: this.id,\n code: this.code,\n images: this.images,\n longDescription: this.longDescription,\n name: this.name,\n occupancy: this.occupancy,\n rates: this.rates.map((rate) => rate.serialize()),\n shortDescription: this.shortDescription,\n roomGroupId: this.roomGroupId,\n auxiliaryValues: this.auxiliaryValues,\n order: this.order,\n } as IRoom;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoom) {\n const newRates: RoomRate[] = data.rates?.map((serializedRate) => {\n const roomRate = new RoomRate();\n roomRate.unSerialize(serializedRate);\n\n return roomRate;\n });\n\n this.code = data.code;\n this.id = data.id;\n this.images = data.images;\n this.longDescription = data.longDescription;\n this.name = data.name;\n this.occupancy = data.occupancy;\n this.shortDescription = data.shortDescription;\n this.filteredRates = newRates;\n this.rates = newRates;\n\n this.roomGroupId = data.roomGroupId;\n this.auxiliaryValues = data.auxiliaryValues;\n this.order = data.order;\n\n return this;\n }\n\n public getRoomPerks({ hotel, room, perksLimitNumber }: { hotel?: Hotel; room?: Room; perksLimitNumber?: number }): {\n prePerkDisclaimer?: string;\n roomPerks: HotelPerk[];\n } {\n if (!room || !hotel) {\n return {\n roomPerks: hotel?.perks ?? [],\n };\n }\n const roomOverride = hotel?.overwrites?.[room?.code as string];\n let roomPerks = roomOverride?.perks?.length ? roomOverride?.perks : hotel?.perks;\n if (perksLimitNumber) {\n roomPerks = roomPerks?.slice(0, perksLimitNumber);\n }\n const prePerkDisclaimer = roomOverride?.prePerkDisclaimer ? roomOverride.prePerkDisclaimer : room?.prePerkDisclaimer;\n return {\n prePerkDisclaimer: prePerkDisclaimer,\n roomPerks: roomPerks ?? [],\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigHotel, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport { IRoomRate, RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport { Serializable } from '@/models/Serializable';\n\nexport interface IRoom {\n id: number;\n\n code: string;\n name: string;\n longDescription: string;\n shortDescription: string;\n\n occupancy: number;\n\n images: string[];\n rates: IRoomRate[];\n roomGroupId?: string;\n auxiliaryValues: { [key: string]: (string | number)[] };\n order: number;\n\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n}\n\nexport class Room implements RoomRateSortable, Serializable<Room, IRoom> {\n public id?: number;\n public code?: string;\n public name?: string;\n public longDescription?: string;\n public shortDescription?: string;\n\n public occupancy?: number;\n\n public images: string[];\n public roomGroupId?: string;\n public auxiliaryValues?: { [key: string]: (string | number)[] } = {};\n public filteredRates?: RoomRate[];\n private rates: RoomRate[];\n public order?: number;\n\n public prePerkDisclaimer?: string;\n public perks?: ConfigHotel['perks'];\n\n public constructor(props?: Partial<IRoom>) {\n this.rates = [];\n this.images = [];\n this.auxiliaryValues = {};\n\n if (props) {\n this.applyData(props);\n }\n }\n\n public static fromData(data: any) {\n const room = new this();\n\n if (!data.images && data.imageUrls) {\n data.images = data.imageUrls;\n }\n\n room.applyData(data);\n\n return room;\n }\n\n public getShortDescription(trim = true) {\n let shortDesc = this.shortDescription;\n\n if (trim) {\n shortDesc = (this.shortDescription?.length as number) > 97 ? this.shortDescription?.substr(0, 97) + '…' : this.shortDescription;\n }\n\n return shortDesc?.replace(/(<br>\\s*)+$/, '');\n }\n\n public getLongDescription() {\n return this.longDescription?.replace(/(<br>\\s*)+$/, '');\n }\n\n public applyData(data: Partial<IRoom>) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n\n this.filteredRates = this.rates;\n }\n\n public getLowestPriceType = (raw = false) => {\n return (\n ((raw ? this.rates : this.filteredRates) as RoomRate[])\n .reduce<RoomRate | null>((sum, rate) => {\n return sum && sum.getAveragePrice() < rate.getAveragePrice() ? sum : rate;\n }, null)\n ?.getPriceType() ?? RoomRatePriceInclusion.IncludingFeesAndTaxes\n );\n };\n\n public getLowestPrice(raw = false, rawPrice = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getAveragePrice(rawPrice);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n /**\n * Function for getting the lowest total price of the room from all the possible rates.\n * @param includeAllRates If set to true will include all rates, otherwise will only include filtered rates\n * @param getCost If set to true will return the cost of the rate, otherwise will return the average price see {@link RoomRate.getTotalPrice}\n * @returns\n */\n public getLowestTotalPrice(includeAllRates = false, getCost = false) {\n return (\n (includeAllRates ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getTotalPrice(getCost);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n public getHighestPrice(raw = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0) ?? 0\n );\n }\n\n public addRate(rate: RoomRate) {\n rate.setRoom(this);\n this.rates.push(rate);\n }\n\n public getImages(): string[] {\n if (this.images && this.images.length) {\n return this.images;\n }\n\n return [];\n }\n\n public getOriginalRates(): RoomRate[] {\n return this.rates;\n }\n\n public getRates(): RoomRate[] {\n return (this.filteredRates as RoomRate[]).sort((a, b) => {\n return a.isMemberOnly ? -1 : b.isMemberOnly ? 1 : 0;\n });\n }\n\n public getRate(code: string): RoomRate | null {\n for (const rate in this.rates) {\n if (code === this.rates[rate].code) {\n return this.rates[rate];\n }\n }\n\n return null;\n }\n\n public getPriceSortValue() {\n return this.getLowestPrice();\n }\n\n public getRecommendedSortValue() {\n return this.order;\n }\n\n public serialize() {\n const toSerialize: IRoom = {\n id: this.id,\n code: this.code,\n images: this.images,\n longDescription: this.longDescription,\n name: this.name,\n occupancy: this.occupancy,\n rates: this.rates.map((rate) => rate.serialize()),\n shortDescription: this.shortDescription,\n roomGroupId: this.roomGroupId,\n auxiliaryValues: this.auxiliaryValues,\n order: this.order,\n } as IRoom;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoom) {\n const newRates: RoomRate[] = data.rates?.map((serializedRate) => {\n const roomRate = new RoomRate();\n roomRate.unSerialize(serializedRate);\n\n return roomRate;\n });\n\n this.code = data.code;\n this.id = data.id;\n this.images = data.images;\n this.longDescription = data.longDescription;\n this.name = data.name;\n this.occupancy = data.occupancy;\n this.shortDescription = data.shortDescription;\n this.filteredRates = newRates;\n this.rates = newRates;\n\n this.roomGroupId = data.roomGroupId;\n this.auxiliaryValues = data.auxiliaryValues;\n this.order = data.order;\n\n return this;\n }\n\n public getRoomPerks({ hotel, room, perksLimitNumber }: { hotel?: Hotel; room?: Room; perksLimitNumber?: number }): {\n prePerkDisclaimer?: string;\n roomPerks: HotelPerk[];\n } {\n if (!room || !hotel) {\n return {\n roomPerks: hotel?.perks ?? [],\n };\n }\n const roomOverride = hotel?.overwrites?.[room?.code as string];\n let roomPerks = roomOverride?.perks?.length ? roomOverride?.perks : hotel?.perks;\n if (perksLimitNumber) {\n roomPerks = roomPerks?.slice(0, perksLimitNumber);\n }\n const prePerkDisclaimer = roomOverride?.prePerkDisclaimer ? roomOverride.prePerkDisclaimer : room?.prePerkDisclaimer;\n return {\n prePerkDisclaimer: prePerkDisclaimer,\n roomPerks: roomPerks ?? [],\n };\n }\n}\n"]}
|
|
@@ -189,6 +189,9 @@ class RoomRate {
|
|
|
189
189
|
return rateOverrides;
|
|
190
190
|
};
|
|
191
191
|
this.hasRateVariesByDay = (requestedDate) => {
|
|
192
|
+
// Validate startDate/endDate
|
|
193
|
+
if (!(requestedDate === null || requestedDate === void 0 ? void 0 : requestedDate.startDate) || !requestedDate.endDate)
|
|
194
|
+
return false;
|
|
192
195
|
const rateOverrides = this.getAvailableRateOverrides();
|
|
193
196
|
if (!rateOverrides.length)
|
|
194
197
|
false;
|
|
@@ -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 = () => {\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 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 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}\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 = () => {\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 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":"AccountReservationSinglePage.js","sourceRoot":"/","sources":["src/pages/account/Reservations/AccountReservationSinglePage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmJ;AACnJ,yCAAwG;AACxG,kDAA0B;AAC1B,+CAAkF;AAClF,iDAA+C;AAC/C,uDAAmD;AACnD,0DAAuD;AAEvD,kEAAmC;AACnC,6EAAqD;AACrD,8DAA2D;AAC3D,6EAAqD;AACrD,6EAAqD;AACrD,yDAA0D;AAC1D,sFAA8D;AAC9D,+EAAuD;AACvD,sFAAsF;AACtF,kEAAwE;AACxE,qFAA6D;AAC7D,kEAA2D;AAC3D,8EAA6E;AAC7E,+FAAuE;AACvE,mCAA0C;AAC1C,+DAAqD;AAErD,oGAA4E;AAC5E,wCAAoE;AACpE,mEAA2C;AAC3C,uEAA+C;AAE/C,oDAAiD;AAEjD,MAAM,kBAAkB,GAAG,CAAC,WAA+D,EAAE,EAAE;;IAC3F,MAAM,SAAS,GAA+B,EAAE,CAAC;IAEjD,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;QACjC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;KAC5E;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO,GAAG,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC,CAAC;AAUF,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAE,EAAE;IAClE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACnD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,MAAM,aAAa,GAAG,EAAE,CAAC;QAEzB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,aAAa,CAAC,IAAI,CAAC,oBAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,KAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;SACjH;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,GAAK,IAAI,CAAC,GAAG,EAAE;gBAC9B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CACZ,uCAAK,SAAS,EAAC,wDAAwD;QACnE,uCAAK,SAAS,EAAC,cAAc;YACzB,8BAAC,kBAAQ,IAAC,MAAM,QAAC,OAAO,EAAE,OAAO,IAC5B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CACT;QACN,8BAAC,kBAAQ,IAAC,MAAM,QAAC,OAAO,QAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,IAChE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CACvB,CACT,CACT,CAAC;IAEF,OAAO,CACH,8BAAC,qBAAW,IACR,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAChD,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,6BAAe,CAAC,UAAU,EAChC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,OAAO;QAEhB,uCAAK,SAAS,EAAC,OAAO;YAClB,8BAAC,cAAI,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAQ,CAE/C,CACI,CACjB,CAAC;AACN,CAAC,CAAC;AAOF,MAAM,qBAAqB,GAAG,CAAC,KAAgC,EAAE,EAAE;IAC/D,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,qBAAc,CAAC,SAAS,EAAE;gBAC1C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;iBAAM;gBACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;SACJ;QAED,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEhB,OAAO,CACH,8BAAC,WAAI,IAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAC1E;YACG,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,eAAQ,CAAC,MAAM,EAAE;YAC/D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE;SACnE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,OAAO,CACH,8BAAC,gBAAQ,IAAC,GAAG,EAAE,KAAK;oBAChB,8BAAC,cAAI,IAAC,SAAS,EAAC,qBAAqB,EAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAC5D,IAAI,CAAC,KAAK,CACR;oBACN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;wBAC9B,OAAO,CACH,8BAAC,gBAAQ,IAAC,GAAG,EAAE,QAAQ;4BACnB,8BAAC,cAAI,IAAC,SAAS,EAAC,cAAc,EAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCACtD,8BAAC,cAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI;;oCAAI,GAAG,CAAC,EAAE,CAAQ,CACpC,CACA,CACd,CAAC;oBACN,CAAC,CAAC;oBACF,yCAAM,CACC,CACd,CAAC;aACL;QACL,CAAC,CAAC;QACF,uCAAK,SAAS,EAAC,YAAY;YACvB,8BAAC,cAAI,IAAC,SAAS,EAAC,qBAAqB,EAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAC5D,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,uBAAuB,CAAC,SAAS,CAAC,CACzD;YACP,8BAAC,cAAI,IAAC,OAAO,EAAE,kBAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI;;gBAClD,OAAO,CAAC,WAAW,CAClB,CACL,CACH,CACV,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAExI,MAAM,4BAA4B,GAAG,GAAG,EAAE;;IAC7C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAEvC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,4BAAS,GAAE,CAAC;IACrC,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,IAAA,gBAAQ,EAA4D,IAAI,CAAC,CAAC;IAEtI,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,GAAS,CAAC;IAE1D,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAA,4BAAS,GAAqB,CAAC;IAE9C,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAiF,IAAA,eAAO,EAAC,GAAG,EAAE;QACtH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACxD;QAED,MAAM,WAAW,GAAuD,EAAE,CAAC;QAE3E,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;YACpB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtD,WAAW,CAAC,IAAI,iCAAM,SAAS,KAAE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAG,CAAC;aACtH;SACJ;QAED,OAAO,CAAC,OAAiC,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;YAC5B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,qBAAc,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAEvH,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnG,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,8DAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAI,CAAC;KAC7C;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,EAAE,CAAC;IAE1E,MAAM,aAAa,GAAG,CAAC,MAAyB,EAAE,IAAsD,EAAE,EAAE;QACxG,QAAQ,MAAM,EAAE;YACZ,KAAK,mCAAiB,CAAC,MAAM;gBACzB,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,MAAM;SACb;IACL,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,GAAG,EAAE;QAClC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,MAAM,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GACnB,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAK,GAAG,EAAE,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAE5K,OAAO,CACH,uCAAK,EAAE,EAAE,oBAAoB,OAAO,CAAC,WAAW,EAAE;QAC7C,CAAC,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,CAAA,IAAI,6CAAQ,qBAAqB,OAAO,CAAC,WAAW,KAAK,IAAA,qCAA6B,EAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAS;QACjJ,uCAAK,SAAS,EAAC,qEAAqE;YAChF,8BAAC,uBAAI,IAAC,EAAE,EAAE,6BAAa,CAAC,YAAY,CAAC,IAAI;gBACrC,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,SAAS,EAAE,IAAI,EAAC,OAAO,IAClD,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAC3C,CACR,CACL;QACN,uCAAK,SAAS,EAAC,wHAAwH;YACnI;gBACI,8BAAC,cAAI,IAAC,SAAS,EAAC,sBAAsB,IAAE,sBAAY,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAQ;gBAC3G,8BAAC,kBAAQ,IAAC,IAAI,EAAC,aAAa,EAAC,SAAS,EAAC,sBAAsB,IACxD,kBAAkB,CAAC,WAAW,CAAC,CACzB;gBACX,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,IACpB,YAAY,aAAZ,YAAY;oBAAZ,YAAY,CAAE,IAAI;;oBAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7F,CACL;YACN,uCAAK,SAAS,EAAC,wFAAwF;gBACnG,8BAAC,kBAAQ,IAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY,EAAC,MAAM,IAC3H,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B;gBACX,8BAAC,kBAAQ,IACL,IAAI,EAAE,QAAQ,EACd,WAAW,QACX,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,aAAK,CAAC,IAAI,EACrB,SAAS,EAAC,EAAE,EACZ,MAAM,EAAE,CAAC,QAAQ,EACjB,IAAI,EAAE,eAAQ,CAAC,KAAK,EACpB,YAAY,EAAC,MAAM,EACnB,OAAO,EAAE,cAAc,IAEtB,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B;gBACV,CAAC,YAAY,IAAI,CACd;oBACK,8BAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAC/B,8BAAC,kBAAQ,IAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,QAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,cAAc,IACvH,sBAAY,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAClF,CACd,CAAC,CAAC,CAAC,IAAI;oBACR,8BAAC,kBAAQ,IACL,MAAM,QACN,IAAI,EAAE,QAAQ,EACd,WAAW,QACX,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,aAAK,CAAC,KAAK,EACtB,MAAM,EAAE,CAAC,QAAQ,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,WAAW,CAAC,EACrD,QAAQ,EAAE,CAAC,cAAc,IAExB,sBAAY,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAClF,CACZ,CACN,CACC,CACJ;QAEN,wCAAM,SAAS,EAAC,cAAc;YAC1B,8BAAC,mBAAS,IAAC,YAAY,QAAC,SAAS,SAAG,CACjC;QAEP,8BAAC,mBAAS;YACN,uCAAK,SAAS,EAAC,0BAA0B;gBACrC,uCAAK,SAAS,EAAC,2CAA2C,IAAE,iBAAiB,CAAO,CAClF,CACE;QAEZ,uCAAK,SAAS,EAAC,mFAAmF;YAC9F,8BAAC,yBAAe,IACZ,OAAO,EAAE,CAAC,mCAAiB,CAAC,MAAM,EAAE,mCAAiB,CAAC,MAAM,EAAE,mCAAiB,CAAC,SAAS,CAAC,EAC1F,gBAAgB,EAAE,WAAW,EAC7B,aAAa,EAAE,aAAa,EAC5B,0BAA0B,SAC5B,CACA;QACN,8BAAC,mBAAS,IAAC,SAAS,EAAE,QAAQ,GAAI;QAClC,uCAAK,SAAS,EAAC,6BAA6B;YACxC,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,UACtB,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B;YACX,uCAAK,SAAS,EAAC,oCAAoC;gBAC/C,8BAAC,kBAAQ,IAAC,WAAW,QAAC,IAAI,EAAC,OAAO,EAAC,IAAI;oBACnC,8BAAC,kBAAQ,QAAE,IAAA,qCAA8B,EAAC,OAAO,CAAC,CAAY,CACvD;gBACX,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC5C,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAClC,CACL,CACJ;QAEN,uCAAK,SAAS,EAAC,gDAAgD;YAC3D,uCAAK,SAAS,EAAC,kCAAkC;gBAC7C,8BAAC,WAAI,IAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC5E,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,MAAM,IAAG,CAAA,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,0CAAE,OAAO,0CAAE,SAAS,IAAG,GAAG,IAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,0CAAE,OAAO,0CAAE,QAAQ,CAAA,CAAY;oBAC9H,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,0CAAE,OAAO,0CAAE,KAAK,CAAY;oBAC7E,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE;;wBAChD,wCAAM,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,aAAe,CAClE,CACR,CACL;YACN,uCAAK,SAAS,EAAC,kCAAkC;gBAC7C,8BAAC,WAAI,IAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC;oBACtE,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG;wBACvB,KAAK;wBACN,yCAAM;wBACL,KAAK;;wBAAG,UAAU;;wBAAI,OAAO,CACvB;oBACX,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAY,CAC7D,CACL;YACN,uCAAK,SAAS,EAAC,kCAAkC;gBAC7C,8BAAC,qBAAqB,IAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAI,CACnE,CACJ;QACN,uCAAK,SAAS,EAAC,2JAA2J;YACtK,uCAAK,SAAS,EAAC,WAAW;gBACtB,8BAAC,cAAI,IAAC,IAAI;;oBAAG,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAQ;gBACxD,uCAAK,SAAS,EAAC,oBAAoB;oBAC/B,uCAAK,SAAS,EAAC,aAAa;wBACxB,uCAAK,SAAS,EAAC,wEAAwE;4BACnF,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAU;gCACrD,yCAAM;gCACL,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,KAAK,CAAC;;gCAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CACvE;4BACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAU;gCACtD,yCAAM;gCACL,CAAC,CAAC,yBAAW,CAAC,WAAW,CAAC,MAAM,CAAC;;gCAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CACzE,CACL,CACJ,CACJ;gBACN,uCAAK,SAAS,EAAC,eAAe,IACzB,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CACnC,uCAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,mBAAmB;oBAC1C,uCAAK,SAAS,EAAC,eAAe;wBAC1B,8BAAC,cAAI,IAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;4BAClC;gCACK,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;gCAAG,KAAK,GAAG,CAAC,CAChC;;4BAER,SAAS,CAAC,QAAQ;;4BAAK,SAAS,CAAC,QAAQ,CACvC,CACL;oBACN,uCAAK,SAAS,EAAC,eAAe,IACzB,SAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC,CACxC;wBACI,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,QAAC,SAAS,EAAC,sBAAsB,IAC5D,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CACjC;wBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;4BACtB,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,8BAA8B,IAAI,EAAE,EAAE,GAAS,CAC/F,CACR,CACN,CAAC,CAAC,CAAC,IAAI,CACN;oBACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,QAAC,SAAS,EAAC,sBAAsB,IAC5D,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CACpC;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACtB,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,iCAAiC,IAAI,EAAE,EAAE,GAAS,CAClG,CACL,CACT,CAAC,CACA,CACJ,CACJ;QACN,8BAAC,sBAAsB,IACnB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,sBAA4E,EACnF,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAC,CAAC,sBAAsB,GACnC,CACA,CACT,CAAC;AACN,CAAC,CAAC;AA5PW,QAAA,4BAA4B,gCA4PvC","sourcesContent":["import { BookingEngineContext, CompanyContext, IRoomstayMemberBookingItemWithRefAndHotelDetails, RoomstayMemberContext } from '@frontend/contexts';\nimport { calculateTotalForMemberBooking, IBookingStatus, IRoomstayMemberBooking } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { Fragment, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { Card } from '@/components/generic/Card/Card/Card';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport IconText from '@/components/generic/IconText/IconText';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Pill, { PillType, PillVariant } from '@/components/generic/Pill';\nimport PrintOnly from '@/components/generic/print/PrintOnly';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ReservationAction } from '@/components/reservation/ReservationItem';\nimport ReservationList from '@/components/reservation/ReservationList';\nimport { useCurrentHotel } from '@/hooks';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\nconst getRoomNamesString = (itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[]) => {\n const roomNames: { [name: string]: number } = {};\n\n for (const itinerary of itineraries) {\n roomNames[itinerary.roomName] = (roomNames[itinerary.roomName] ?? 0) + 1;\n }\n\n return Object.keys(roomNames)\n .map((name) => {\n const numOfRooms = roomNames[name];\n if (numOfRooms <= 1) return `${name}`;\n })\n .join(' + ');\n};\n\ntype CancelReservationModalProps = {\n items: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n\n visible: boolean;\n onClose: () => void;\n};\n\nconst CancelReservationModal = (props: CancelReservationModalProps) => {\n const { items, booking, visible, onClose } = props;\n const { fetchRoomstayMember } = useContext(RoomstayMemberContext);\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onCancelClick = () => {\n const cancellations = [];\n\n setIsLoading(true);\n for (const item of items) {\n cancellations.push(API.Reservation.cancelReservation(item.id, item.profile.email as string, booking.hotelId));\n }\n\n Promise.all(cancellations).then(() => {\n fetchRoomstayMember?.().then(() => {\n setIsLoading(false);\n onClose();\n });\n });\n };\n\n const footers = (\n <div className=\"d-flex u-pad align-items-center justify-content-center\">\n <div className=\"u-marg-right\">\n <BEButton isText onClick={onClose}>\n {t(Translation.Misc.Abort)}\n </BEButton>\n </div>\n <BEButton filled primary onClick={onCancelClick} isLoading={isLoading}>\n {t(Translation.Misc.YesImSure)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n title={t(Translation.Misc.CancellingReservation)}\n open={visible}\n size={SimpleModalSize.ExtraSmall}\n desktopFooter={footers}\n mobileFooter={footers}\n onClose={onClose}\n >\n <div className=\"u-pad\">\n <Text>{t(Translation.Misc.ThisWillCancel)}</Text>\n {/*TODO: Update wording to include all reservations*/}\n </div>\n </SimpleModal>\n );\n};\n\ntype CodeNumberInformationType = {\n itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n};\n\nconst CodeNumberInformation = (props: CodeNumberInformationType) => {\n const { itineraries, booking } = props;\n const { t } = useTranslation();\n\n const [cancelled, confirmed] = useMemo(() => {\n const cancelled = [];\n const confirmed = [];\n\n for (const item of itineraries) {\n if (item.status === IBookingStatus.Cancelled) {\n cancelled.push(item);\n } else {\n confirmed.push(item);\n }\n }\n\n return [cancelled, confirmed];\n }, itineraries);\n\n return (\n <Card className=\"w-100\" title={t(Translation.Reservation.CodeNumberInformation)}>\n {[\n { label: 'Cancelled', value: cancelled, type: PillType.Danger },\n { label: 'Confirmed', value: confirmed, type: PillType.Success },\n ].map((item, index) => {\n if (item.value.length > 0) {\n return (\n <Fragment key={index}>\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {item.label}\n </Text>\n {item.value.map((row, rowIndex) => {\n return (\n <Fragment key={rowIndex}>\n <Text className=\"u-marg-right\" inline type={TextType.Small}>\n <Pill type={item.type}>#{row.id}</Pill>\n </Text>\n </Fragment>\n );\n })}\n <br />\n </Fragment>\n );\n }\n })}\n <div className=\"u-marg-top\">\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {t(Translation.UserPortal.ReservationSingleScreen.Itinerary)}\n </Text>\n <Pill variant={PillVariant.Outlined} type={PillType.Grey}>\n #{booking.itineraryId}\n </Pill>\n </div>\n </Card>\n );\n};\n\nconst displayTime = (timeString: string) => dayjs().set('hours', +timeString.slice(0, 2)).set('minute', +timeString.slice(2)).format('h:mm A');\n\nexport const AccountReservationSinglePage = () => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const beContext = useContext(BookingEngineContext);\n const { getHotel } = useContext(CompanyContext);\n const ccx = useContext(CompanyContext);\n\n const { getItinerary } = useMember();\n const [showingCancellationFor, setShowingCancellationFor] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[] | null>(null);\n\n const [bookingHotel, setBookingHotel] = useState<Hotel>();\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const params = useParams<{ resId: string }>();\n\n const [booking, itineraries]: [IRoomstayMemberBooking, IRoomstayMemberBookingItemWithRefAndHotelDetails[]] = useMemo(() => {\n if (!params.resId) {\n throw new Error('Missing reservation ID parameter.');\n }\n\n const itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[] = [];\n\n const booking = getItinerary(params.resId);\n\n if (booking?.itinerary) {\n for (const itinerary of Object.values(booking.itinerary)) {\n itineraries.push({ ...itinerary, bookingId: booking.itineraryId, hotel: booking.hotel, hotelId: booking.hotelId });\n }\n }\n\n return [booking as IRoomstayMemberBooking, itineraries];\n }, [params, getItinerary]);\n\n useEffect(() => {\n if (booking && booking.hotelId) {\n getHotel(booking.hotelId).then((hotel) => {\n setBookingHotel(hotel);\n });\n }\n }, [booking, getHotel]);\n\n const allCancelled = useMemo(() => itineraries.every((row) => row.status === IBookingStatus.Cancelled), [itineraries]);\n\n const allCancellable = useMemo(() => itineraries.every((row) => row.isCancellable), [itineraries]);\n\n if (!booking) {\n return <>{t(Translation.Misc.Loading)}</>;\n }\n\n const { line1, line2, postalCode, country } = bookingHotel?.address ?? {};\n\n const onActionClick = (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => {\n switch (action) {\n case ReservationAction.Cancel:\n setShowingCancellationFor([item]);\n break;\n }\n };\n\n const onCloseCancellationModal = () => {\n setShowingCancellationFor(null);\n };\n\n const onPrintClicked = () => {\n window.print();\n };\n\n const hotelImageElement =\n hotel?.logo && typeof hotel.logo !== 'string' ? hotel.logo : <img src={typeof hotel?.logo === 'string' ? hotel.logo : ccx.logo} alt=\"Hotel Logo\" className=\"u-block\" />;\n\n return (\n <div id={`reservation-body-${booking.itineraryId}`}>\n {!!booking?.hotel?.colors && <style>{`#reservation-body-${booking.itineraryId} {${getAccentOverrideStyleContent(booking.hotel.colors)}}`}</style>}\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom--light u-print-none\">\n <Link to={AccountRoutes.Reservations.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourReservations)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-flex-align-stretch@m- u-flex u-flex-align-flex-end u-marg-bottom u-pad-top@m u-flex-direction-column@m- u-print-none\">\n <div>\n <Text className=\"u-marg-bottom--light\">{StringHelper.pluralWithCount(itineraries.length, 'Room', t)}</Text>\n <Headline size=\"extra-large\" className=\"u-marg-bottom--light\">\n {getRoomNamesString(itineraries)}\n </Headline>\n <Text type={TextType.Body}>\n {bookingHotel?.name} • {[line1, line2, postalCode, country].filter((value) => !!value).join(' ')}\n </Text>\n </div>\n <div className=\"u-flex u-flex-gap u-flex-direction-column@m- u-flex-gap--light@m- u-marg-top--heavy@m-\">\n <BEButton wide={isMobile} rounded={isMobile} textColor={Color.Navy} isText={!isMobile} icon={IconType.Share} iconPosition=\"left\">\n {t(Translation.Reservation.Share)}\n </BEButton>\n <BEButton\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Navy}\n className=\"\"\n isText={!isMobile}\n icon={IconType.Print}\n iconPosition=\"left\"\n onClick={onPrintClicked}\n >\n {t(Translation.Reservation.Print)}\n </BEButton>\n {!allCancelled && (\n <>\n {ModifyBookingFeature.isActive() ? (\n <BEButton wide={isMobile} mobileWidth rounded={isMobile} textColor={Color.Navy} isText={!isMobile} disabled={!allCancellable}>\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.ModifyReservation), t)}\n </BEButton>\n ) : null}\n <BEButton\n danger\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Alert}\n isText={!isMobile}\n onClick={() => setShowingCancellationFor(itineraries)}\n disabled={!allCancellable}\n >\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.CancelReservation), t)}\n </BEButton>\n </>\n )}\n </div>\n </div>\n\n <span className=\"u-print-none\">\n <LineBreak smallMargins fullBleed />\n </span>\n\n <PrintOnly>\n <div className=\"c-header d-inline-block\">\n <div className=\"c-header__logo u-flex u-flex-align-center\">{hotelImageElement}</div>\n </div>\n </PrintOnly>\n\n <div className=\"u-marg-bottom--massive u-marg-bottom--none@m- u-print-marg-none u-marg-top--heavy\">\n <ReservationList\n actions={[ReservationAction.Cancel, ReservationAction.Modify, ReservationAction.BookAgain]}\n reservationItems={itineraries}\n onActionClick={onActionClick}\n showCancelledNotifications\n />\n </div>\n <LineBreak noMargins={isMobile} />\n <div className=\"u-flex u-marg-top--heavy@m-\">\n <Headline size=\"large\" bold>\n {t(Translation.Reservation.Total)}\n </Headline>\n <div className=\"u-flex align-items-end flex-column\">\n <Headline lineThrough size=\"large\" bold>\n <Currency>{calculateTotalForMemberBooking(booking)}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Reservation.PriceNote)}\n </Text>\n </div>\n </div>\n\n <div className=\"row u-marg-top--massive@m u-marg-top--heavy@m-\">\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Navigation.Menu.PaymentInformation)}>\n <IconText icon={IconType.Person}>{itineraries?.[0]?.profile?.firstName + ' ' + itineraries?.[0]?.profile?.lastName}</IconText>\n <IconText icon={IconType.Email}>{itineraries?.[0]?.profile?.email}</IconText>\n <IconText icon={IconType.CreditCard} TextProps={{ type: TextType.Small }}>\n •••• •••• •••• 1111 <span style={{ color: Color.DarkGrey }}>(Visa)</span>\n </IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Reservation.HotelInformation)}>\n <IconText icon={IconType.Map}>\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </IconText>\n <IconText icon={IconType.Phone}>{bookingHotel?.phone}</IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <CodeNumberInformation itineraries={itineraries} booking={booking} />\n </div>\n </div>\n <div className=\"u-marg-top--massive@m u-marg-top@m- u-background--snow u-w-fluid u-pad-top--massive@m u-pad-top--heavy@m- u-pad-bottom--heavy @m- u-pad-bottom--massive@m\">\n <div className=\"container\">\n <Text bold> {t(Translation.Reservation.Policies)}</Text>\n <div className=\"u-marg-top--medium\">\n <div className=\"u-w-100 row\">\n <div className=\"u-flex u-flex-direction-column@m- u-flex-gap--medium@m- col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckIn)}</strong>\n <br />\n {t(Translation.Reservation.After)} {displayTime(booking.hotel.checkInTime)}\n </Text>\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckOut)}</strong>\n <br />\n {t(Translation.Reservation.Before)} {displayTime(booking.hotel.checkOutTime)}\n </Text>\n </div>\n </div>\n </div>\n <div className=\"u-marg-bottom\">\n {itineraries.map((itinerary, index) => (\n <div key={index} className=\"u-marg-top--heavy\">\n <div className=\"u-marg-bottom\">\n <Text key={index} type={TextType.Small}>\n <strong>\n {t(Translation.Misc.Room)} {index + 1}\n </strong>\n \n {itinerary.roomName} - {itinerary.rateName}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n {itinerary.guaranteePolicyLongDescription ? (\n <>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.guaranteePolicyLongDescription || '' }}></span>\n </Text>\n </>\n ) : null}\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.cancellationPolicyLongDescription || '' }}></span>\n </Text>\n </div>\n ))}\n </div>\n </div>\n </div>\n <CancelReservationModal\n onClose={onCloseCancellationModal}\n items={showingCancellationFor as IRoomstayMemberBookingItemWithRefAndHotelDetails[]}\n booking={booking}\n visible={!!showingCancellationFor}\n />\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"AccountReservationSinglePage.js","sourceRoot":"/","sources":["src/pages/account/Reservations/AccountReservationSinglePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, IRoomstayMemberBookingItemWithRefAndHotelDetails, RoomstayMemberContext } from '@frontend/contexts';\nimport { calculateTotalForMemberBooking, IBookingStatus, IRoomstayMemberBooking } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { Fragment, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { Card } from '@/components/generic/Card/Card/Card';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport IconText from '@/components/generic/IconText/IconText';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Pill, { PillType, PillVariant } from '@/components/generic/Pill';\nimport PrintOnly from '@/components/generic/print/PrintOnly';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ReservationAction } from '@/components/reservation/ReservationItem';\nimport ReservationList from '@/components/reservation/ReservationList';\nimport { useCurrentHotel } from '@/hooks';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\nconst getRoomNamesString = (itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[]) => {\n const roomNames: { [name: string]: number } = {};\n\n for (const itinerary of itineraries) {\n roomNames[itinerary.roomName] = (roomNames[itinerary.roomName] ?? 0) + 1;\n }\n\n return Object.keys(roomNames)\n .map((name) => {\n const numOfRooms = roomNames[name];\n if (numOfRooms <= 1) return `${name}`;\n })\n .join(' + ');\n};\n\ntype CancelReservationModalProps = {\n items: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n\n visible: boolean;\n onClose: () => void;\n};\n\nconst CancelReservationModal = (props: CancelReservationModalProps) => {\n const { items, booking, visible, onClose } = props;\n const { fetchRoomstayMember } = useContext(RoomstayMemberContext);\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onCancelClick = () => {\n const cancellations = [];\n\n setIsLoading(true);\n for (const item of items) {\n cancellations.push(API.Reservation.cancelReservation(item.id, item.profile.email as string, booking.hotelId));\n }\n\n Promise.all(cancellations).then(() => {\n fetchRoomstayMember?.().then(() => {\n setIsLoading(false);\n onClose();\n });\n });\n };\n\n const footers = (\n <div className=\"d-flex u-pad align-items-center justify-content-center\">\n <div className=\"u-marg-right\">\n <BEButton isText onClick={onClose}>\n {t(Translation.Misc.Abort)}\n </BEButton>\n </div>\n <BEButton filled primary onClick={onCancelClick} isLoading={isLoading}>\n {t(Translation.Misc.YesImSure)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n title={t(Translation.Misc.CancellingReservation)}\n open={visible}\n size={SimpleModalSize.ExtraSmall}\n desktopFooter={footers}\n mobileFooter={footers}\n onClose={onClose}\n >\n <div className=\"u-pad\">\n <Text>{t(Translation.Misc.ThisWillCancel)}</Text>\n {/*TODO: Update wording to include all reservations*/}\n </div>\n </SimpleModal>\n );\n};\n\ntype CodeNumberInformationType = {\n itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n};\n\nconst CodeNumberInformation = (props: CodeNumberInformationType) => {\n const { itineraries, booking } = props;\n const { t } = useTranslation();\n\n const [cancelled, confirmed] = useMemo(() => {\n const cancelled = [];\n const confirmed = [];\n\n for (const item of itineraries) {\n if (item.status === IBookingStatus.Cancelled) {\n cancelled.push(item);\n } else {\n confirmed.push(item);\n }\n }\n\n return [cancelled, confirmed];\n }, itineraries);\n\n return (\n <Card className=\"w-100\" title={t(Translation.Reservation.CodeNumberInformation)}>\n {[\n { label: 'Cancelled', value: cancelled, type: PillType.Danger },\n { label: 'Confirmed', value: confirmed, type: PillType.Success },\n ].map((item, index) => {\n if (item.value.length > 0) {\n return (\n <Fragment key={index}>\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {item.label}\n </Text>\n {item.value.map((row, rowIndex) => {\n return (\n <Fragment key={rowIndex}>\n <Text className=\"u-marg-right\" inline type={TextType.Small}>\n <Pill type={item.type}>#{row.id}</Pill>\n </Text>\n </Fragment>\n );\n })}\n <br />\n </Fragment>\n );\n }\n })}\n <div className=\"u-marg-top\">\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {t(Translation.UserPortal.ReservationSingleScreen.Itinerary)}\n </Text>\n <Pill variant={PillVariant.Outlined} type={PillType.Grey}>\n #{booking.itineraryId}\n </Pill>\n </div>\n </Card>\n );\n};\n\nconst displayTime = (timeString: string) => dayjs().set('hours', +timeString.slice(0, 2)).set('minute', +timeString.slice(2)).format('h:mm A');\n\nexport const AccountReservationSinglePage = () => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const beContext = useContext(BookingEngineContext);\n const { getHotel } = useContext(CompanyContext);\n const ccx = useContext(CompanyContext);\n\n const { getItinerary } = useMember();\n const [showingCancellationFor, setShowingCancellationFor] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[] | null>(null);\n\n const [bookingHotel, setBookingHotel] = useState<Hotel>();\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const params = useParams<{ resId: string }>();\n\n const [booking, itineraries]: [IRoomstayMemberBooking, IRoomstayMemberBookingItemWithRefAndHotelDetails[]] = useMemo(() => {\n if (!params.resId) {\n throw new Error('Missing reservation ID parameter.');\n }\n\n const itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[] = [];\n\n const booking = getItinerary(params.resId);\n\n if (booking?.itinerary) {\n for (const itinerary of Object.values(booking.itinerary)) {\n itineraries.push({\n ...itinerary,\n bookingId: booking.itineraryId,\n hotel: booking.hotel,\n hotelId: booking.hotelId,\n });\n }\n }\n\n return [booking as IRoomstayMemberBooking, itineraries];\n }, [params, getItinerary]);\n\n useEffect(() => {\n if (booking && booking.hotelId) {\n getHotel(booking.hotelId).then((hotel) => {\n setBookingHotel(hotel);\n });\n }\n }, [booking, getHotel]);\n\n const allCancelled = useMemo(() => itineraries.every((row) => row.status === IBookingStatus.Cancelled), [itineraries]);\n\n const allCancellable = useMemo(() => itineraries.every((row) => row.isCancellable), [itineraries]);\n\n if (!booking) {\n return <>{t(Translation.Misc.Loading)}</>;\n }\n\n const { line1, line2, postalCode, country } = bookingHotel?.address ?? {};\n\n const onActionClick = (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => {\n switch (action) {\n case ReservationAction.Cancel:\n setShowingCancellationFor([item]);\n break;\n }\n };\n\n const onCloseCancellationModal = () => {\n setShowingCancellationFor(null);\n };\n\n const onPrintClicked = () => {\n window.print();\n };\n\n const hotelImageElement =\n hotel?.logo && typeof hotel.logo !== 'string' ? hotel.logo : <img src={typeof hotel?.logo === 'string' ? hotel.logo : ccx.logo} alt=\"Hotel Logo\" className=\"u-block\" />;\n\n return (\n <div id={`reservation-body-${booking.itineraryId}`}>\n {!!booking?.hotel?.colors && <style>{`#reservation-body-${booking.itineraryId} {${getAccentOverrideStyleContent(booking.hotel.colors)}}`}</style>}\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom--light u-print-none\">\n <Link to={AccountRoutes.Reservations.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourReservations)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-flex-align-stretch@m- u-flex u-flex-align-flex-end u-marg-bottom u-pad-top@m u-flex-direction-column@m- u-print-none\">\n <div>\n <Text className=\"u-marg-bottom--light\">{StringHelper.pluralWithCount(itineraries.length, 'Room', t)}</Text>\n <Headline size=\"extra-large\" className=\"u-marg-bottom--light\">\n {getRoomNamesString(itineraries)}\n </Headline>\n <Text type={TextType.Body}>\n {bookingHotel?.name} • {[line1, line2, postalCode, country].filter((value) => !!value).join(' ')}\n </Text>\n </div>\n <div className=\"u-flex u-flex-gap u-flex-direction-column@m- u-flex-gap--light@m- u-marg-top--heavy@m-\">\n <BEButton wide={isMobile} rounded={isMobile} textColor={Color.Navy} isText={!isMobile} icon={IconType.Share} iconPosition=\"left\">\n {t(Translation.Reservation.Share)}\n </BEButton>\n <BEButton\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Navy}\n className=\"\"\n isText={!isMobile}\n icon={IconType.Print}\n iconPosition=\"left\"\n onClick={onPrintClicked}\n >\n {t(Translation.Reservation.Print)}\n </BEButton>\n {!allCancelled && (\n <>\n {ModifyBookingFeature.isActive() ? (\n <BEButton wide={isMobile} mobileWidth rounded={isMobile} textColor={Color.Navy} isText={!isMobile} disabled={!allCancellable}>\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.ModifyReservation), t)}\n </BEButton>\n ) : null}\n <BEButton\n danger\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Alert}\n isText={!isMobile}\n onClick={() => setShowingCancellationFor(itineraries)}\n disabled={!allCancellable}\n >\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.CancelReservation), t)}\n </BEButton>\n </>\n )}\n </div>\n </div>\n\n <span className=\"u-print-none\">\n <LineBreak smallMargins fullBleed />\n </span>\n\n <PrintOnly>\n <div className=\"c-header d-inline-block\">\n <div className=\"c-header__logo u-flex u-flex-align-center\">{hotelImageElement}</div>\n </div>\n </PrintOnly>\n\n <div className=\"u-marg-bottom--massive u-marg-bottom--none@m- u-print-marg-none u-marg-top--heavy\">\n <ReservationList\n actions={[ReservationAction.Cancel, ReservationAction.Modify, ReservationAction.BookAgain]}\n reservationItems={itineraries}\n onActionClick={onActionClick}\n showCancelledNotifications\n />\n </div>\n <LineBreak noMargins={isMobile} />\n <div className=\"u-flex u-marg-top--heavy@m-\">\n <Headline size=\"large\" bold>\n {t(Translation.Reservation.Total)}\n </Headline>\n <div className=\"u-flex align-items-end flex-column\">\n <Headline lineThrough size=\"large\" bold>\n <Currency>{calculateTotalForMemberBooking(booking)}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Reservation.PriceNote)}\n </Text>\n </div>\n </div>\n\n <div className=\"row u-marg-top--massive@m u-marg-top--heavy@m-\">\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Navigation.Menu.PaymentInformation)}>\n <IconText icon={IconType.Person}>{itineraries?.[0]?.profile?.firstName + ' ' + itineraries?.[0]?.profile?.lastName}</IconText>\n <IconText icon={IconType.Email}>{itineraries?.[0]?.profile?.email}</IconText>\n <IconText icon={IconType.CreditCard} TextProps={{ type: TextType.Small }}>\n •••• •••• •••• 1111 <span style={{ color: Color.DarkGrey }}>(Visa)</span>\n </IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Reservation.HotelInformation)}>\n <IconText icon={IconType.Map}>\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </IconText>\n <IconText icon={IconType.Phone}>{bookingHotel?.phone}</IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <CodeNumberInformation itineraries={itineraries} booking={booking} />\n </div>\n </div>\n <div className=\"u-marg-top--massive@m u-marg-top@m- u-background--snow u-w-fluid u-pad-top--massive@m u-pad-top--heavy@m- u-pad-bottom--heavy @m- u-pad-bottom--massive@m\">\n <div className=\"container\">\n <Text bold> {t(Translation.Reservation.Policies)}</Text>\n <div className=\"u-marg-top--medium\">\n <div className=\"u-w-100 row\">\n <div className=\"u-flex u-flex-direction-column@m- u-flex-gap--medium@m- col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckIn)}</strong>\n <br />\n {t(Translation.Reservation.After)} {displayTime(booking.hotel.checkInTime)}\n </Text>\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckOut)}</strong>\n <br />\n {t(Translation.Reservation.Before)} {displayTime(booking.hotel.checkOutTime)}\n </Text>\n </div>\n </div>\n </div>\n <div className=\"u-marg-bottom\">\n {itineraries.map((itinerary, index) => (\n <div key={index} className=\"u-marg-top--heavy\">\n <div className=\"u-marg-bottom\">\n <Text key={index} type={TextType.Small}>\n <strong>\n {t(Translation.Misc.Room)} {index + 1}\n </strong>\n \n {itinerary.roomName} - {itinerary.rateName}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n {itinerary.guaranteePolicyLongDescription ? (\n <>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.guaranteePolicyLongDescription || '' }}></span>\n </Text>\n </>\n ) : null}\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.cancellationPolicyLongDescription || '' }}></span>\n </Text>\n </div>\n ))}\n </div>\n </div>\n </div>\n <CancelReservationModal\n onClose={onCloseCancellationModal}\n items={showingCancellationFor as IRoomstayMemberBookingItemWithRefAndHotelDetails[]}\n booking={booking}\n visible={!!showingCancellationFor}\n />\n </div>\n );\n};\n"]}
|
|
@@ -68,9 +68,13 @@ function FindReservationResults() {
|
|
|
68
68
|
const pushHistoryOnClick = () => {
|
|
69
69
|
navigate('../');
|
|
70
70
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Determines whether addon night count should be dismissed.
|
|
73
|
+
* This is true when the booking is not from Roomstay, indicated by:
|
|
74
|
+
* - the itinerary number not starting with 'RS', and
|
|
75
|
+
* - the hotel not preferring provider booking IDs.
|
|
76
|
+
*/
|
|
77
|
+
const dismissAddonNightCount = !((_a = bookingInformation === null || bookingInformation === void 0 ? void 0 : bookingInformation.itineraryNumber) === null || _a === void 0 ? void 0 : _a.startsWith('RS')) && !(hotel === null || hotel === void 0 ? void 0 : hotel.preferProviderBookingId);
|
|
74
78
|
(0, react_1.useEffect)(() => {
|
|
75
79
|
let isCancelled = false;
|
|
76
80
|
setIsLoading(true);
|
|
@@ -119,10 +123,10 @@ function FindReservationResults() {
|
|
|
119
123
|
const comments = [];
|
|
120
124
|
const total = (0, react_1.useCallback)(() => {
|
|
121
125
|
if (bookingInformation === null || bookingInformation === void 0 ? void 0 : bookingInformation.reservations) {
|
|
122
|
-
return (0, TotalCalculator_1.calculateTotalForReservation)(bookingInformation,
|
|
126
|
+
return (0, TotalCalculator_1.calculateTotalForReservation)(bookingInformation, dismissAddonNightCount);
|
|
123
127
|
}
|
|
124
128
|
return 0;
|
|
125
|
-
}, [bookingInformation]);
|
|
129
|
+
}, [bookingInformation, dismissAddonNightCount]);
|
|
126
130
|
const { raise } = (0, hooks_1.useEvent)();
|
|
127
131
|
(0, react_1.useEffect)(() => {
|
|
128
132
|
var _a, _b;
|
|
@@ -160,11 +164,11 @@ function FindReservationResults() {
|
|
|
160
164
|
if (obj.addons) {
|
|
161
165
|
const nights = Object.keys(obj.nights);
|
|
162
166
|
obj.addons.forEach((addon) => {
|
|
163
|
-
if (
|
|
164
|
-
addons.push(
|
|
167
|
+
if (dismissAddonNightCount) {
|
|
168
|
+
addons.push(addon);
|
|
165
169
|
}
|
|
166
170
|
else {
|
|
167
|
-
addons.push(addon);
|
|
171
|
+
addons.push(Object.assign(Object.assign({}, addon), { nights: nights.length }));
|
|
168
172
|
}
|
|
169
173
|
});
|
|
170
174
|
}
|