141 lines
8.8 KiB
PHP
141 lines
8.8 KiB
PHP
<?php
|
|
$pageTitle = 'سبد خرید';
|
|
require __DIR__ . '/../layout/header.php';
|
|
require __DIR__ . '/../layout/navbar.php';
|
|
?>
|
|
|
|
<div class="bg-stone-100/60 py-6 border-b border-stone-200">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<h1 class="text-2xl font-extrabold text-stone-900">سبد خرید شما</h1>
|
|
<p class="text-xs text-stone-500 mt-1">بررسی اقلام انتخابی و اعمال خودکار تخفیفهای عمدهفروشی</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10">
|
|
<?php if (empty($cartData['items'])): ?>
|
|
<div class="text-center py-20 bg-white rounded-3xl border border-stone-200 p-8 shadow-sm">
|
|
<div class="w-20 h-20 rounded-full bg-amber-50 text-amber-600 flex items-center justify-center text-3xl mx-auto mb-4">
|
|
<i class="fas fa-shopping-basket"></i>
|
|
</div>
|
|
<h2 class="text-xl font-bold text-stone-800">سبد خرید شما خالی است!</h2>
|
|
<p class="text-xs text-stone-400 mt-2 max-w-sm mx-auto">میتوانید انواع بلدرچین، تخم خوراکی و نطفهدار، دان باکیفیت و ملزومات پرورش را از فروشگاه انتخاب کنید.</p>
|
|
<a href="/products" class="inline-block mt-6 px-8 py-3 rounded-xl bg-amber-500 text-stone-950 text-sm font-extrabold hover:bg-amber-600 transition shadow-md">
|
|
مشاهده و خرید محصولات
|
|
</a>
|
|
</div>
|
|
<?php else: ?>
|
|
<div class="grid grid-cols-1 lg:grid-cols-12 gap-8 items-start">
|
|
<!-- Items Table -->
|
|
<div class="lg:col-span-8 bg-white rounded-2xl border border-stone-200 overflow-hidden shadow-sm">
|
|
<div class="p-4 sm:p-6 border-b border-stone-100 flex items-center justify-between">
|
|
<span class="font-bold text-stone-900 text-sm">اقلام انتخابی (<?= \Bildirchin\Helpers::toPersianDigits(count($cartData['items'])) ?> قلم)</span>
|
|
<span class="text-xs text-amber-700 bg-amber-50 px-2.5 py-1 rounded-md font-bold"><i class="fas fa-magic ml-1"></i> تخفیف عمده خودکار فعال است</span>
|
|
</div>
|
|
|
|
<div class="divide-y divide-stone-100">
|
|
<?php foreach ($cartData['items'] as $item): ?>
|
|
<div class="p-4 sm:p-6 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
|
|
<div class="flex items-center gap-4">
|
|
<img src="<?= $item['product']['image'] ?>" class="w-16 h-16 rounded-xl object-contain bg-stone-50 p-2 border border-stone-100">
|
|
<div>
|
|
<a href="/product/<?= $item['product']['slug'] ?>" class="font-bold text-stone-900 hover:text-amber-600 transition text-sm sm:text-base block">
|
|
<?= htmlspecialchars($item['product']['name']) ?>
|
|
</a>
|
|
<div class="flex items-center gap-3 mt-1 text-xs">
|
|
<span class="text-stone-500">قیمت واحد: <?= \Bildirchin\Helpers::formatPrice($item['unit_price']) ?></span>
|
|
<?php if ($item['is_wholesale']): ?>
|
|
<span class="bg-emerald-100 text-emerald-800 text-[11px] font-bold px-2 py-0.5 rounded">
|
|
<i class="fas fa-tag ml-1"></i> نرخ عمده
|
|
</span>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quantity Controller & Total -->
|
|
<div class="flex items-center justify-between w-full sm:w-auto gap-6">
|
|
<div class="flex items-center border border-stone-200 rounded-xl bg-stone-50 p-1">
|
|
<button type="button" onclick="updateCartItem(<?= $item['product']['id'] ?>, <?= $item['quantity'] - 1 ?>)" class="w-8 h-8 rounded-lg bg-white hover:bg-stone-200 text-stone-700 flex items-center justify-center font-bold">-</button>
|
|
<input type="number" value="<?= $item['quantity'] ?>" min="1" onchange="updateCartItem(<?= $item['product']['id'] ?>, this.value)" class="w-14 text-center font-bold text-sm bg-transparent focus:outline-none">
|
|
<button type="button" onclick="updateCartItem(<?= $item['product']['id'] ?>, <?= $item['quantity'] + 1 ?>)" class="w-8 h-8 rounded-lg bg-white hover:bg-stone-200 text-stone-700 flex items-center justify-center font-bold">+</button>
|
|
</div>
|
|
|
|
<div class="text-left">
|
|
<span class="block font-black text-stone-900 text-base"><?= \Bildirchin\Helpers::formatPrice($item['total_price']) ?></span>
|
|
<?php if ($item['savings'] > 0): ?>
|
|
<span class="text-[11px] text-emerald-600 font-bold block">سود: <?= \Bildirchin\Helpers::formatPrice($item['savings']) ?></span>
|
|
<?php endif; ?>
|
|
</div>
|
|
|
|
<a href="/cart/remove?product_id=<?= $item['product']['id'] ?>" class="text-stone-400 hover:text-rose-600 transition" title="حذف">
|
|
<i class="fas fa-trash-can text-sm"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Order Summary Card -->
|
|
<div class="lg:col-span-4 bg-white rounded-2xl border border-stone-200 p-6 shadow-sm space-y-5">
|
|
<h3 class="font-extrabold text-base text-stone-900 border-b pb-3">خلاصه پیشفاکتور</h3>
|
|
|
|
<div class="space-y-3 text-xs sm:text-sm text-stone-600">
|
|
<div class="flex justify-between">
|
|
<span>مجموع قیمت کالاها:</span>
|
|
<span class="font-bold text-stone-900"><?= \Bildirchin\Helpers::formatPrice($cartData['total_retail']) ?></span>
|
|
</div>
|
|
|
|
<?php if ($cartData['total_savings'] > 0): ?>
|
|
<div class="flex justify-between text-emerald-600 font-bold bg-emerald-50 p-2.5 rounded-xl border border-emerald-200">
|
|
<span>تخفیف همکاری و عمدهفروشی:</span>
|
|
<span><?= \Bildirchin\Helpers::formatPrice($cartData['total_savings']) ?>-</span>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<div class="flex justify-between text-xs text-stone-400 pt-2 border-t">
|
|
<span>هزینه بستهبندی و ارسال:</span>
|
|
<span class="text-stone-700 font-medium">محاسبه در مرحله بعد (بر اساس مقصد)</span>
|
|
</div>
|
|
|
|
<div class="flex justify-between text-base font-black text-stone-900 pt-3 border-t">
|
|
<span>مبلغ قابل پرداخت:</span>
|
|
<span class="text-amber-800 text-lg"><?= \Bildirchin\Helpers::formatPrice($cartData['total_final']) ?></span>
|
|
</div>
|
|
</div>
|
|
|
|
<a href="/checkout" class="block w-full py-3.5 rounded-xl bg-amber-500 hover:bg-amber-600 text-stone-950 text-center font-black text-sm transition shadow-md">
|
|
ادامه و تکمیل اطلاعات سفارش <i class="fas fa-arrow-left mr-1"></i>
|
|
</a>
|
|
|
|
<a href="/products" class="block text-center text-xs text-stone-500 hover:text-amber-700 font-bold">
|
|
<i class="fas fa-plus ml-1"></i> افزودن محصولات دیگر
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
|
|
<script>
|
|
async function updateCartItem(productId, qty) {
|
|
if (qty < 0) qty = 0;
|
|
const formData = new FormData();
|
|
formData.append('product_id', productId);
|
|
formData.append('quantity', qty);
|
|
|
|
const res = await fetch('/cart/update', {
|
|
method: 'POST',
|
|
body: formData,
|
|
headers: {'X-Requested-With': 'XMLHttpRequest'}
|
|
});
|
|
const data = await res.json();
|
|
if (data.success) {
|
|
window.location.reload();
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<?php
|
|
require __DIR__ . '/../layout/footer.php';
|
|
?>
|