153 lines
7.7 KiB
PHP
153 lines
7.7 KiB
PHP
@extends('layouts.dashboard')
|
|
|
|
@section('content')
|
|
<div class="container mx-auto px-4 py-8">
|
|
<div class="max-w-4xl mx-auto">
|
|
@if(session('success'))
|
|
<div class="relative px-4 py-3 mb-4 text-green-700 bg-green-100 border border-green-400 rounded" id="success-alert">
|
|
<span class="block sm:inline">{{ session('success') }}</span>
|
|
<button type="button" class="absolute top-0 right-0 px-4 py-3" onclick="this.parentElement.style.display='none'">
|
|
<i class="fas fa-times"></i>
|
|
</button>
|
|
</div>
|
|
@endif
|
|
|
|
@if(session('error'))
|
|
<div class="relative px-4 py-3 mb-4 text-red-700 bg-red-100 border border-red-400 rounded" id="error-alert">
|
|
<span class="block sm:inline">{{ session('error') }}</span>
|
|
<button type="button" class="absolute top-0 right-0 px-4 py-3" onclick="this.parentElement.style.display='none'">
|
|
<i class="fas fa-times"></i>
|
|
</button>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="bg-white rounded-lg shadow-md overflow-hidden">
|
|
<div class="md:flex">
|
|
<div class="md:flex-shrink-0 md:w-1/2">
|
|
@if($barang->gambar)
|
|
<img src="{{ Storage::url($barang->gambar) }}" alt="{{ $barang->nama_barang }}"
|
|
class="w-full h-96 object-cover">
|
|
@else
|
|
<div class="w-full h-96 bg-gray-200 flex items-center justify-center">
|
|
<span class="text-gray-400 text-lg">No Image</span>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="p-8 md:w-1/2">
|
|
<div class="uppercase tracking-wide text-sm text-blue-500 font-semibold">
|
|
Detail Produk
|
|
</div>
|
|
<h1 class="mt-2 text-3xl font-bold text-gray-900">
|
|
{{ $barang->nama_barang }}
|
|
</h1>
|
|
|
|
<div class="mt-4">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<span class="text-2xl font-bold text-blue-600">
|
|
Rp {{ number_format($barang->harga, 0, ',', '.') }}
|
|
</span>
|
|
<span class="px-3 py-1 text-sm {{ $barang->stok > 0 ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800' }} rounded-full">
|
|
{{ $barang->stok > 0 ? 'Stok: ' . $barang->stok : 'Stok Habis' }}
|
|
</span>
|
|
</div>
|
|
|
|
<div class="prose prose-sm text-gray-500 mb-6">
|
|
<h3 class="text-lg font-semibold text-gray-900 mb-2">Deskripsi</h3>
|
|
<p class="whitespace-pre-line">{{ $barang->deskripsi ?: 'Tidak ada deskripsi' }}</p>
|
|
</div>
|
|
|
|
@if($barang->stok > 0)
|
|
<!-- Tombol Aksi -->
|
|
<div class="flex items-center space-x-4 mb-6">
|
|
<form action="{{ route('keranjang.tambah') }}" method="POST" class="w-full">
|
|
@csrf
|
|
<input type="hidden" name="barang_id" value="{{ $barang->id }}">
|
|
<input type="hidden" name="jumlah" value="1">
|
|
<button type="submit" class="w-full flex items-center justify-center px-6 py-3 bg-[#2C7A7B] hover:bg-[#1C6B6B] text-white rounded-lg transition-colors">
|
|
<i class="fas fa-shopping-cart mr-2"></i>
|
|
Tambah ke Keranjang
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- <div class="border-t pt-6">
|
|
<h3 class="text-lg font-semibold text-gray-900 mb-4">Buat Pesanan</h3>
|
|
<form action="{{ route('barang.checkout') }}" method="POST">
|
|
@csrf
|
|
<input type="hidden" name="barang_id" value="{{ $barang->id }}">
|
|
|
|
<div class="mb-4">
|
|
<label for="jumlah" class="block text-sm font-medium text-gray-700 mb-2">
|
|
Jumlah Pesanan
|
|
</label>
|
|
<input type="number" name="jumlah" id="jumlah"
|
|
min="1" max="{{ $barang->stok }}" value="1"
|
|
class="w-full border-gray-300 rounded-lg shadow-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500"
|
|
required>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="catatan" class="block text-sm font-medium text-gray-700 mb-2">
|
|
Catatan (Opsional)
|
|
</label>
|
|
<textarea name="catatan" id="catatan" rows="2"
|
|
class="w-full border-gray-300 rounded-lg shadow-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500"></textarea>
|
|
</div>
|
|
|
|
<div class="flex justify-between items-center">
|
|
<div class="text-sm text-gray-600">
|
|
Total: <span class="font-bold text-blue-600" id="total-harga">Rp {{ number_format($barang->harga, 0, ',', '.') }}</span>
|
|
</div>
|
|
<button type="submit"
|
|
class="bg-blue-500 hover:bg-blue-600 text-white font-semibold py-2 px-6 rounded-lg">
|
|
Checkout
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div> -->
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-6 flex justify-between">
|
|
<a href="{{ route('barang.index') }}"
|
|
class="inline-flex items-center px-4 py-2 bg-gray-500 hover:bg-gray-600 text-white rounded-lg">
|
|
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
|
</svg>
|
|
Kembali
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@push('scripts')
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const hargaBarang = Number('{{ $barang->harga }}');
|
|
const inputJumlah = document.getElementById('jumlah');
|
|
const totalHarga = document.getElementById('total-harga');
|
|
|
|
function updateTotal() {
|
|
const total = hargaBarang * inputJumlah.value;
|
|
totalHarga.textContent = 'Rp ' + total.toLocaleString('id-ID');
|
|
}
|
|
|
|
inputJumlah.addEventListener('change', updateTotal);
|
|
inputJumlah.addEventListener('input', updateTotal);
|
|
|
|
// Auto-hide alerts after 3 seconds
|
|
setTimeout(() => {
|
|
const successAlert = document.getElementById('success-alert');
|
|
const errorAlert = document.getElementById('error-alert');
|
|
|
|
if (successAlert) successAlert.style.display = 'none';
|
|
if (errorAlert) errorAlert.style.display = 'none';
|
|
}, 3000);
|
|
});
|
|
</script>
|
|
@endpush
|
|
@endsection |