Add NetUP IPTV integration module (TV Welcome settings page)
- DB: migrations/002_netup.sql — netup_settings + netup_room_mapping tables - Backend: routes/netup.ts — GET/PATCH settings, POST test, GET/POST room mappings, POST send TV message; notifyNetupCheckin/Checkout helpers - Backend: bookings PATCH — fire-and-forget NetUP check-in/out on status change - Frontend: TvWelcomePage — connection settings tab + room mapping tab - Frontend: sidebarItem added to tv-welcome module (shows in sidebar menu) - Frontend: ModulesPage Settings button navigates to /tv-welcome - Frontend: BookingModal — "Сообщение гостю на TV" panel for existing bookings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -265,6 +265,29 @@ export const api = {
|
||||
update: (slug: string, data: HotelPayload) =>
|
||||
req<Hotel>('PATCH', `/api/hotels/${slug}`, toHotelPayload(data)),
|
||||
},
|
||||
|
||||
// ── NetUP IPTV ────────────────────────────────────────────────────────────
|
||||
netup: {
|
||||
getSettings: (slug: string) =>
|
||||
req<{ server_url: string; username: string; password: string; default_language: string; enabled: boolean }>(
|
||||
'GET', `/api/hotels/${slug}/netup/settings`),
|
||||
|
||||
saveSettings: (slug: string, data: { server_url: string; username: string; password?: string; default_language: string; enabled: boolean }) =>
|
||||
req<{ ok: boolean }>('PATCH', `/api/hotels/${slug}/netup/settings`, data),
|
||||
|
||||
testConnection: (slug: string) =>
|
||||
req<{ ok: boolean; message: string }>('POST', `/api/hotels/${slug}/netup/test`),
|
||||
|
||||
getRoomMappings: (slug: string) =>
|
||||
req<{ id: string; number: string; type: string; netup_room_number: string }[]>(
|
||||
'GET', `/api/hotels/${slug}/netup/rooms`),
|
||||
|
||||
saveRoomMappings: (slug: string, mappings: { pms_room_id: string; netup_room_number: string }[]) =>
|
||||
req<{ ok: boolean }>('POST', `/api/hotels/${slug}/netup/rooms`, { mappings }),
|
||||
|
||||
sendMessage: (slug: string, roomId: string, message: string, guestName?: string) =>
|
||||
req<{ ok: boolean }>('POST', `/api/hotels/${slug}/netup/message`, { room_id: roomId, message, guest_name: guestName }),
|
||||
},
|
||||
}
|
||||
|
||||
// ── Payload types & converters ───────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user