95 lines
4.8 KiB
PHP
95 lines
4.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../includes/taxilanz.php';
|
|
app_boot();
|
|
|
|
$bookingUuid = trim((string) ($_GET['booking'] ?? ''));
|
|
$booking = $bookingUuid !== '' ? find_booking_by_uuid($bookingUuid) : null;
|
|
|
|
if (!$booking) {
|
|
http_response_code(404);
|
|
render_page_start('Reserva no encontrada', 'No se encontro la reserva solicitada.', 'home');
|
|
?>
|
|
<section class="card-shell p-5 text-center">
|
|
<div class="empty-state">
|
|
<strong>No encontramos esa reserva.</strong>
|
|
<p class="text-secondary mb-4">Vuelve al inicio para crear una nueva solicitud o revisar otras ofertas.</p>
|
|
<a class="btn btn-app-primary" href="/">Volver al inicio</a>
|
|
</div>
|
|
</section>
|
|
<?php
|
|
render_page_end();
|
|
exit;
|
|
}
|
|
|
|
$offer = find_offer_by_slug((string) $booking['offer_slug']);
|
|
$nextOffers = $offer ? related_offers($offer, 2) : [];
|
|
|
|
render_page_start(
|
|
'Reserva confirmada',
|
|
'La reserva fue registrada correctamente y ya puedes continuar explorando la siguiente recomendacion.',
|
|
'home'
|
|
);
|
|
?>
|
|
<section class="row g-4 mb-4">
|
|
<div class="col-12 col-lg-7">
|
|
<div class="card-shell p-4 p-lg-5 h-100">
|
|
<div class="section-head mb-4">
|
|
<div>
|
|
<div class="eyebrow">Estado final</div>
|
|
<h1 class="section-title mb-1">Reserva confirmada</h1>
|
|
<p class="text-secondary mb-0">Referencia <?= h($booking['uuid']) ?></p>
|
|
</div>
|
|
<span class="status-badge success"><?= h(status_label($booking['status'])) ?></span>
|
|
</div>
|
|
<div class="summary-block mb-4">
|
|
<div class="summary-line"><span>Offer</span><strong><?= h($booking['offer_title']) ?></strong></div>
|
|
<div class="summary-line"><span>Cliente</span><strong><?= h($booking['customer_name'] ?? 'Sin nombre') ?></strong></div>
|
|
<div class="summary-line"><span>Contacto</span><strong><?= h($booking['customer_email'] ?: ($booking['customer_phone'] ?: 'Pendiente')) ?></strong></div>
|
|
<div class="summary-line"><span>Personas</span><strong><?= h((string) $booking['party_size']) ?></strong></div>
|
|
<div class="summary-line"><span>Momento</span><strong><?= h(format_datetime($booking['booking_for'])) ?></strong></div>
|
|
<div class="summary-line"><span>Importe demo</span><strong><?= h(format_currency($booking['amount'])) ?></strong></div>
|
|
</div>
|
|
<div class="notice-panel mb-4">
|
|
<strong>Que se guardo</strong>
|
|
<p class="mb-0 text-secondary">La reserva, el importe estimado, la comision de demo y los eventos de inicio y finalizacion ya quedaron registrados en la base de datos.</p>
|
|
</div>
|
|
<div class="d-flex flex-column flex-sm-row gap-2">
|
|
<a class="btn btn-app-primary" href="/operations/">Ver operaciones</a>
|
|
<a class="btn btn-app-secondary" href="<?= !empty($booking['ride_uuid']) ? '/rides/confirmed.php?ride=' . urlencode((string) $booking['ride_uuid']) : '/' ?>">Volver al flujo</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-5">
|
|
<div class="card-shell p-4 p-lg-5 h-100">
|
|
<div class="section-head mb-4">
|
|
<div>
|
|
<div class="eyebrow">Siguiente micro-CTA</div>
|
|
<h2 class="section-title mb-1">Continua explorando</h2>
|
|
<p class="text-secondary mb-0">Un siguiente paso pequeño mantiene el flujo vivo y deja claro el potencial comercial del producto.</p>
|
|
</div>
|
|
</div>
|
|
<?php if ($nextOffers): ?>
|
|
<div class="stack-list">
|
|
<?php foreach ($nextOffers as $item): ?>
|
|
<a class="list-row" href="/offers/?slug=<?= urlencode($item['slug']) ?><?= !empty($booking['ride_uuid']) ? '&ride=' . urlencode((string) $booking['ride_uuid']) : '' ?>">
|
|
<div>
|
|
<strong><?= h($item['title']) ?></strong>
|
|
<div class="text-secondary small"><?= h(category_label($item['category'])) ?> · <?= h(format_currency($item['price_from'])) ?></div>
|
|
</div>
|
|
<span class="text-link">Abrir</span>
|
|
</a>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php else: ?>
|
|
<div class="empty-state compact">
|
|
<strong>No hay mas sugerencias ahora.</strong>
|
|
<p class="mb-0 text-secondary">Puedes volver al inicio para lanzar otro trayecto y generar nuevas recomendaciones.</p>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<?php render_page_end(); ?>
|