WIP: Sicherheitsnetz vor Phase-1-R\u00fcckbau

Enth\u00e4lt gemischt: Laravel-10-Upgrade + Phase 1 (Contacts-Modul, Duplicats-Commands,
Soft-Delete+Merge-Fields) + Phase 2 Code-Umstellungen (inquiry_id, $table='contacts'/'inquiries')
+ Offers-Modul (Migrationen, Models, offer_id in Booking, offer-Disk in filesystems.php).

Phase 2 + Offers werden im folgenden Commit nach dev/backups/phase2-offers-2026-04-17/
verschoben, damit der Workspace auf Phase-1-only (= Test-System-Stand) reduziert ist
und direkt auf Live deploybar wird.

Tarball-Backup zus\u00e4tzlich unter: ../backups-safety/workspace-pre-phase1-rollback-2026-04-17.tar.gz

Made-with: Cursor
This commit is contained in:
Phase-1-Rollback-Agent 2026-04-17 13:40:31 +00:00
parent 389d5d1820
commit e3dc1afd8e
165 changed files with 21914 additions and 3516 deletions

View file

@ -0,0 +1,122 @@
@php $modal = $modal ?? false; @endphp
@if(!$modal)
<div class="card mb-2 border-primary">
<h6 class="card-header bg-primary text-white py-2"
data-toggle="collapse" data-target="#collapseContactHistory"
aria-expanded="false" aria-controls="collapseContactHistory">
<strong style="line-height: 1.6em">
Anfragen <span class="badge badge-secondary">{{ $contact->leads->count() }}</span>
</strong>
&nbsp;|&nbsp;
<strong style="line-height: 1.6em">
Buchungen <span class="badge badge-secondary">{{ $contact->bookings->count() }}</span>
</strong>
</h6>
<div class="collapse" id="collapseContactHistory">
<div class="card-body">
@endif
{{-- Anfragen --}}
@if($contact->leads->isNotEmpty())
<h6 class="text-muted mb-2">{{ __('Anfragen') }}</h6>
<div class="table-responsive">
<table class="table table-striped table-sm mb-4">
<thead>
<tr>
<th style="max-width: 80px;">{{ __('ID') }}</th>
<th>{{ __('Sachbearbeiter') }}</th>
<th>{{ __('Status') }}</th>
<th>{{ __('Anfrage-Datum') }}</th>
</tr>
</thead>
<tbody>
@foreach($contact->leads as $lead)
<tr>
<td>
<a href="{{ route('lead_detail', [$lead->id]) }}" class="btn icon-btn btn-sm btn-primary" target="{{ $modal ? '_blank' : '_self' }}">
<span class="fa fa-edit"></span>
</a>
{{ $lead->id }}
</td>
<td>
@if($lead->sf_guard_user_id && $lead->sf_guard_user)
{{ $lead->sf_guard_user->first_name }} {{ $lead->sf_guard_user->last_name }}
@endif
</td>
<td>{!! $lead->getStatusBadge() !!}</td>
<td>{{ _format_date($lead->request_date) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@else
<p class="text-muted small mb-4">{{ __('Keine Anfragen vorhanden.') }}</p>
@endif
<hr class="my-3">
{{-- Buchungen --}}
@if($contact->bookings->isNotEmpty())
<h6 class="text-muted mb-2">{{ __('Buchungen') }}</h6>
<div class="table-responsive">
<table class="table table-striped table-sm">
<thead>
<tr>
<th style="max-width: 80px;">{{ __('ID') }}</th>
<th>{{ __('Reiseland') }}</th>
<th>{{ __('Programm') }}</th>
<th>{{ __('Anreise') }}</th>
<th>{{ __('Abreise') }}</th>
<th>{{ __('Sachbearbeiter') }}</th>
<th>{{ __('Status') }}</th>
<th>{{ __('Datum') }}</th>
</tr>
</thead>
<tbody>
@foreach($contact->bookings as $booking)
<tr>
<td>
<a href="{{ route('booking_detail', [$booking->id]) }}" class="btn icon-btn btn-sm btn-primary" target="{{ $modal ? '_blank' : '_self' }}">
<span class="fa fa-edit"></span>
</a>
{{ $booking->id }}
</td>
<td>
@if($booking->travel_country_id && $booking->travel_country)
{{ $booking->travel_country->name }}
@endif
</td>
<td>
@if($booking->travelagenda_id && $booking->travel_agenda)
{{ $booking->travel_agenda->name }}
@endif
</td>
<td>{{ _format_date($booking->start_date) }}</td>
<td>{{ _format_date($booking->end_date) }}</td>
<td>
@if($booking->sf_guard_user_id && $booking->sf_guard_user)
{{ $booking->sf_guard_user->first_name }} {{ $booking->sf_guard_user->last_name }}
@endif
</td>
<td>
@if($booking->lead)
{!! $booking->lead->getStatusBadge($booking) !!}
@endif
</td>
<td>{{ _format_date($booking->booking_date) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@else
<p class="text-muted small">{{ __('Keine Buchungen vorhanden.') }}</p>
@endif
@if(!$modal)
</div>
</div>
</div>
@endif