Merged in feat/SW-1308-booking-codes-track-b (pull request #1607)
Feat/SW-1308 booking codes track b * feat: SW-1308 Booking codes track b * feat: SW-1308 Booking codes Track B implementation * feat: SW-1308 Optimized after rebase Approved-by: Arvid Norlin
This commit is contained in:
@@ -28,7 +28,9 @@ function findSelectedRate(
|
||||
room.products.find(
|
||||
(product) =>
|
||||
product.public?.rateCode === rateCode ||
|
||||
product.member?.rateCode === rateCode
|
||||
product.member?.rateCode === rateCode ||
|
||||
product.bonusCheque?.rateCode === rateCode ||
|
||||
product.voucher?.rateCode === rateCode
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -94,7 +96,9 @@ export function createRatesStore({
|
||||
product.member?.rateCode === room.rateCode ||
|
||||
product.redemptions?.find(
|
||||
(redemption) => redemption?.rateCode === room.rateCode
|
||||
)
|
||||
) ||
|
||||
product.bonusCheque?.rateCode === room.rateCode ||
|
||||
product.voucher?.rateCode === room.rateCode
|
||||
)
|
||||
)
|
||||
const redemptionProduct = selectedRoom?.products[0].redemptions?.find(
|
||||
@@ -103,18 +107,26 @@ export function createRatesStore({
|
||||
const product = selectedRoom?.products.find(
|
||||
(p) =>
|
||||
p.public?.rateCode === room.rateCode ||
|
||||
p.member?.rateCode === room.rateCode
|
||||
p.member?.rateCode === room.rateCode ||
|
||||
p.bonusCheque?.rateCode === room.rateCode ||
|
||||
p.voucher?.rateCode === room.rateCode
|
||||
)
|
||||
if (selectedRoom && product) {
|
||||
rateSummary[idx] = {
|
||||
features: selectedRoom.features,
|
||||
member: product.member,
|
||||
public: product.public,
|
||||
redemption: undefined,
|
||||
rate: product.rate,
|
||||
roomType: selectedRoom.roomType,
|
||||
roomTypeCode: selectedRoom.roomTypeCode,
|
||||
}
|
||||
if (product.member || product.public) {
|
||||
rateSummary[idx].member = product.member
|
||||
rateSummary[idx].public = product.public
|
||||
} else if (product.bonusCheque) {
|
||||
rateSummary[idx].bonusCheque = product.bonusCheque
|
||||
} else if (product.voucher) {
|
||||
rateSummary[idx].voucher = product.voucher
|
||||
}
|
||||
} else if (selectedRoom && redemptionProduct) {
|
||||
rateSummary[idx] = {
|
||||
features: selectedRoom.features,
|
||||
@@ -300,6 +312,90 @@ export function createRatesStore({
|
||||
selectedRate.roomTypeCode
|
||||
)
|
||||
|
||||
state.searchParams = new ReadonlyURLSearchParams(searchParams)
|
||||
window.history.pushState(
|
||||
{},
|
||||
"",
|
||||
`${state.pathname}?${searchParams}`
|
||||
)
|
||||
})
|
||||
)
|
||||
}
|
||||
},
|
||||
selectRateVoucher() {
|
||||
return function (selectedRate) {
|
||||
return set(
|
||||
produce((state: RatesState) => {
|
||||
const voucherRate = selectedRate.product.voucher
|
||||
if (!voucherRate) {
|
||||
return
|
||||
}
|
||||
|
||||
state.rooms[0].selectedRate = selectedRate
|
||||
state.rateSummary[0] = {
|
||||
features: selectedRate.features,
|
||||
voucher: selectedRate.product.voucher,
|
||||
bonusCheque: undefined,
|
||||
package: state.rooms[0].selectedPackage,
|
||||
rate: selectedRate.product.rate,
|
||||
roomType: selectedRate.roomType,
|
||||
roomTypeCode: selectedRate.roomTypeCode,
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams(state.searchParams)
|
||||
searchParams.set(`room[0].ratecode`, voucherRate.rateCode)
|
||||
searchParams.set(`room[0].roomtype`, selectedRate.roomTypeCode)
|
||||
|
||||
if (state.rateSummary.length === state.booking.rooms.length) {
|
||||
state.activeRoom = -1
|
||||
} else {
|
||||
state.activeRoom = 1
|
||||
}
|
||||
|
||||
state.searchParams = new ReadonlyURLSearchParams(searchParams)
|
||||
window.history.pushState(
|
||||
{},
|
||||
"",
|
||||
`${state.pathname}?${searchParams}`
|
||||
)
|
||||
})
|
||||
)
|
||||
}
|
||||
},
|
||||
selectRateCheque(idx) {
|
||||
return function (selectedRate) {
|
||||
return set(
|
||||
produce((state: RatesState) => {
|
||||
const chequeRate = selectedRate.product.bonusCheque
|
||||
if (!chequeRate) {
|
||||
return
|
||||
}
|
||||
|
||||
state.rooms[idx].selectedRate = selectedRate
|
||||
state.rateSummary[idx] = {
|
||||
features: selectedRate.features,
|
||||
package: state.rooms[idx].selectedPackage,
|
||||
rate: selectedRate.product.rate,
|
||||
voucher: undefined,
|
||||
bonusCheque: chequeRate,
|
||||
roomType: selectedRate.roomType,
|
||||
roomTypeCode: selectedRate.roomTypeCode,
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams(state.searchParams)
|
||||
searchParams.set(`room[${idx}].ratecode`, chequeRate.rateCode)
|
||||
|
||||
searchParams.set(
|
||||
`room[${idx}].roomtype`,
|
||||
selectedRate.roomTypeCode
|
||||
)
|
||||
|
||||
if (state.rateSummary.length === state.booking.rooms.length) {
|
||||
state.activeRoom = -1
|
||||
} else {
|
||||
state.activeRoom = idx + 1
|
||||
}
|
||||
|
||||
state.searchParams = new ReadonlyURLSearchParams(searchParams)
|
||||
window.history.pushState(
|
||||
{},
|
||||
@@ -332,7 +428,9 @@ export function createRatesStore({
|
||||
const product = selectedRate?.products.find(
|
||||
(prd) =>
|
||||
prd.public?.rateCode === room.rateCode ||
|
||||
prd.member?.rateCode === room.rateCode
|
||||
prd.member?.rateCode === room.rateCode ||
|
||||
prd.bonusCheque?.rateCode === room.rateCode ||
|
||||
prd.voucher?.rateCode === room.rateCode
|
||||
)
|
||||
|
||||
const selectedPackage = room.packages?.[0]
|
||||
|
||||
Reference in New Issue
Block a user