@php
    $title = 'Карточка брони — Hotel Pineta';
    $heading = 'Карточка бронирования';
    $subheading = 'Оплата, квитанции, лог синхронизации и уведомления';
@endphp

@extends('layouts.admin')

@section('content')
    <div class="card">
        <div style="display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap;">
            <div>
                <h3 style="margin-bottom:8px;">{{ $booking->booking_number }}</h3>
                <div class="muted">Создано {{ $booking->created_at?->format('d.m.Y H:i') }}</div>
            </div>

            <div class="actions-row">
                <span class="badge {{ $booking->status }}">{{ \App\Models\Booking::statusOptions()[$booking->status] ?? $booking->status }}</span>
                <a href="{{ route('admin.bookings.create', ['arrival_date' => $booking->arrival_date?->format('Y-m-d'), 'departure_date' => $booking->departure_date?->format('Y-m-d')]) }}" class="secondary">Новая бронь</a>
                <a href="#booking-documents" class="secondary">Документы и квитанции</a>
                @if ($booking->status !== 'cancelled')
                    <form method="post" action="{{ route('admin.bookings.cancel', $booking) }}" onsubmit="return confirm('Перевести бронь в статус «Отменена»?');">
                        @csrf
                        <button type="submit" class="danger">Отменить бронь</button>
                    </form>
                @endif
                <form method="post" action="{{ route('admin.bookings.destroy', $booking) }}" onsubmit="return confirm('Удалить запись бронирования из базы данных?');">
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="danger">Удалить из базы</button>
                </form>
            </div>
        </div>

        <div class="meta-grid" style="margin-top: 18px;">
            <div class="meta-row"><div class="k">Гость</div><div class="v">{{ $booking->guest_name }}</div></div>
            <div class="meta-row"><div class="k">Оценка гостя</div><div class="v">{{ $booking->guest_rating ?: ($booking->guest?->admin_rating ?: '—') }}</div></div>
            <div class="meta-row"><div class="k">Телефон</div><div class="v">{{ $booking->phone ?: '—' }}</div></div>
            <div class="meta-row"><div class="k">E-mail</div><div class="v">{{ $booking->email ?: '—' }}</div></div>
            <div class="meta-row"><div class="k">Комната</div><div class="v">№ {{ $booking->room?->code }} — {{ $booking->room?->title }}</div></div>
            <div class="meta-row"><div class="k">Источник</div><div class="v">{{ \App\Models\Booking::sourceOptions()[$booking->source] ?? $booking->source }}</div></div>
            <div class="meta-row"><div class="k">Вариант</div><div class="v">{{ $booking->booking_variant }}</div></div>
            <div class="meta-row"><div class="k">Заезд</div><div class="v">{{ $booking->arrival_date?->format('d.m.Y') ?: '—' }}</div></div>
            <div class="meta-row"><div class="k">Выезд</div><div class="v">{{ $booking->departure_date?->format('d.m.Y') ?: '—' }}</div></div>
            <div class="meta-row"><div class="k">Ночей</div><div class="v">{{ $booking->nights }}</div></div>
            <div class="meta-row"><div class="k">Гостей</div><div class="v">{{ $booking->adults }}</div></div>
            <div class="meta-row"><div class="k">Дети до 2 лет</div><div class="v">{{ $booking->children_under_2 ? 'Да' : 'Нет' }}</div></div>
            <div class="meta-row"><div class="k">Завтрак</div><div class="v">{{ $booking->breakfast ? 'Да' : 'Нет' }}</div></div>
            <div class="meta-row"><div class="k">Сумма</div><div class="v">{{ number_format((float) $booking->full_amount, 2, '.', ' ') }} €</div></div>
            <div class="meta-row"><div class="k">Предоплата</div><div class="v">{{ number_format((float) $booking->prepayment_amount, 2, '.', ' ') }} €</div></div>
            <div class="meta-row"><div class="k">Остаток</div><div class="v">{{ number_format((float) $booking->remaining_amount, 2, '.', ' ') }} €</div></div>
            <div class="meta-row"><div class="k">Ночь</div><div class="v">{{ number_format((float) $booking->nightly_amount, 2, '.', ' ') }} €</div></div>
            <div class="meta-row"><div class="k">Срок оплаты</div><div class="v">{{ $booking->payment_deadline?->format('d.m.Y H:i') ?: '—' }}</div></div>
            <div class="meta-row"><div class="k">Подтверждена</div><div class="v">{{ $booking->confirmed_at?->format('d.m.Y H:i') ?: '—' }}</div></div>
        </div>
    </div>

    @if ($booking->status === 'confirmed' && $booking->prepayment_received)
        <div class="card" style="margin-top:18px;">
            <h3 class="section-title">Подтверждение бронирования</h3>
            <div class="muted">Бронь подтверждена администратором. Сообщение можно прочитать, скопировать или скачать.</div>

            <div class="confirmation-card-preview" id="bookingConfirmationPreview"></div>

            <div class="actions-row confirmation-actions" style="margin-top:12px;">
                <button type="button" class="primary" id="copyBookingConfirmation">Скопировать подтверждение</button>
                <label class="confirmation-format-label" for="bookingConfirmationFormat">Формат</label>
                <select id="bookingConfirmationFormat" class="confirmation-format-select">
                    <option value="txt">TXT</option>
                    <option value="jpg">JPG</option>
                    <option value="pdf">PDF</option>
                </select>
                <button type="button" class="secondary" id="downloadBookingConfirmation">Скачать подтверждение</button>
            </div>
        </div>
    @endif

    <div class="grid" style="margin-top: 18px;">
        <div class="card">
            <h3 class="section-title">Комментарий администратора</h3>
            <div class="muted">{{ $booking->comment_admin ?: 'Пока пусто.' }}</div>
            @if ($booking->booking_link)
                <div style="margin-top:12px;"><a href="{{ $booking->booking_link }}" target="_blank" rel="noopener">Открыть ссылку источника</a></div>
            @endif
        </div>

        <div class="card">
            <h3 class="section-title">Оценка гостя</h3>
            <form method="post" action="{{ route('admin.bookings.guest_rating.update', $booking) }}">
                @csrf
                <div class="field">
                    <label for="guest_rating">Оценка от 1 до 10</label>
                    <select id="guest_rating" name="guest_rating" class="guest-rating-select" style="width: 150px; max-width: 100%;">
                        <option value="">Без оценки</option>
                        @for ($i = 1; $i <= 10; $i++)
                            <option value="{{ $i }}" @selected((int) old('guest_rating', $booking->guest_rating ?: ($booking->guest?->admin_rating ?: 0)) === $i)>{{ $i }}</option>
                        @endfor
                    </select>
                    <div class="help">Оценку видит только администратор. Она сохраняется в базе данных.</div>
                </div>
                <div class="actions-row" style="margin-top:14px;">
                    <button type="submit" class="primary">Сохранить оценку</button>
                </div>
            </form>
        </div>

        <div class="card">
            <h3 class="section-title">Отметки по оплате</h3>
            <form method="post" action="{{ route('admin.bookings.flags.update', $booking) }}">
                @csrf
                <div class="field" style="margin-bottom:12px;">
                    <label class="toggle-line"><input type="checkbox" name="receipt_received" value="1" @checked($booking->receipt_received)><span>Квитанция получена</span></label>
                </div>
                <div class="field">
                    <label class="toggle-line"><input type="checkbox" name="prepayment_received" value="1" @checked($booking->prepayment_received)><span>Предоплата сделана</span></label>
                </div>
                <div class="actions-row" style="margin-top:14px;">
                    <button type="submit" class="primary">Сохранить отметки</button>
                </div>
            </form>
        </div>

        <div class="card">
            <h3 class="section-title">Подтверждение оплаты</h3>
            <form method="post" action="{{ route('admin.bookings.payments.store', $booking) }}">
                @csrf
                <div class="form-grid">
                    <div class="field">
                        <label for="type">Тип операции</label>
                        <select id="type" name="type">
                            <option value="prepayment">Предоплата</option>
                            <option value="full_payment">Полная оплата</option>
                            <option value="refund">Возврат</option>
                        </select>
                    </div>
                    <div class="field">
                        <label for="amount">Сумма</label>
                        <input id="amount" type="number" step="0.01" min="0.01" name="amount" value="{{ old('amount', $booking->prepayment_amount > 0 ? number_format((float)$booking->prepayment_amount, 2, '.', '') : number_format((float)$booking->full_amount, 2, '.', '')) }}">
                    </div>
                    <div class="field">
                        <label for="channel">Канал</label>
                        <input id="channel" type="text" name="channel" value="{{ old('channel', 'receipt_review') }}">
                    </div>
                    <div class="field full">
                        <label for="note">Комментарий</label>
                        <textarea id="note" name="note">{{ old('note') }}</textarea>
                    </div>
                </div>
                <div class="actions-row" style="margin-top:14px;">
                    <button type="submit" class="primary">Сохранить платёж</button>
                </div>
            </form>

            <form method="post" action="{{ route('admin.bookings.payments.reject', $booking) }}" style="margin-top:16px;">
                @csrf
                <div class="field">
                    <label for="reject_note">Причина отклонения квитанции</label>
                    <textarea id="reject_note" name="note" placeholder="Например: сумма не совпадает или файл нечитаемый">{{ old('reject_note') }}</textarea>
                </div>
                <div class="actions-row" style="margin-top:14px;">
                    <button type="submit" class="danger">Отклонить платёж</button>
                </div>
            </form>
        </div>

        <div class="card">
            <h3 class="section-title">Платежи</h3>
            @if ($booking->payments->isEmpty())
                <div class="empty">Подтверждённых или отклонённых платежей пока нет.</div>
            @else
                <div class="list">
                    @foreach ($booking->payments as $payment)
                        <div class="list-item">
                            <strong>{{ $payment->type }}</strong> · {{ number_format((float) $payment->amount, 2, '.', ' ') }} €
                            <div class="muted">{{ $payment->status }} · {{ $payment->paid_at?->format('d.m.Y H:i') ?: 'без даты' }}</div>
                            <div>{{ $payment->note ?: 'Без комментария' }}</div>
                        </div>
                    @endforeach
                </div>
            @endif
        </div>

        <div class="card" id="booking-documents">
            <div style="display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap;">
                <div>
                    <h3 class="section-title">Документы и квитанции гостя</h3>
                    <div class="muted">Этот блок видит только администратор. Гостю документы и квитанции не показываются.</div>
                </div>
                <a href="#booking-documents" class="secondary">Открыть папку брони</a>
            </div>

            <div class="meta-grid" style="margin-top:14px;">
                <div class="meta-row"><div class="k">Папка брони</div><div class="v"><code>{{ $bookingFolderDisplayPath }}</code></div></div>
                <div class="meta-row"><div class="k">Дата заезда</div><div class="v">{{ $booking->arrival_date?->format('d.m.Y') ?: '—' }}</div></div>
                <div class="meta-row"><div class="k">Комната</div><div class="v">{{ $booking->room?->code ?: '—' }}</div></div>
            </div>

            <div class="help" style="margin-top:12px;">
                Папка формируется автоматически по дате заезда и комнате. Если Telegram-бот или администратор положит файлы прямо в эту папку, они появятся ниже в списке после обновления страницы.
            </div>

            <form method="post" action="{{ route('admin.bookings.documents.upload', $booking) }}" enctype="multipart/form-data" style="margin-top:16px;">
                @csrf
                <div class="form-grid">
                    <div class="field">
                        <label for="document_type">Тип файла</label>
                        <select id="document_type" name="document_type" required>
                            <option value="receipt">Квитанция предоплаты</option>
                            <option value="guest_document">Документ жильца</option>
                            <option value="other">Другое</option>
                        </select>
                    </div>
                    <div class="field">
                        <label for="document">Файл</label>
                        <input id="document" type="file" name="document" accept=".jpg,.jpeg,.png,.webp,.pdf,.txt,application/pdf,image/jpeg,image/png,image/webp,text/plain" required>
                        <div class="help">JPG, PNG, WEBP, PDF или TXT до 10 МБ.</div>
                    </div>
                </div>
                <div class="actions-row" style="margin-top:14px;">
                    <button type="submit" class="primary">Загрузить в папку брони</button>
                    <a href="{{ route('admin.bookings.show', $booking) }}#booking-documents" class="secondary">Обновить список файлов</a>
                </div>
            </form>

            @php
                $documentTypeLabels = [
                    'receipt' => 'Квитанция предоплаты',
                    'guest_document' => 'Документ жильца',
                    'recognition_text' => 'Текст распознавания',
                    'other' => 'Другое',
                ];
            @endphp

            @if (empty($bookingFolderFiles))
                <div class="empty" style="margin-top:16px;">Файлы для этой брони пока не загружены.</div>
            @else
                <div class="list" style="margin-top:16px;">
                    @foreach ($bookingFolderFiles as $file)
                        <div class="list-item">
                            <strong>{{ $documentTypeLabels[$file['type']] ?? $file['type'] }}</strong> · {{ $file['original_name'] }}
                            <div class="muted">
                                {{ $file['filename'] }} · {{ $file['size_label'] }} · {{ $file['modified_label'] }}
                                @if (! $file['is_registered'])
                                    · файл из папки
                                @endif
                            </div>
                            <div class="actions-row" style="margin-top:8px;">
                                <a href="{{ route('admin.bookings.folder_files.view', [$booking, $file['filename']]) }}" target="_blank" rel="noopener">Просмотреть</a>
                                <a href="{{ route('admin.bookings.folder_files.download', [$booking, $file['filename']]) }}">Скачать</a>
                            </div>
                        </div>
                    @endforeach
                </div>
            @endif
        </div>


        <div class="card">
            <h3 class="section-title">Журнал статусов</h3>
            @if ($booking->statusLogs->isEmpty())
                <div class="empty">Журнал появится после изменения статусов.</div>
            @else
                <div class="list">
                    @foreach ($booking->statusLogs as $log)
                        <div class="list-item">
                            <strong>{{ \App\Models\Booking::statusOptions()[$log->old_status] ?? ($log->old_status ?: '—') }} → {{ \App\Models\Booking::statusOptions()[$log->new_status] ?? $log->new_status }}</strong>
                            <div class="muted">{{ $log->created_at?->format('d.m.Y H:i') }} · {{ $log->changedBy?->name ?: 'Система' }}</div>
                            <div>{{ $log->note ?: 'Без комментария' }}</div>
                        </div>
                    @endforeach
                </div>
            @endif
        </div>

        <div class="card">
            <div class="actions-row" style="justify-content:space-between; align-items:center;">
                <h3 class="section-title" style="margin:0;">Синхронизация с Google Sheets</h3>
                <form method="post" action="{{ route('admin.bookings.sync.retry', $booking) }}">
                    @csrf
                    <button type="submit" class="secondary">Повторить синхронизацию</button>
                </form>
            </div>
            @if ($booking->syncLogs->isEmpty())
                <div class="empty">Лог синхронизации ещё пуст.</div>
            @else
                <div class="list">
                    @foreach ($booking->syncLogs as $sync)
                        <div class="list-item">
                            <strong>{{ $sync->target }}</strong> · {{ $sync->status }}
                            <div class="muted">{{ $sync->synced_at?->format('d.m.Y H:i') ?: '—' }} · попыток: {{ $sync->attempts }}</div>
                            <div>{{ data_get($sync->response_json, 'message', 'Без ответа') }}</div>
                        </div>
                    @endforeach
                </div>
            @endif
        </div>
    </div>
@push('scripts')
<script>
window.PinetaConfirmationData = {
    forceLanguage: true,
    language: 'ru',
    emblemUrl: @json(asset('images/home_page/emblem.jpg')),
    hotelName: 'Hotel Pineta',
    bookingNumber: @json($booking->booking_number),
    guestName: @json($booking->guest_name),
    discountCode: @json(($booking->discount_applied && strtolower((string) $booking->source) !== 'booking') ? ($booking->discount_code ?: null) : null),
    nights: @json((int) $booking->nights),
    guests: @json((int) $booking->adults),
    childrenUnder2: @json((int) $booking->children_under_2),
    breakfast: @json((bool) $booking->breakfast),
    arrivalDate: @json($booking->arrival_date?->format('Y-m-d')),
    source: @json($booking->source),
    fullAmount: @json((float) $booking->full_amount),
    prepaymentAmount: @json((float) $booking->prepayment_amount),
    remainingAmount: @json((float) $booking->remaining_amount),
    phone: @json($booking->phone),
    confirmedAt: @json($booking->confirmed_at?->format('Y-m-d')),
};
</script>
<script src="{{ asset('assets/js/booking-confirmation.js') }}"></script>
@endpush

@endsection
