Files

318 lines
12 KiB
Twig

{% form_theme form 'forms_admin.html.twig' %}
{{ form_start(form) }}
<div class="grid lg:grid-cols-2 lg:gap-x-8 items-start">
<div class="grid lg:grid-cols-2 gap-y-4 lg:gap-x-4">
<div class="lg:col-span-2">
{{ form_row(form.name) }}
</div>
{{ form_row(form.calendarCode) }}
{{ form_row(form.cmsCode) }}
{{ form_row(form.productCode) }}
{{ form_row(form.maxAdolescentAge) }}
{{ form_row(form.currency) }}
{{ form_row(form.country) }}
</div>
{% if cmsData is not null and cmsData.name is not null %}
<div class="space-y-4">
{% if cmsData.images.resized.m | length > 0 %}
{% set image = cmsData.images.resized.m[0] %}
<div class="max-w-64">
<img src="{{ image.url }}" alt="{{ image.alt }}" class="block w-full h-auto">
</div>
{% endif %}
<div>
<strong>{{ cmsData.name }}</strong>
<br>
{{ cmsData.address | default('-') | nl2br }}
</div>
</div>
{% else %}
<div class="space-y-4">
<div class="max-w-64">
<svg class="w-full h-auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M4 5V19H20V7H11.5858L9.58579 5H4ZM12.4142 5H21C21.5523 5 22 5.44772 22 6V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H10.4142L12.4142 5ZM10 10.5C10 11.3284 9.32843 12 8.5 12C7.67157 12 7 11.3284 7 10.5C7 9.67157 7.67157 9 8.5 9C9.32843 9 10 9.67157 10 10.5ZM18 17L14 11L7 17H18Z"></path></svg>
</div>
<div>
<strong>Hotel-Code falsch oder nicht in TYPO3 angelegt</strong>
</div>
</div>
{% endif %}
</div>
<div class="flex justify-between pt-8">
<a href="{{ path('app_admin_accommodation') }}" class="button button--secondary button--small">
zurück
</a>
<button type="submit" class="button button--primary button--small">
speichern
</button>
</div>
{{ form_rest(form) }}
{{ form_end(form) }}
<hr class="my-8">
<twig:calendar :accommodation="accommodation"/>
<hr class="my-8">
<section id="prices">
<h2 class="text-xl font-bold">
Preise
</h2>
<div class="data-table-wrapper mb-4">
<div class="data-table-wrapper__inner text-sm">
<table class="data-table">
<thead>
<tr>
<th>
von
</th>
<th>
bis
</th>
<th>
Typ
</th>
<th>
Saison
</th>
<th>
Pax bis
</th>
<th>
Mindestmiete pro Nacht
</th>
<th>
weitere Personen pro Nacht
</th>
<th>
Unterbel.
</th>
<th>
Kurzzeit
</th>
<th></th>
</tr>
</thead>
<tbody>
{% for price in accommodation.accommodationPrices %}
<tr>
<td>
{{ price.dateFrom | date('d.m.Y') }}
</td>
<td>
{{ price.dateTo | date('d.m.Y') }}
</td>
<td>
{% if price.type is not null %}
{% if price.type.value == 'discount' %}
{{ icon('discount', 'w-5 h-5') }}
{% elseif price.type.value == 'override' %}
{{ icon('stack', 'w-5 h-5') }}
{% endif %}
{% endif %}
</td>
<td>
{{ price.season.token | trans }}
</td>
<td>
{{ price.includedPax }}
</td>
<td>
{{ (price.pricePerNight / 100) | format_currency(accommodation.currency) }}
</td>
<td>
{{ (price.priceAdditionalPerson / 100) | format_currency(accommodation.currency) }}
</td>
<td>
{% if price.acceptUndersubscription %}
{{ icon('check', 'w-4 h-4') }}
{% endif %}
</td>
<td>
{% if price.acceptShortterm %}
{{ icon('check', 'w-4 h-4') }}
{% endif %}
</td>
<td class="text-right">
<twig:dropdown>
<twig:dropdown:link url="{{ path('app_admin_accommodationprice_edit', { 'id': price.id }) }}">
bearbeiten
</twig:dropdown:link>
<twig:dropdown:link url="{{ path('app_admin_accommodationprice_duplicate', { 'id': price.id }) }}">
duplizieren
</twig:dropdown:link>
<twig:dropdown:hxbutton url="{{ path('app_admin_accommodationprice_delete', { 'id': price.id }) }}" warning>
löschen
</twig:dropdown:hxbutton>
</twig:dropdown>
</td>
</tr>
{% else %}
<tr>
<td colspan="7" class="text-center">
Keine Daten
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="flex justify-end">
<a href="{{ path('app_admin_accommodationprice_create', { 'id': accommodation.id }) }}" class="button button--primary button--small">
neu
</a>
</div>
</section>
<hr class="my-8">
<section id="board-services">
<h2 class="text-xl font-bold">
Verpflegungsleistungen
</h2>
<div class="data-table-wrapper mb-4">
<div class="data-table-wrapper__inner text-sm">
<table class="data-table">
<thead>
<tr>
<th>
Datums-Bereich
</th>
<th>
Bezeichnung
</th>
<th>
Preis pro Person/Nacht
</th>
<th></th>
</tr>
</thead>
<tbody>
{% for service in boardServices %}
<tr>
<td>
{{ service.dateFrom | date('d.m.Y') }} - {{ service.dateTo | date('d.m.Y') }}
</td>
<td>
{{ service.label }}
</td>
<td>
{{ (service.price / 100) | format_currency(accommodation.currency) }}
</td>
<td class="text-right">
<twig:dropdown>
<twig:dropdown:link url="{{ path('app_admin_boardservice_edit', { 'id': service.id }) }}">
bearbeiten
</twig:dropdown:link>
<twig:dropdown:link url="{{ path('app_admin_boardservice_duplicate', { 'id': service.id }) }}">
duplizieren
</twig:dropdown:link>
<twig:dropdown:hxbutton url="{{ path('app_admin_boardservice_delete', { 'id': service.id }) }}" warning>
löschen
</twig:dropdown:hxbutton>
</twig:dropdown>
</td>
</tr>
{% else %}
<tr>
<td colspan="4" class="text-center">
Keine Daten
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="flex justify-end">
<a href="{{ path('app_admin_boardservice_create', { 'id': accommodation.id }) }}" class="button button--primary button--small">
neu
</a>
</div>
</section>
<hr class="my-8">
<section id="additional-services" {{ stimulus_controller('sortable', {
url: path('app_admin_accommodation_additionalservices_order', { id: accommodation.id })
}) }}>
<h2 class="text-xl font-bold">
Optionale Zusatzleistungen
</h2>
<p class="text-sm text-gray-500 mb-2">
Die Reihenfolge wird per Drag &amp; Drop festgelegt und gilt auch für das Buchungsformular.
</p>
<div class="data-table-wrapper mb-4">
<div class="data-table-wrapper__inner text-sm">
<table class="data-table">
<thead>
<tr>
<th class="w-8"></th>
<th>
Datums-Bereich
</th>
<th>
Bezeichnung
</th>
<th>
Preistyp
</th>
<th>
Preis
</th>
<th></th>
</tr>
</thead>
<tbody {{ stimulus_target('sortable', 'list') }}>
{% for service in additionalServices %}
<tr {{ stimulus_target('sortable', 'item') }} data-sortable-id="{{ service.id }}">
<td class="cursor-grab text-gray-400" {{ stimulus_target('sortable', 'handle') }}>
{{ icon('draggable', 'w-4 h-4') }}
</td>
<td>
{{ service.dateFrom | date('d.m.Y') }} - {{ service.dateTo | date('d.m.Y') }}
</td>
<td>
{{ service.label }}
</td>
<td>
{{ service.type.label | trans }}
</td>
<td>
{{ (service.price / 100) | format_currency(accommodation.currency) }}
</td>
<td class="text-right">
<twig:dropdown>
<twig:dropdown:link url="{{ path('app_admin_additionalservice_edit', { 'id': service.id }) }}">
bearbeiten
</twig:dropdown:link>
<twig:dropdown:link url="{{ path('app_admin_additionalservice_duplicate', { 'id': service.id }) }}">
duplizieren
</twig:dropdown:link>
<twig:dropdown:hxbutton url="{{ path('app_admin_additionalservice_delete', { 'id': service.id }) }}" warning>
löschen
</twig:dropdown:hxbutton>
</twig:dropdown>
</td>
</tr>
{% else %}
<tr>
<td colspan="6" class="text-center">
Keine Daten
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="flex items-center justify-between">
<span class="text-sm text-gray-500" {{ stimulus_target('sortable', 'status') }}></span>
<a href="{{ path('app_admin_additionalservice_create', { 'id': accommodation.id }) }}" class="button button--primary button--small">
neu
</a>
</div>
</section>