feat: comprehensive booking overview for confirmation

This commit is contained in:
Björn Fromme
2025-10-06 16:43:55 +02:00
parent 2f582f0548
commit b7b80296e9
4 changed files with 239 additions and 82 deletions
+175 -48
View File
@@ -7,8 +7,7 @@
<h1>Neue Buchung</h1>
<div class="grid grid-cols-3 gap-8">
<div class="col-span-2">
<div>
<h2 class="mb-6">Buchung bestätigen</h2>
{# Travel Summary #}
@@ -51,67 +50,205 @@
{% if loop.first %}<span class="text-sm text-gray-600">(Anmelder)</span>{% endif %}
</h4>
<dl class="grid grid-cols-2 gap-2 text-sm">
<dl class="grid grid-cols-2 gap-4 text-sm">
{# Personal Data #}
{% if participant.dateOfBirth %}
<div>
<dt class="text-gray-600">Geburtsdatum</dt>
<dt class="text-gray-600 font-semibold">Geburtsdatum</dt>
<dd>{{ participant.dateOfBirth|date('d.m.Y') }}</dd>
</div>
{% endif %}
{% if participant.gender %}
<div>
<dt class="text-gray-600 font-semibold">Geschlecht</dt>
<dd>{{ participant.gender == 'M' ? 'Männlich' : 'Weiblich' }}</dd>
</div>
{% endif %}
{% if participant.email %}
<div>
<dt class="text-gray-600">E-Mail</dt>
<dt class="text-gray-600 font-semibold">E-Mail</dt>
<dd>{{ participant.email }}</dd>
</div>
{% endif %}
{% if participant.mobile %}
<div>
<dt class="text-gray-600">Telefon</dt>
<dt class="text-gray-600 font-semibold">Telefon</dt>
<dd>{{ participant.mobile }}</dd>
</div>
{% endif %}
{# Selected Services #}
{% set services = [] %}
{% if participant.board is not empty %}
{% for boardItem in participant.board %}
{% set services = services|merge(['Verpflegung: ' ~ boardItem.label]) %}
{% endfor %}
{% endif %}
{% if participant.skiPass %}
{% set services = services|merge(['Skipass: ' ~ participant.skiPass.label]) %}
{% endif %}
{% if participant.rentals is not empty %}
{% for rental in participant.rentals %}
{% set services = services|merge(['Ausrüstung: ' ~ rental.label]) %}
{% endfor %}
{% endif %}
{% if participant.courses is not empty %}
{% for course in participant.courses %}
{% set services = services|merge(['Kurs: ' ~ course.label]) %}
{% endfor %}
{% endif %}
{% if participant.additionalServices is not empty %}
{% for service in participant.additionalServices %}
{% set services = services|merge(['Service: ' ~ service.label]) %}
{% endfor %}
{% endif %}
{% if participant.insurance %}
{% set services = services|merge(['Versicherung: ' ~ participant.insurance.label]) %}
{% if participant.nationality %}
<div>
<dt class="text-gray-600 font-semibold">Nationalität</dt>
<dd>{{ participant.nationality }}</dd>
</div>
{% endif %}
{% if services is not empty %}
{# Address #}
{% if participant.address and (participant.address.street or participant.address.city) %}
<div class="col-span-2">
<dt class="text-gray-600 mb-1">Gebuchte Leistungen</dt>
<dt class="text-gray-600 font-semibold">Adresse</dt>
<dd>
{% if participant.address.street %}{{ participant.address.street }}<br>{% endif %}
{% if participant.address.postCode or participant.address.city %}
{{ participant.address.postCode }} {{ participant.address.city }}<br>
{% endif %}
{% if participant.address.country %}{{ participant.address.country }}{% endif %}
</dd>
</div>
{% endif %}
{# Room Assignment #}
{% set assignedRoom = bookingCreateDto.travel.getRoomById(participant.assignedRoomId) %}
{% if assignedRoom %}
<div>
<dt class="text-gray-600 font-semibold">Zimmer</dt>
<dd>{{ assignedRoom.label }}</dd>
</div>
{% endif %}
{# Room Remarks #}
{% if participant.remarksRoom %}
<div>
<dt class="text-gray-600 font-semibold">Zimmerwunsch</dt>
<dd>{{ participant.remarksRoom }}</dd>
</div>
{% endif %}
{# Transportation Services #}
{% if participant.transportationOutbound %}
<div>
<dt class="text-gray-600 font-semibold">Anreise</dt>
<dd>{{ participant.transportationOutbound.label }}</dd>
</div>
{% endif %}
{% if participant.transportationInbound %}
<div>
<dt class="text-gray-600 font-semibold">Abreise</dt>
<dd>{{ participant.transportationInbound.label }}</dd>
</div>
{% endif %}
{# Pickup Locations #}
{% if participant.pickupOutbound %}
<div>
<dt class="text-gray-600 font-semibold">Zustieg Hinfahrt</dt>
<dd>{{ participant.pickupOutbound.label }}</dd>
</div>
{% endif %}
{% if participant.pickupInbound %}
<div>
<dt class="text-gray-600 font-semibold">Zustieg Rückfahrt</dt>
<dd>{{ participant.pickupInbound.label }}</dd>
</div>
{% endif %}
{# Parking & License Plate #}
{% if participant.parking %}
<div>
<dt class="text-gray-600 font-semibold">Parkplatz</dt>
<dd>Ja</dd>
</div>
{% endif %}
{% if participant.licensePlate %}
<div>
<dt class="text-gray-600 font-semibold">Kennzeichen</dt>
<dd>{{ participant.licensePlate }}</dd>
</div>
{% endif %}
{# Board Services #}
{% if participant.board is not empty %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold mb-1">Verpflegung</dt>
<dd>
<ul class="list-disc list-inside">
{% for service in services %}
<li>{{ service }}</li>
{% for boardItem in participant.board %}
<li>{{ boardItem.label }}</li>
{% endfor %}
</ul>
</dd>
</div>
{% endif %}
{# Ski Pass #}
{% if participant.skiPass %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold">Skipass</dt>
<dd>{{ participant.skiPass.label }}</dd>
</div>
{% endif %}
{# Rentals #}
{% if participant.rentals is not empty %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold mb-1">Ausrüstung</dt>
<dd>
<ul class="list-disc list-inside">
{% for rental in participant.rentals %}
<li>{{ rental.label }}</li>
{% endfor %}
</ul>
</dd>
</div>
{% endif %}
{# Rental Insurance #}
{% if participant.rentalInsuranceSelected and participant.rentalInsurance %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold">Leihmaterial-Versicherung</dt>
<dd>{{ participant.rentalInsurance.label }}</dd>
</div>
{% endif %}
{# Body Dimensions (if rentals selected) #}
{% if participant.rentals is not empty %}
{% if participant.height or participant.weight or participant.shoeSize %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold mb-1">Körpermaße</dt>
<dd>
{% if participant.height %}Größe: {{ participant.height }} cm{% endif %}
{% if participant.weight %}{% if participant.height %}, {% endif %}Gewicht: {{ participant.weight }} kg{% endif %}
{% if participant.shoeSize %}{% if participant.height or participant.weight %}, {% endif %}Schuhgröße: {{ participant.shoeSize }}{% endif %}
</dd>
</div>
{% endif %}
{% endif %}
{# Courses #}
{% if participant.courses is not empty %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold mb-1">Kurse</dt>
<dd>
<ul class="list-disc list-inside">
{% for course in participant.courses %}
<li>{{ course.label }}</li>
{% endfor %}
</ul>
</dd>
</div>
{% endif %}
{# Additional Services #}
{% if participant.additionalServices is not empty %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold mb-1">Zusatzleistungen</dt>
<dd>
<ul class="list-disc list-inside">
{% for service in participant.additionalServices %}
<li>{{ service.label }}</li>
{% endfor %}
</ul>
</dd>
</div>
{% endif %}
{# Insurance #}
{% if participant.insurance %}
<div class="col-span-2">
<dt class="text-gray-600 font-semibold">Reiseversicherung</dt>
<dd>{{ participant.insurance.label }}</dd>
</div>
{% endif %}
</dl>
</div>
{% endfor %}
@@ -159,15 +296,5 @@
</div>
{{ form_end(form) }}
</div>
<div id="booking-summary">
{% include 'booking/_summary.html.twig' with {
'bookingCreateDto': bookingCreateDto,
'participantCount': participantsCount,
'groupedSelectedRooms': groupedSelectedRooms,
'assignmentCounts': assignmentCounts
} %}
</div>
</div>
{% endblock %}