<?php
/*
    * Created by VahabDev in Aparat Live
    * Website: https://pourfi.ir
    * Aparat Live: https://www.aparat.com/vahabdev/live
    * Aparat Channel: https://www.aparat.com/vahabdev
    * Rubika Channel: https://rubika.ir/vahabdev
    * Donate: https://reymit.ir/vahabdev
    * Telegram: https://t.me/vahabdev
*/


namespace App\Filament\Resources\Orders\Tables;

use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;

class OrdersTable
{
    public static function configure(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('id')
                    ->label('شناسه'),
                TextColumn::make('clients.firstname')
                    ->label('کاربر'),
                TextColumn::make('products.name')
                    ->label('محصول'),

                TextColumn::make('status')
                    ->label('وضعیت')
                    ->badge()
                    ->formatStateUsing(fn ($record) => $record->status_label) // نمایش متن فارسی از مدل
                    ->color(fn (string $state): string => match ($state) {
                        'pending' => 'warning',   // نارنجی/زرد
                        'completed' => 'success', // سبز
                        'cancelled' => 'danger',  // قرمز
                        default => 'gray',
                    }),

                TextColumn::make('total_price')
                    ->label('مبلغ')
                    ->formatStateUsing(fn ($state): string => number_format((float)$state) . ' تومان'),

                TextColumn::make('status_payment')
                    ->label('وضعیت پرداخت')
                    ->badge()
                    ->formatStateUsing(fn ($record) => $record->status_payment_label) // نمایش متن فارسی از مدل
                    ->color(fn (string $state): string => match ($state) {
                        'Paid' => 'success',   // سبز
                        'UnPaid' => 'danger',  // قرمز
                        default => 'gray',
                    }),

                TextColumn::make('payment_date')
                    ->label('تاریخ پرداخت'),
            ])
            ->filters([
                SelectFilter::make('status')->label('فیلتر وضعیت')->options([
                    'pending' => 'در انتظار',
                    'completed' => 'فعال',
                    'cancelled' => 'کنسل شده',
                ]),
            ])
            ->recordActions([
                EditAction::make(),
            ])
            ->toolbarActions([
                BulkActionGroup::make([
                    DeleteBulkAction::make(),
                ]),
            ]);
    }
}
