mein-sterntours/resources/views/booking/_detail_drafs.blade.php
2026-01-23 17:34:40 +01:00

396 lines
25 KiB
PHP
Executable file

<div class="card mb-2">
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingOrganisation"
aria-expanded="false" aria-controls="collapseBookingOrganisation">
<strong style="line-height: 1.6em">Organisation</strong>
</h6>
<div class="collapse" id="collapseBookingOrganisation">
<div class="card-body px-2 py-2">
{{-- Wenn keine Organisation vorhanden ist --}}
@if (
(!$booking->booking_draft_items || $booking->booking_draft_items->count()) == 0 &&
(!$booking->arrangements || $booking->arrangements->count() == 0))
<div class="alert alert-warning mb-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<i class="fa fa-info-circle"></i>
<strong>Keine Organisation vorhanden</strong>
<br>
<small>Laden Sie eine Vorlage, um schnell mit der Organisation zu beginnen.</small>
</div>
<div class="d-flex align-items-center">
<select class="custom-select custom-select-sm mr-2" name="draft_id" id="draft_selector"
style="min-width: 200px;">
<option value="">Vorlage auswählen...</option>
@php
$drafts = \App\Models\Draft::where('active', true)->orderBy('name')->get();
@endphp
@foreach ($drafts as $draft)
<option value="{{ $draft->id }}">{{ $draft->name }}</option>
@endforeach
</select>
<button type="submit" name="action" value="loadDraftToBooking"
class="btn btn-sm btn-primary" id="load_draft_btn" disabled
onclick="return confirm('{{ __('Vorlage laden? Bestehende Organisation wird überschrieben.') }}');">
<i class="fa fa-download"></i> Vorlage laden
</button>
</div>
</div>
</div>
<hr>
<div class="alert alert-info">
<div>
<i class="fa fa-info-circle"></i>
<strong>Leitungen hinzufügen</strong>
<br>
<small>Alternativ können Sie die Leitungen individualisiert hinzufügen.</small>
</div>
</div>
<script>
// Handler für neue Buchungen ohne Organisation
var draftSelectorNew = document.getElementById('draft_selector');
var loadBtnNew = document.getElementById('load_draft_btn');
if (draftSelectorNew && loadBtnNew) {
draftSelectorNew.addEventListener('change', function() {
loadBtnNew.disabled = !this.value;
});
}
</script>
{{-- <div class="float-right pr-2 pb-2">
<div class="mb-2">
<select class="custom-select custom-select-sm" name="draft_id" id="draft_selector_existing"
style="min-width: 150px; display: inline-block;">
<option value="">Vorlage laden...</option>
@php
$drafts = \App\Models\Draft::where('active', true)->orderBy('name')->get();
@endphp
@if (isset($drafts))
@foreach ($drafts as $draft)
<option value="{{ $draft->id }}">{{ $draft->name }}</option>
@endforeach
@endif
</select>
<button type="submit" name="action" value="loadDraftToBooking"
class="btn btn-sm btn-outline-secondary ml-1" id="load_draft_existing_btn" disabled
onclick="return confirm('{{ __('Vorlage laden? Bestehende Organisation wird überschrieben.') }}');">
<i class="fa fa-download"></i>
</button>
</div>
</div>
// Handler für bestehende Buchungen
<script>
var draftSelectorExisting = document.getElementById('draft_selector_existing');
var loadBtnExisting = document.getElementById('load_draft_existing_btn');
if (draftSelectorExisting && loadBtnExisting) {
draftSelectorExisting.addEventListener('change', function() {
loadBtnExisting.disabled = !this.value;
});
}
</script>
--}}
@endif
@if ($booking->arrangements && $booking->arrangements->count() > 0)
<div class="mb-4">
<div class="d-flex justify-content-between align-items-center mb-3">
<h6 class="text-muted mb-0">
<i class="fa fa-history"></i> Alte Arrangements
<span class="badge badge-info">{{ $booking->arrangements->count() }}</span>
</h6>
@if ($booking->arrangements->count() > 0)
<button type="submit" name="action" value="convertArrangementsToDrafts"
class="btn btn-sm btn-outline-primary"
onclick="return confirm('{{ __('Alle ' . $booking->arrangements->count() . ' Arrangements in die neue Draft-Struktur übernehmen? Dies kann nicht rückgängig gemacht werden.') }}');">
<i class="fa fa-exchange-alt"></i> In neue Struktur übernehmen
</button>
@endif
</div>
<div class="table-responsive">
<table class="table table-sm mb-0" style="min-width: 1080px">
<thead class="thead-light">
<tr>
<th style="width: 1em">#</th>
<th>Typ</th>
<th style="width: 9em">Datum von</th>
<th style="width: 9em">Datum bis</th>
<th>Daten</th>
<th style="width: 8em">Status</th>
</tr>
</thead>
@php($arr_i = 1)
@foreach ($booking->arrangements->sortByDesc('view_position') as $arrangement)
<tbody style="background-color: rgba(248, 249, 250, 1)">
<tr
@if ($arrangement->arrangement_type && $arrangement->arrangement_type->color) style="background-color: {{ $arrangement->arrangement_type->color }}" @endif>
<td>{{ $arr_i++ }}</td>
<td>
@if ($arrangement->arrangement_type)
{{ $arrangement->arrangement_type->name ?? $arrangement->type_s }}
@else
{{ $arrangement->type_s }}
@endif
</td>
<td>
@if ($arrangement->begin)
{{ $arrangement->begin->format('d.m.Y') }}
@endif
</td>
<td>
@if ($arrangement->end)
{{ $arrangement->end->format('d.m.Y') }}
@endif
</td>
<td>
@if ($arrangement->data_s)
<small class="text-muted">{{ $arrangement->getDataS() }}</small>
@endif
</td>
<td>
@if ($arrangement->in_pdf)
<span class="badge badge-success">Im PDF</span>
@else
<span class="badge badge-secondary">Nicht im PDF</span>
@endif
</td>
</tr>
</tbody>
@endforeach
</table>
</div>
</div>
@endif
@if (!$booking->arrangements || $booking->arrangements->count() == 0)
@php($i = 1)
<div class="float-right pr-2 pb-2">
<div class="input-group">
<select class="custom-select small-select" name="add_draft_items_up_number">
{!! HTMLHelper::getRangeOptions(1, 30, '') !!}
</select>
<span class="input-group-append">
<button type="submit" name="action" value="addItemUp" class="btn btn-sm btn-primary"><i
class="fa fa-plus"></i> Neue Leistung hinzufügen <i
class="fa fa-arrow-up"></i></button>
</span>
</div>
<button type="button" name="" class="btn btn-sm btn-info mt-2" data-toggle="modal"
data-target="#modals-change-travel-dates"><i class="fa fa-sync"></i> Datum der Reise ändern
</button>
</div>
<div class="text-left pl-2">
<button type="submit" name="action" value="saveAll"
class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{ route('requests') }}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
<div class="table-responsive mb-4">
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
<thead class="thead-dark">
<tr>
<th style="width: 1em"></th>
<th style="width: 1em">#</th>
<th>Leistung</th>
<th style="width: 9em">Datum von</th>
<th style="width: 9em">Datum bis</th>
<th style="width: 15em">Teilnehmer/EP</th>
<th style="width: 15em">Kinder/EP</th>
<th style="width: 8em">#</th>
</tr>
</thead>
@foreach ($booking->booking_draft_items as $booking_draft_item)
<tbody class="draft_item_tbody" style="background-color: rgba(218, 218, 229, 1)">
<tr
@if ($booking_draft_item->draft_type) style="background-color: {{ $booking_draft_item->draft_type->color }}" @endif>
<td>
<span
class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
<select class="selectpicker" data-style="btn-light"
name="draft_item[{{ $booking_draft_item->id }}][draft_type_id]"
id="draft_item_{{ $booking_draft_item->id }}_draft_type_id"
data-live-search="true" required>
<option value="" disabled>Vorlagen-Typ*</option>
{!! HTMLHelper::getDraftTypes($booking_draft_item->draft_type_id) !!}
</select>
</td>
<td>
{{ Form::text('draft_item[' . $booking_draft_item->id . '][start_date]', $booking_draft_item->start_date, ['placeholder' => __('Start Datum'), 'class' => 'form-control datepicker-base', 'id' => 'draft_item_' . $booking_draft_item->id . '_start_dat']) }}
</td>
<td>
{{ Form::text('draft_item[' . $booking_draft_item->id . '][end_date]', $booking_draft_item->end_date, ['placeholder' => __('End Datum'), 'class' => 'form-control datepicker-base', 'id' => 'draft_item_' . $booking_draft_item->id . '_end_date']) }}
</td>
@if (in_array($booking_draft_item->draft_type_id, [24, 26, 30, 31, 32, 33, 34, 35, 36, 37, 41, 42]))
<td>
<div class="input-group">
<select class="custom-select"
name="draft_item[{{ $booking_draft_item->id }}][adult]"
id="draft_item_{{ $booking_draft_item->id }}_adult">
<option value="">0</option>
{!! HTMLHelper::getRangeOptions($booking_draft_item->adult, 20, '') !!}
</select>
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price_adult]', $booking_draft_item->price_adult, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price_adult', 'maxlength' => 10]) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td>
<div class="input-group">
<select class="custom-select"
name="draft_item[{{ $booking_draft_item->id }}][children]"
id="draft_item_{{ $booking_draft_item->id }}_children">
<option value="">0</option>
{!! HTMLHelper::getRangeOptions($booking_draft_item->children, 20, '') !!}
</select>
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price_children]', $booking_draft_item->price_children, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price_children']) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
@else
<td>-</td>
<td>-</td>
@endif
<td>
<button type="button" name=""
value="up_{{ $booking_draft_item->id }}"
class="btn btn-xs btn-primary py-0 move-up-btn"><i
class="fa fa-arrow-up"></i> </button>
<button type="button" name=""
value="down_{{ $booking_draft_item->id }}"
class="btn btn-xs btn-primary mr-2 move-down-btn"><i
class="fa fa-arrow-down"></i> </button>
<a class="text-danger"
href="{{ route('booking_draft_item_delete', [$booking_draft_item->id]) }}"
onclick="return confirm('{{ __('Wirklich löschen?') }}');"><i
class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr @if ($booking_draft_item->draft_type) style="background-color: {{ $booking_draft_item->draft_type->color }}" @endif
class="border-none">
@if (in_array($booking_draft_item->draft_type_id, [36, 37]))
<td colspan="3">
<select class="custom-select"
name="draft_item[{{ $booking_draft_item->id }}][days_duration]"
id="draft_item_{{ $booking_draft_item->id }}_days_duration">
<option value="">0 Tage</option>
{!! HTMLHelper::getRangeOptions($booking_draft_item->days_duration, 40, ' Tage') !!}
</select>
</td>
<td colspan="4">
@elseif(in_array($booking_draft_item->draft_type_id, [38, 39, 40]))
<td colspan="3">
<div class="input-group">
@if (in_array($booking_draft_item->draft_type_id, [38]))
<select class="custom-select"
name="draft_item[{{ $booking_draft_item->id }}][days_duration]"
id="draft_item_{{ $booking_draft_item->id }}_days_duration">
<option value="">0 Tage</option>
{!! HTMLHelper::getRangeOptions($booking_draft_item->days_duration, 40, ' T.') !!}
</select>
@endif
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price]', $booking_draft_item->price, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price']) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td colspan="4">
@else
<td colspan="7">
@endif
{{ Form::textarea('draft_item[' . $booking_draft_item->id . '][service]', $booking_draft_item->service, ['placeholder' => __('Leistungen'), 'class' => 'form-control autoExpand', 'id' => 'draft_item_' . $booking_draft_item->id . '_service', 'rows' => '1', 'data-min-rows' => '1']) }}
</td>
<td>
<div style="display: inline-flex">
<label class="custom-control custom-checkbox mt-2"
style="margin-right: 10px;">
{!! Form::checkbox('draft_item[' . $booking_draft_item->id . '][in_pdf]', 1, $booking_draft_item->in_pdf, [
'class' => 'custom-control-input',
]) !!}
<span class="custom-control-label">{{ __('PDF') }}</span>
</label>
</div>
<div style="display: inline-flex">
<label class="custom-control custom-checkbox mt-2" style="">
{!! Form::checkbox('draft_item_delete[' . $booking_draft_item->id . ']', 1, 0, [
'class' => 'custom-control-input color-danger',
]) !!}
<span class="custom-control-label">&nbsp;</span>
</label>
</div>
</td>
</tr>
</tbody>
@endforeach
</table>
</div>
<div class="float-right pr-2 text-right pb-2">
<div class="d-block float-right">
<div class="input-group">
<select class="custom-select small-select" name="add_draft_items_down_number">
{!! HTMLHelper::getRangeOptions(1, 30, '') !!}
</select>
<span class="input-group-append">
<button type="submit" name="action" value="addItemDown"
class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neue Leistung hinzufügen
<i class="fa fa-arrow-down"></i></button>
</span>
</div>
</div>
<div class="d-block">
<button type="button" name="" value="" class="mt-2 btn btn-sm btn-warning"
onclick="selectAllForDeletion()">
<i class="fa fa-check-square"></i> Alle Leistungen zum Löschen markieren <i
class="fa fa-trash"></i></button>
<button type="submit" name="action" value="deleteAllChecked"
class="mt-2 btn btn-sm btn-danger"
onclick="return confirm('{{ __('Wirklich alle ausgewählten Leistungen löschen?') }}');">
<i class="fa fa-check-circle"></i> alle ausgewählten Leistungen löschen <i
class="fa fa-trash"></i></button>
</div>
</div>
<div class="text-left mt-3 pl-2">
<button type="submit" name="action" value="saveAll"
class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{ route('requests') }}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
@endif
</div>
</div>
</div>
<script>
function selectAllForDeletion() {
// Alle Checkboxes mit dem Namen draft_item_delete[...] finden und markieren
const checkboxes = document.querySelectorAll('input[name^="draft_item_delete["]');
checkboxes.forEach(function(checkbox) {
checkbox.checked = true;
});
// Optional: Eine Bestätigungsnachricht anzeigen
alert('Alle Leistungen wurden zum Löschen markiert.');
}
</script>