<?php

declare(strict_types=1);

namespace App\Filament\Resources\Partners\RelationManagers;

use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;

class ProfitDistributionsRelationManager extends RelationManager
{
    protected static string $relationship = 'profitDistributionLines';

    protected static ?string $title = 'Distribuciones de utilidades';

    protected static ?string $recordTitleAttribute = 'id';

    public function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('distribution.period_start')
                    ->label('Periodo desde')
                    ->date('d/m/Y')
                    ->sortable(),

                TextColumn::make('distribution.period_end')
                    ->label('Periodo hasta')
                    ->date('d/m/Y'),

                TextColumn::make('ownership_percentage')
                    ->label('Participacion')
                    ->suffix('%')
                    ->sortable(),

                TextColumn::make('gross_amount')
                    ->label('Monto bruto')
                    ->money('COP', locale: 'es_CO')
                    ->color('info'),

                TextColumn::make('net_amount')
                    ->label('Monto neto')
                    ->money('COP', locale: 'es_CO')
                    ->color('success'),

                IconColumn::make('is_paid')
                    ->label('Pagado')
                    ->boolean()
                    ->trueIcon('heroicon-o-check-circle')
                    ->falseIcon('heroicon-o-clock')
                    ->trueColor('success')
                    ->falseColor('warning'),

                TextColumn::make('paid_at')
                    ->label('Fecha de pago')
                    ->date('d/m/Y')
                    ->visible(fn ($record) => $record?->is_paid)
                    ->toggleable(isToggledHiddenByDefault: true),

                TextColumn::make('distribution.status')
                    ->label('Estado dist.')
                    ->badge()
                    ->formatStateUsing(fn ($state) => match ($state) {
                        'draft' => 'Borrador',
                        'approved' => 'Aprobada',
                        'distributed' => 'Distribuida',
                        'cancelled' => 'Cancelada',
                        default => $state ?? '-',
                    })
                    ->color(fn ($state) => match ($state) {
                        'draft' => 'gray',
                        'approved' => 'info',
                        'distributed' => 'success',
                        'cancelled' => 'danger',
                        default => 'gray',
                    }),
            ])
            ->defaultSort('created_at', 'desc')
            ->emptyStateHeading('Sin distribuciones')
            ->emptyStateDescription('Aun no se han registrado distribuciones de utilidades para este socio.')
            ->emptyStateIcon('heroicon-o-chart-pie');
    }
}
