<?php

declare(strict_types=1);

namespace App\Filament\Widgets;

use App\Models\Order;
use Filament\Tables;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget as BaseWidget;

class LatestOrders extends BaseWidget
{
    protected static ?string $heading = 'سفارشات اخیر';

    protected static ?int $sort = 2;

    protected int|string|array $columnSpan = 'full';

    public function table(Table $table): Table
    {
        return $table
            ->query(Order::query()->latest()->limit(10))
            ->columns([
                Tables\Columns\TextColumn::make('order_number')
                    ->label('شماره سفارش')
                    ->searchable(),
                Tables\Columns\TextColumn::make('user.name')
                    ->label('سفارش‌دهنده')
                    ->limit(20),
                Tables\Columns\TextColumn::make('product.name')
                    ->label('محصول')
                    ->limit(20),
                Tables\Columns\TextColumn::make('total_price')
                    ->label('مبلغ')
                    ->formatStateUsing(fn ($state) => blank($state) ? null : \Illuminate\Support\Number::format((float) $state) . ' تومان'),
                Tables\Columns\TextColumn::make('status')
                    ->label('وضعیت')
                    ->badge()
                    ->formatStateUsing(fn (string $state): string => match ($state) {
                        'pending' => 'در انتظار',
                        'confirmed' => 'تایید شده',
                        'processing' => 'در حال پردازش',
                        'shipped' => 'ارسال شده',
                        'delivered' => 'تحویل داده شده',
                        'cancelled' => 'لغو شده',
                        'rejected' => 'رد شده',
                        default => $state,
                    }),
                Tables\Columns\TextColumn::make('created_at')
                    ->label('تاریخ')
                    ->jalaliDateTime('Y/m/d H:i'),
            ])
            ->paginated([10]);
    }
}
