import useFetchHosting from "../utils/fetchHosting"; import { useNotification, type NotificationType } from "../NotificationContext"; import { useCookies } from "react-cookie"; import CenteredContainer from "./ChildrenContainer"; import { useState } from "react"; interface ReserveButtonProps { update: (name: string, id: number) => void, unreserve: (token: string, id: number) => void, reservedBy: string, notify: (message: string, type: NotificationType) => void, id: number, } const ReserveButton: React.FC = (props) => { const { reservedBy, update, id, unreserve, notify } = props; const [cookie] = useCookies(['userName']) const [tokenCookie] = useCookies(['apiToken']) const userName = cookie.userName; const isReserved = reservedBy !== ''; const handleReserve = async (name: string) => { try { await update(name, id); notify(`Успешно забронировано для ${name}`, 'success'); } catch (error) { notify(`Не удалось забронировать: ${error instanceof Error ? error.message : 'Unknown error'}`, 'error'); } }; const handleUnreserve = async () => { try { await unreserve(tokenCookie.apiToken, id); notify(`Удалось разбронировать ${name}`, 'success'); } catch (error) { notify(`Не удалось разбронировать: ${error instanceof Error ? error.message : 'Unknown error'}`, 'error'); } } return ( <> {(reservedBy == userName) && ( )} ); }; const Hosting = () => { const { data, error, loading, update, unreserveHosting, createHosting } = useFetchHosting(); const [name, setName] = useState(''); const [capacity, setCapacity] = useState(''); const [tokenCookie] = useCookies(['apiToken']) const notify = useNotification(); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); // Prevent the default form submission if (!name || !capacity) { notify('Надо заполнить все поля', 'error'); return; } try { await createHosting(tokenCookie.apiToken, name, Number(capacity)); // Reset form fields setName(''); setCapacity(''); notify('Удалось создать!', 'success'); } catch (error) { notify(`Не удалось создать: ${error instanceof Error ? error.message : 'Unknown error'}`, 'error'); } }; return ( <>

Поселение

Мы готовы приютить в наших 150 квадратах всех. У нас есть 6 спальных мест. При этом, если вы не хотите тесниться, то рядом с нами есть отель, а так же кэмпинг-виллы (Лучше бронировать заранее если есть надобность. Оба в 1-1,5км от нашего дома). Спальные места:

{loading &&
Loading...
} {error &&
Error
} {data && (
{data.furniture && data.furniture.map((item) => ( ))}
Размещение Спальных мест Бронирование
{item.name} {item.capacity}

Таблицу можно скроллить

)} Если вы хотите организовать себе свои спальные места и хотите, чтобы остальные это видели, вы можете добавить свое месо в таблицу.

); }; export default Hosting;