50 lines
1.7 KiB
PHP
50 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Member;
|
|
|
|
use App\Models\Order;
|
|
use Illuminate\Contracts\View\View;
|
|
use Livewire\Attributes\Layout;
|
|
use Livewire\Attributes\Title;
|
|
use Livewire\Component;
|
|
|
|
#[Title('Riwayat Pesanan')]
|
|
#[Layout('components.layouts.member')]
|
|
class OrderHistory extends Component
|
|
{
|
|
public array $orders = [];
|
|
|
|
public function mount(): void
|
|
{
|
|
$this->orders = Order::where('customer_id', auth()->user()->customer->id)
|
|
->with(['items.orderable'])
|
|
->latest()
|
|
->get()
|
|
->map(function ($order) {
|
|
$order->status_color = $order->status->color();
|
|
$order->status_label = $order->status->label();
|
|
$order->formatted_created_at = formatDateLocalized($order->created_at);
|
|
$order->formatted_total = formatCurrencyNumber($order->total, 'Rp');
|
|
$order->total_items_count = $order->items->count();
|
|
$order->preview_items = $order->items->take(2)->map(function ($item) {
|
|
return [
|
|
'name' => $item->orderable->name ?? 'Unknown Item',
|
|
'quantity_label' => ! empty($item->quality) ? $item->quality : 'x'.$item->quantity,
|
|
];
|
|
});
|
|
$order->remaining_items_count = max(0, $order->items->count() - 2);
|
|
|
|
return $order;
|
|
})
|
|
->toArray();
|
|
}
|
|
|
|
public function render(): View
|
|
{
|
|
return view('livewire.member.order-histories', [
|
|
'pageTitle' => 'Riwayat Pesanan',
|
|
'pageDescription' => 'Lihat riwayat pesanan dan status pembayaran Anda.',
|
|
]);
|
|
}
|
|
}
|