@php
    $roomNames = $rooms->mapWithKeys(fn($room) => [$room->code => '№ '.$room->code.' — '.$room->title])->all();
    $roomIds = $rooms->mapWithKeys(fn($room) => [$room->code => $room->id])->all();
    $roomPhotos = $rooms->mapWithKeys(function ($room) {
        $folder = str_replace('А', 'A', $room->code);
        return [
            $room->code => collect(range(1,4))->map(fn($i) => asset('images/room/'.$folder.'/'.$i.'.jpg'))->all(),
        ];
    })->all();
@endphp
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Админ Бронирование — Hotel Pineta</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="{{ asset('assets/css/registration.css') }}">
    @include('partials.legacy-booking-extra-styles')
@php
    $selectedCode = array_search((int) old('room_id', 0), $roomIds, true);
    $selectedCode = $selectedCode === false ? '' : $selectedCode;
@endphp
</head>
<body>
<div class="page">
    <div class="container booking-shell">
        <div class="top-actions">
            <a class="button-outline" href="{{ route('admin.dashboard') }}">← Админ панель</a>
            <a class="button-outline" href="{{ route('admin.bookings.index') }}">Журнал броней</a>
            <a class="button-outline" href="{{ route('guest.bookings.create') }}">Гостевая форма</a>
            <a class="button-outline" href="{{ route('guest.bookings.create_discount') }}">Форма со скидкой</a>
            <a class="button-outline" href="{{ route('home') }}">На сайт</a>
        </div>

        @if(session('success'))<div class="alert alert-success">{{ session('success') }}</div>@endif
        @if($errors->any())
            <div class="alert alert-danger">
                @foreach($errors->all() as $error)
                    <div>{{ $error }}</div>
                @endforeach
            </div>
        @endif

        <div class="alert alert-success" id="submitSuccessBox" style="display:none"></div>
        <div class="alert alert-danger" id="submitErrorBox" style="display:none"></div>

        <div class="page-grid">
            <div>
                <div class="card layout-block">
                    <div class="eyebrow">Админ Бронирование</div>
                    <h1>Админ Бронирование</h1>
                    <div class="source-pill">Предварительное бронирование · дедлайн предоплаты авто/вручную</div>
                    <div class="discount-box admin-discount-box" id="adminDiscountCodeBox" hidden>
                        <div><strong>Скидка</strong><span class="discount-percent-value">До 25%</span></div>
                        <div><strong>Код</strong><span id="adminDiscountCodePreview">{{ old('discount_code') ?: '—' }}</span></div>
                    </div>
                    <div class="legend">
                        <span class="legend-item"><span class="dot dot-free"></span>Свободно</span>
                        <span class="legend-item"><span class="dot dot-held"></span>Ждём оплату</span>
                        <span class="legend-item"><span class="dot dot-occupied"></span>Подтверждено</span>
                        <span class="legend-item"><span class="dot dot-selected"></span>Выбрано</span>
                    </div>
                </div>

                <div class="layout-block">
                    <h3 class="layout-title">Выберите номер</h3>
                    <div class="floors-wrap">
                        <div class="floor-card"><div class="floor-title">Третий этаж</div><div class="rooms-grid" id="gridFloor3"></div></div>
                        <div class="floor-card"><div class="floor-title">Второй этаж</div><div class="rooms-grid" id="gridFloor2"></div></div>
                    </div>
                    <div class="note-line">В таблице справа показаны все тарифы. Итог по брони рассчитывается по выбранному тарифу и длительности проживания.</div>
                </div>

                <div class="room-gallery-modal" id="roomGalleryModal" hidden>
                    <div class="room-gallery-dialog" role="dialog" aria-modal="true" aria-labelledby="roomGalleryTitle">
                        <div class="room-gallery-header">
                            <h3 class="room-gallery-title" id="roomGalleryTitle">Фотографии комнаты</h3>
                            <button type="button" class="room-gallery-close" id="roomGalleryClose">Закрыть</button>
                        </div>
                        <div class="room-gallery-grid" id="roomGalleryGrid"></div>
                    </div>
                </div>

                <div class="card">
                    <form method="post" action="{{ route('admin.bookings.store') }}" class="grid" id="adminBookingForm">
                        @csrf
                        <input type="hidden" name="departure_date" id="departureDateHidden" value="{{ old('departure_date', $defaults['departure_date']) }}">
                        <input type="hidden" name="full_amount" id="fullAmountInput" value="{{ old('full_amount', $defaults['full_amount']) }}">
                        <input type="hidden" name="prepayment_amount" id="prepaymentAmountInput" value="{{ old('prepayment_amount', $defaults['prepayment_amount']) }}">
                        <input type="hidden" id="guestLang" value="ru">

                        <div class="col-6"><label>Имя гостя *</label><input type="text" name="guest_name" id="guestNameInput" data-pineta-name="1" value="{{ old('guest_name') }}" required></div>
                        <div class="col-6"><label>Телефон *</label><input class="pineta-phone-input" data-pineta-phone="1" type="tel" name="phone" value="{{ old('phone') }}" placeholder="39 000 000 0000" required></div>
                        <div class="col-6"><label>Email</label><input type="email" name="email" value="{{ old('email') }}" placeholder="name@example.com"></div>
                        <div class="col-6"><label>Дата заезда *</label><input type="date" name="arrival_date" id="arrivalDate" min="{{ old('extended_date_range', $defaults['extended_date_range']) ? '2026-04-01' : now()->format('Y-m-d') }}" value="{{ old('arrival_date', $defaults['arrival_date']) }}" required></div>
                        <div class="col-6"><label class="toggle-line"><input type="checkbox" name="extended_date_range" id="extendedDateRangeInput" value="1" @checked(old('extended_date_range', $defaults['extended_date_range']))><span>Расширенный диапазон дат с 01.04.2026</span></label></div>
                        <div class="col-12 min-nights-form-block" id="minNightsFormBlock">
                            <div class="price-line min-nights-line"><strong id="minNightsLabelText">Минимум дней на эту дату</strong><span id="minNightsValue">—</span></div>
                            <div class="status-line" id="restrictionStatus"></div>
                        </div>
                        <div class="col-6"><label>Выбранный номер *</label><select name="room_id" id="roomSelect" required><option value="">Сначала выберите дату</option></select></div>
                        <div class="col-3"><label>Ночей *</label><input type="number" id="nightsInput" min="1" max="30" value="{{ old('nights', 1) }}" required></div>
                        <div class="col-3"><label>Гостей *</label><select name="adults" id="guestsCount" required><option value="1" @selected(old('adults', $defaults['adults']) == 1)>1</option><option value="2" @selected(old('adults', $defaults['adults']) == 2)>2</option><option value="3" @selected(old('adults', $defaults['adults']) == 3)>3</option></select></div>
                        <div class="col-6"><label class="toggle-line"><input type="checkbox" name="children_under_2" id="childrenSelect" value="1" @checked(old('children_under_2', $defaults['children_under_2']))><span>Дети до 2 лет</span></label></div>
                        <div class="col-6"><label class="toggle-line"><input type="checkbox" name="breakfast" id="breakfastInput" value="1" @checked(old('breakfast'))><span>Нужен завтрак</span></label></div>
                        <div class="col-6"><label class="toggle-line"><input type="checkbox" name="is_discount" id="adminDiscountInput" value="1" @checked(old('is_discount', true))><span>Режим со скидкой</span></label><input type="hidden" name="discount_code" id="adminDiscountCodeInput" value="{{ old('discount_code') }}"></div>
                        <div class="col-6"><label>Источник *</label><select name="source" id="sourceInput">@foreach($sources as $value => $label)<option value="{{ $value }}" @selected(old('source', $defaults['source']) === $value)>{{ $label }}</option>@endforeach</select></div>
                        <div class="col-6"><label>Статус *</label><select name="status" id="statusInput">@foreach($statuses as $value => $label)<option value="{{ $value }}" @selected(old('status', $defaults['status']) === $value)>{{ $label }}</option>@endforeach</select></div>
                        <div class="col-12"><div class="note-line">Срок предоплаты берётся из правил в панели управления. На этой странице отдельные настройки срока убраны, чтобы не было конфликта.</div></div>
                        <div class="col-6"><label>Заезд от</label><input type="time" name="check_in_time_from" value="{{ old('check_in_time_from', $defaults['check_in_time_from']) }}"></div>
                        <div class="col-6"><label>Заезд до</label><input type="time" name="check_in_time_to" value="{{ old('check_in_time_to', $defaults['check_in_time_to']) }}"></div>
                        <div class="col-12" id="bookingLinkWrap"><label>Ссылка Booking / профиль</label><input type="url" name="booking_link" id="bookingLinkInput" value="{{ old('booking_link') }}" placeholder="https://..."></div>
                        <div class="col-12"><label>Комментарий администратора</label><textarea name="comment_admin" maxlength="5000" placeholder="Комментарий по бронированию">{{ old('comment_admin') }}</textarea></div>
                        <div class="col-12"><div class="form-actions"><button type="submit" class="button" id="submitBtn">Создать предварительное бронирование</button><div class="loading-indicator submit-loading" id="submitLoadingIndicator" hidden><span class="loading-spinner" aria-hidden="true"></span><span class="loading-text">Сохраняем бронирование…</span></div><a href="{{ route('admin.bookings.index') }}" class="button-outline">К журналу броней</a></div></div>
                    </form>
                </div>
            </div>
            <div>
                <div class="loading-indicator" id="formLoadingIndicator" hidden><span class="loading-spinner" aria-hidden="true"></span><span class="loading-text">Загружаем цены, итог и занятые номера…</span></div>
                <div class="layout-block">
                    <h3 class="layout-title">Стоимость и ограничения за день</h3>
                    <div class="price-lines">
                        <div class="price-section-label other-sites-label" id="externalRatesTitle">Стоимость на других сайтах</div>
                        <div class="price-line external-rate-line" id="priceLineWB"><strong>Цена с завтраком</strong><span id="priceWB">—</span></div>
                        <div class="price-line external-rate-line" id="priceLineNB"><strong>Цена без завтрака</strong><span id="priceNB">—</span></div>
                        <div class="price-line external-rate-line" id="priceLineWB3"><strong>Цена с завтраком &gt; 3 дней</strong><span id="priceWB3">—</span></div>
                        <div class="price-line external-rate-line" id="priceLineNB3"><strong>Цена без завтрака &gt; 3 дней</strong><span id="priceNB3">—</span></div>
                        <div class="price-section-label discount-sites-label" id="discountRatesTitle">Стоимость со скидкой Hotel Pineta</div>
                        <div class="price-line" id="priceLineWBD"><strong>Цена с завтраком со скидкой</strong><span id="priceWBD">—</span></div>
                        <div class="price-line" id="priceLineNBD"><strong>Цена без завтрака со скидкой</strong><span id="priceNBD">—</span></div>
                        <div class="price-line" id="priceLineWBD3"><strong>Цена с завтраком со скидкой &gt; 3 дней</strong><span id="priceWBD3">—</span></div>
                        <div class="price-line" id="priceLineNBD3"><strong>Цена без завтрака со скидкой &gt; 3 дней</strong><span id="priceNBD3">—</span></div>
                    </div>
                </div>
                <div class="quote-box">
                    <div class="quote-label">Итог по бронированию</div>
                    <div class="quote-main" id="totalMain">—</div>
                    <div class="quote-list">
                        <div>Ночей: <strong id="summaryNights">—</strong></div>
                        <div>Предоплата: <strong id="prepaymentLine">—</strong></div>
                        <div>Остаток: <strong id="remainingLine">—</strong></div>
                    </div>
                    <div class="warning-box" id="quoteWarning">Заполните дату, номер и количество ночей, чтобы увидеть расчёт и ограничения.</div>
                </div>

                <div class="card" style="margin-top:18px;">
                    <div class="eyebrow">Сообщение гостю</div>
                    <h2 style="margin-bottom:8px;">Гостевое сообщение</h2>
                    <div class="admin-msg-lang-wrap" style="margin:0 0 12px;">
                        <div style="font-size:12px;font-weight:800;color:#516274;margin-bottom:8px;">Язык гостевого сообщения</div>
                        <div class="lang-switcher" id="adminMsgLangSwitcher">
                            <button class="lang-btn active admin-msg-lang-btn" type="button" data-lang="it" aria-pressed="true">IT</button>
                            <button class="lang-btn admin-msg-lang-btn" type="button" data-lang="en" aria-pressed="false">EN</button>
                            <button class="lang-btn admin-msg-lang-btn" type="button" data-lang="ru" aria-pressed="false">RU</button>
                            <button class="lang-btn admin-msg-lang-btn" type="button" data-lang="uk" aria-pressed="false">UA</button>
                            <button class="lang-btn admin-msg-lang-btn" type="button" data-lang="fr" aria-pressed="false">FR</button>
                            <button class="lang-btn admin-msg-lang-btn" type="button" data-lang="de" aria-pressed="false">DE</button>
                        </div>
                    </div>
                    <textarea id="offerMessage" class="readonly-message admin-offer-message" readonly></textarea>
                    <div class="copy-row"><button type="button" class="button-outline" id="copyOfferBtn">Скопировать сообщение</button></div>
                </div>

                <div class="card" id="paymentDetailsBlock" style="margin-top:18px;" hidden>
                    <div class="eyebrow">Оплата</div>
                    <h2 style="margin-bottom:8px;">Реквизиты для предоплаты</h2>
                    <textarea id="paymentDetailsMessage" class="payment-message" readonly></textarea>
                    <div class="copy-row"><button type="button" class="button-outline" id="copyPaymentBtn">Скопировать реквизиты</button></div>
                    <div class="admin-note">После создания предварительной брони запись появится в журнале админских бронирований, а номер будет временно удержан на 3 дня.</div>
                </div>

                <div class="card layout-block receipt-upload-block" id="receiptUploadBlock" style="margin-top:18px;" hidden>
                    <div class="receipt-upload-head">
                        <div>
                            <h3 class="layout-title">Загрузка квитанции о предоплате</h3>
                            <div class="receipt-upload-note">После создания предварительной брони можно сразу загрузить фото или PDF квитанции. Файл попадёт в Laravel-проект и будет доступен в карточке бронирования.</div>
                            <div class="receipt-upload-meta">Номер бронирования: <span id="receiptReservationId">—</span></div>
                        </div>
                    </div>
                    <form id="receiptUploadForm" action="{{ route('guest.bookings.receipt.public') }}" method="post" enctype="multipart/form-data">
                        @csrf
                        <input type="hidden" name="reservation_id" id="receiptReservationIdInput" value="">
                        <div class="receipt-upload-actions">
                            <input type="file" name="receipt" id="receiptFileInput" accept=".jpg,.jpeg,.png,.webp,.pdf,application/pdf,image/jpeg,image/png,image/webp">
                            <button type="button" class="button-outline" id="receiptUploadBtn" disabled>Загрузить квитанцию</button>
                        </div>
                        <div class="receipt-upload-help">Допустимые файлы: JPG, PNG, WEBP или PDF до 5 МБ.</div>
                        <div class="loading-indicator receipt-upload-loading" id="receiptUploadLoading" hidden><span class="loading-spinner" aria-hidden="true"></span><span class="loading-text" id="receiptUploadLoadingText">Загружаем квитанцию…</span></div>
                        <div class="receipt-upload-status" id="receiptUploadStatus"></div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
window.PinetaBookingFormConfig = {
    mode: 'admin',
    variant: 'admin',
    availabilityUrl: @json($availabilityUrl),
    quoteUrl: @json($quoteUrl),
    receiptUploadUrl: @json(route('guest.bookings.receipt.public')),
    roomNames: @json($roomNames, JSON_UNESCAPED_UNICODE),
    roomIds: @json($roomIds, JSON_UNESCAPED_UNICODE),
    roomPhotos: @json($roomPhotos, JSON_UNESCAPED_UNICODE),
    selectedCode: @json($selectedCode),
};
</script>

<script>
(function () {
    const extended = document.getElementById('extendedDateRangeInput');
    const arrival = document.getElementById('arrivalDate');

    function syncDateRange() {
        if (!arrival || !extended) return;
        const minDate = extended.checked ? '2026-04-01' : @json(now()->format('Y-m-d'));
        arrival.min = minDate;
        if (!arrival.value || arrival.value < minDate) {
            arrival.value = minDate;
        }
    }

    extended?.addEventListener('change', syncDateRange);
    syncDateRange();
})();
</script>
<script src="{{ asset('assets/js/phone-fields.js') }}"></script>
<script src="{{ asset('assets/js/name-fields.js') }}"></script>
<script src="{{ asset('assets/js/legacy-booking-form.js') }}"></script>
</body>
</html>
