diff --git a/backend/src/routes/publicWidget.ts b/backend/src/routes/publicWidget.ts index b83003d..dce75cb 100644 --- a/backend/src/routes/publicWidget.ts +++ b/backend/src/routes/publicWidget.ts @@ -78,6 +78,7 @@ const publicWidget: FastifyPluginAsync = async (fastify) => { allowChildren: (ws.widget_children as boolean) ?? true, hotelName: (ws.widget_hotel_name as string) ?? hotel.name, bankDetails: (ws.widget_bank_details as string) ?? '', + services: Array.isArray(ws.widget_services) ? ws.widget_services as { id: string; enabled: boolean }[] : null, }, rooms: rooms.map(r => ({ id: r.id, diff --git a/src/lib/api.ts b/src/lib/api.ts index 99a9ccb..d8dc83f 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -1716,6 +1716,7 @@ export interface WidgetConfig { allowExtraBeds: boolean allowChildren: boolean hotelName: string + services?: { id: string; enabled: boolean }[] } } diff --git a/src/pages/BookingWidgetPage.tsx b/src/pages/BookingWidgetPage.tsx index 4136307..db4c9a5 100644 --- a/src/pages/BookingWidgetPage.tsx +++ b/src/pages/BookingWidgetPage.tsx @@ -1313,7 +1313,20 @@ export function BookingWidgetPage() { showPromo: (hs as any).widgetShowPromo !== undefined ? Boolean((hs as any).widgetShowPromo) : prev.showPromo, allowExtraBeds: (hs as any).widgetExtraBeds !== undefined ? Boolean((hs as any).widgetExtraBeds) : prev.allowExtraBeds, allowChildren: (hs as any).widgetChildren !== undefined ? Boolean((hs as any).widgetChildren) : prev.allowChildren, - additionalServices: Array.isArray((hs as any).widgetServices) ? (hs as any).widgetServices : prev.additionalServices, + additionalServices: (() => { + const rentalObjs = config?.rentalObjects ?? [] + if (rentalObjs.length === 0) return prev.additionalServices + const saved: { id: string; enabled: boolean }[] = Array.isArray((hs as any).widgetServices) + ? (hs as any).widgetServices : [] + return rentalObjs.map(o => ({ + id: o.id, + name: o.name, + icon: o.icon, + price: o.pricePerHour, + unit: 'ч', + enabled: saved.length > 0 ? (saved.find(s => s.id === o.id)?.enabled ?? true) : true, + })) + })(), })) setSettingsReady(true) }).finally(() => setGatewayLoading(false)) @@ -1365,7 +1378,7 @@ export function BookingWidgetPage() { widget_show_promo: s.showPromo, widget_extra_beds: s.allowExtraBeds, widget_children: s.allowChildren, - widget_services: s.additionalServices, + widget_services: s.additionalServices.map(s => ({ id: s.id, enabled: s.enabled })), }) setSaved(true) setTimeout(() => setSaved(false), 2000) @@ -1658,122 +1671,38 @@ export function BookingWidgetPage() { - {/* Additional services */} + {/* Additional services — from rental objects */}
- Платные услуги, доступные гостю при бронировании номера -
++ Объекты аренды, доступные гостю при бронировании номера. Управляйте объектами в{' '} + модуле аренды. +
+Нет объектов аренды
+ + Добавить в модуле аренды → +Нет дополнительных услуг
- )} -