<?php

namespace App\Filament\Tenant\Resources\WorkOrderResource\RelationManagers;

use App\Models\Tenant\Subcontractor;
use App\Models\Tenant\SubcontractJob;
use Filament\Actions;
use Filament\Forms;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;

class SubcontractJobsRelationManager extends RelationManager
{
    protected static string $relationship = 'subcontractJobs';

    protected static ?string $title = 'Lucrări la terți';

    public function form(Schema $schema): Schema
    {
        return $schema->components([
            Forms\Components\Select::make('subcontractor_id')
                ->label('Subcontractor')
                ->options(fn () => Subcontractor::where('is_active', true)->pluck('name', 'id'))
                ->searchable()
                ->columnSpanFull(),
            Forms\Components\Select::make('category')
                ->label('Categorie')
                ->options(array_combine(Subcontractor::SPECIALTIES, Subcontractor::SPECIALTIES))
                ->searchable(),
            Forms\Components\Select::make('status')->options(SubcontractJob::STATUSES)->default('sent')->required(),
            Forms\Components\Textarea::make('description')->label('Descriere')->rows(2)->columnSpanFull(),
            Forms\Components\TextInput::make('cost')->label('Cost (terț)')->numeric()->default(0)->required(),
            Forms\Components\TextInput::make('markup_pct')->label('Markup %')->numeric()->default(0),
            Forms\Components\TextInput::make('client_price')->label('Preț client')->numeric()->default(0)
                ->helperText('Folosit dacă markup = 0.'),
            Forms\Components\DatePicker::make('eta')->label('ETA'),
        ]);
    }

    public function table(Table $table): Table
    {
        return $table
            ->recordTitleAttribute('number')
            ->columns([
                Tables\Columns\TextColumn::make('number')->label('Nr.'),
                Tables\Columns\TextColumn::make('subcontractor.name')->label('Terț')->placeholder('—'),
                Tables\Columns\TextColumn::make('category')->badge()->placeholder('—'),
                Tables\Columns\TextColumn::make('cost')->money('MDL')->alignRight(),
                Tables\Columns\TextColumn::make('client_price')->label('Preț client')->money('MDL')->alignRight(),
                Tables\Columns\TextColumn::make('margin')
                    ->label('Marjă')
                    ->state(fn (SubcontractJob $r) => $r->margin())
                    ->money('MDL')->alignRight()
                    ->color(fn ($s) => (float) $s > 0 ? 'success' : ((float) $s < 0 ? 'danger' : 'gray')),
                Tables\Columns\TextColumn::make('status')
                    ->formatStateUsing(fn ($s) => SubcontractJob::STATUSES[$s] ?? $s)
                    ->badge()
                    ->colors(['warning' => ['sent', 'in_progress'], 'success' => ['done', 'returned'], 'danger' => ['cancelled']]),
            ])
            ->headerActions([Actions\CreateAction::make()])
            ->actions([Actions\EditAction::make(), Actions\DeleteAction::make()]);
    }
}
