<?php

namespace App\Filament\Resources\OrderResource\RelationManagers;

use App\Models\ProductVariant;
use Filament\Actions;
use Filament\Forms;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;

class ItemsRelationManager extends RelationManager
{
    protected static string $relationship = 'items';

    protected static ?string $title = 'أصناف الطلب';

    protected static ?string $modelLabel = 'صنف';

    public function form(Schema $schema): Schema
    {
        return $schema
            ->components([
                Forms\Components\Select::make('variant_id')
                    ->label('النقشة')
                    ->options(
                        ProductVariant::with('product')
                            ->where('is_active', true)
                            ->get()
                            ->mapWithKeys(fn ($v) => [$v->id => $v->product->name . ' - ' . $v->pattern_name . ' (' . $v->sku . ')'])
                    )
                    ->searchable()
                    ->required(),

                Forms\Components\TextInput::make('quantity')
                    ->label('الكمية')
                    ->numeric()
                    ->required()
                    ->minValue(1),

                Forms\Components\TextInput::make('unit_price')
                    ->label('سعر الوحدة (ج.م)')
                    ->numeric()
                    ->prefix('ج.م')
                    ->required(),

                Forms\Components\TextInput::make('cost_price')
                    ->label('سعر التكلفة (ج.م)')
                    ->numeric()
                    ->prefix('ج.م')
                    ->required(),
            ]);
    }

    public function table(Table $table): Table
    {
        return $table
            ->recordTitleAttribute('id')
            ->columns([
                Tables\Columns\TextColumn::make('variant.product.name')
                    ->label('المنتج'),

                Tables\Columns\TextColumn::make('variant.pattern_name')
                    ->label('النقشة'),

                Tables\Columns\TextColumn::make('variant.sku')
                    ->label('SKU'),

                Tables\Columns\TextColumn::make('quantity')
                    ->label('الكمية'),

                Tables\Columns\TextColumn::make('unit_price')
                    ->label('سعر الوحدة')
                    ->money('EGP'),

                Tables\Columns\TextColumn::make('cost_price')
                    ->label('التكلفة')
                    ->money('EGP'),

                Tables\Columns\TextColumn::make('fulfillment_status')
                    ->label('حالة التوفير')
                    ->badge()
                    ->formatStateUsing(fn (string $state) => match ($state) {
                        'pending' => 'قيد الانتظار',
                        'awaiting_supplier' => 'بانتظار المورد',
                        'ordered' => 'تم الطلب',
                        'received' => 'تم الاستلام',
                        'ready' => 'جاهز',
                        default => $state,
                    })
                    ->color(fn (string $state): string => match ($state) {
                        'pending' => 'gray',
                        'awaiting_supplier' => 'warning',
                        'ordered' => 'info',
                        'received' => 'primary',
                        'ready' => 'success',
                        default => 'gray',
                    }),
            ])
            ->headerActions([
                Actions\CreateAction::make()->label('إضافة صنف'),
            ])
            ->actions([
                Actions\EditAction::make()->label('تعديل'),
                Actions\DeleteAction::make()->label('حذف'),
            ]);
    }
}
