Compare commits

..

No commits in common. "2d4657067a43ea44a682707481ec0c0cdf246883" and "6f96b18126b6b6e1add9e8d2bf538ec9a80e8461" have entirely different histories.

View File

@ -69,115 +69,64 @@
</div> </div>
<!-- Detail Form dari JSON --> <!-- Detail Form dari JSON -->
<div class="bg-white rounded-2xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition"> <div class="bg-white rounded-2xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition">
<h3 class="text-2xl font-semibold mb-6 text-gray-900 border-b pb-3"> <h3 class="text-2xl font-semibold mb-6 text-gray-900 border-b pb-3">
📋 Detail Form Pemesanan 📋 Detail Form Pemesanan
</h3> </h3>
@if($pelanggan->form && count($pelanggan->form) > 0) @if($pelanggan->form && count($pelanggan->form) > 0)
@php <div class="overflow-hidden rounded-lg border border-gray-200">
$fotoFields = []; <table class="min-w-full text-sm text-gray-700">
$textFields = []; <tbody class="divide-y divide-gray-200">
@foreach($pelanggan->form as $field => $value)
<tr class="hover:bg-gray-50 align-top">
<th class="px-4 py-3 font-semibold bg-gray-50 w-1/4">
{{ ucwords(str_replace('_', ' ', $field)) }}
</th>
<td class="px-4 py-3">
@if(is_array($value))
{{ implode(', ', $value) }}
foreach ($pelanggan->form as $field => $value) { {{-- Jika value adalah path atau URL gambar --}}
$isFoto = false; @elseif(
is_string($value) &&
(preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $value)
|| Str::startsWith($value, ['storage/', 'uploads/', 'images/']))
)
@php
// Cek apakah gambar disimpan di storage Laravel
$imageUrl = Str::startsWith($value, ['http://', 'https://'])
? $value
: asset($value);
@endphp
if (is_array($value)) { <a href="{{ $imageUrl }}" target="_blank" class="block mt-2">
// jika array berisi gambar <img src="{{ $imageUrl }}"
$isFoto = collect($value)->contains(function ($v) { alt="{{ $field }}"
return preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $v) class="w-40 h-40 object-cover rounded-lg border border-gray-200 shadow-sm hover:shadow-md transition">
|| Str::startsWith($v, ['storage/', 'photos/', 'uploads/', 'images/']); </a>
});
} elseif (is_string($value)) {
// jika satu gambar
$isFoto = preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $value)
|| Str::startsWith($value, ['storage/', 'photos/', 'uploads/', 'images/']);
}
if ($isFoto) { {{-- Jika value adalah URL biasa --}}
$fotoFields[$field] = $value; @elseif(is_string($value) && filter_var($value, FILTER_VALIDATE_URL))
} else { <a href="{{ $value }}" target="_blank"
$textFields[$field] = $value; class="text-blue-600 hover:text-blue-800 underline break-words">
} {{ $value }}
} </a>
$orderedFields = array_merge($textFields, $fotoFields);
@endphp
<div class="overflow-hidden rounded-lg border border-gray-200"> {{-- Jika teks biasa --}}
<table class="min-w-full text-sm text-gray-700"> @else
<tbody class="divide-y divide-gray-200"> {{ $value ?: '-' }}
@foreach($orderedFields as $field => $value) @endif
<tr class="hover:bg-gray-50 align-top"> </td>
<th class="px-4 py-3 font-semibold bg-gray-50 w-1/4"> </tr>
{{ ucwords(str_replace('_', ' ', $field)) }} @endforeach
</th> </tbody>
<td class="px-4 py-3"> </table>
{{-- Jika value adalah array (banyak foto) --}} </div>
@if(is_array($value)) @else
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3"> <p class="text-gray-500 italic mt-4">Tidak ada data form tambahan.</p>
@foreach($value as $img) @endif
@php </div>
if (Str::startsWith($img, ['http://', 'https://'])) {
$imageUrl = $img;
} elseif (Str::startsWith($img, ['storage/', 'public/'])) {
$imageUrl = asset($img);
} elseif (Str::startsWith($img, 'photos/')) {
$imageUrl = asset('storage/' . $img);
} else {
$imageUrl = asset('storage/' . $img);
}
@endphp
<a href="{{ $imageUrl }}" target="_blank">
<img src="{{ $imageUrl }}"
alt="{{ $field }}"
class="w-32 h-32 object-cover rounded-lg border border-gray-200 shadow-sm hover:shadow-md transition">
</a>
@endforeach
</div>
{{-- Jika gambar tunggal --}}
@elseif(
is_string($value) &&
(preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $value)
|| Str::startsWith($value, ['storage/', 'uploads/', 'images/', 'photos/']))
)
@php
if (Str::startsWith($value, ['http://', 'https://'])) {
$imageUrl = $value;
} elseif (Str::startsWith($value, ['storage/', 'public/'])) {
$imageUrl = asset($value);
} elseif (Str::startsWith($value, 'photos/')) {
$imageUrl = asset('storage/' . $value);
} else {
$imageUrl = asset('storage/' . $value);
}
@endphp
<a href="{{ $imageUrl }}" target="_blank" class="block mt-2">
<img src="{{ $imageUrl }}"
alt="{{ $field }}"
class="w-40 h-40 object-cover rounded-lg border border-gray-200 shadow-sm hover:shadow-md transition">
</a>
{{-- Jika URL biasa --}}
@elseif(is_string($value) && filter_var($value, FILTER_VALIDATE_URL))
<a href="{{ $value }}" target="_blank"
class="text-blue-600 hover:text-blue-800 underline break-words">
{{ $value }}
</a>
{{-- Jika teks biasa --}}
@else
{{ $value ?: '-' }}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@else
<p class="text-gray-500 italic mt-4">Tidak ada data form tambahan.</p>
@endif
</div>
</div> </div>
@endsection @endsection