<?php

namespace App\Filament\Resources\TerminalResource\Pages;

use App\Filament\Resources\TerminalResource;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
use Filament\Infolists;
use Filament\Infolists\Infolist;

class ViewTerminal extends ViewRecord
{
    protected static string $resource = TerminalResource::class;

    protected function getHeaderActions(): array
    {
        return [
            Actions\EditAction::make()
                ->label('编辑'),
            Actions\DeleteAction::make()
                ->label('删除'),
        ];
    }

    public function infolist(Infolist $infolist): Infolist
    {
        return $infolist
            ->schema([
                Infolists\Components\Section::make('基本信息')
                    ->schema([
                        Infolists\Components\TextEntry::make('name')
                            ->label('终端名称'),
                        Infolists\Components\TextEntry::make('code')
                            ->label('终端编码')
                            ->copyable(),
                        Infolists\Components\TextEntry::make('ip_address')
                            ->label('IP地址')
                            ->copyable()
                            ->placeholder('未设置'),
                        Infolists\Components\TextEntry::make('station_id')
                            ->label('线站ID')
                            ->placeholder('未绑定'),
                    ])
                    ->columns(2),

                Infolists\Components\Section::make('组态图配置')
                    ->schema([
                        Infolists\Components\TextEntry::make('diagram_url')
                            ->label('组态图URL')
                            ->copyable()
                            ->placeholder('未设置')
                            ->url(fn ($state) => $state)
                            ->openUrlInNewTab(),
                    ]),

                Infolists\Components\Section::make('显示配置')
                    ->schema([
                        Infolists\Components\KeyValueEntry::make('display_config')
                            ->label('显示参数')
                            ->keyLabel('参数名称')
                            ->valueLabel('参数值'),
                    ]),

                Infolists\Components\Section::make('知识库关联')
                    ->schema([
                        Infolists\Components\RepeatableEntry::make('knowledgeBases')
                            ->label('关联的知识库')
                            ->schema([
                                Infolists\Components\TextEntry::make('name')
                                    ->label('知识库名称'),
                                Infolists\Components\TextEntry::make('pivot.priority')
                                    ->label('优先级')
                                    ->badge()
                                    ->color('success'),
                            ])
                            ->columns(2)
                            ->placeholder('未关联任何知识库'),
                    ])
                    ->collapsible(),

                Infolists\Components\Section::make('AI提示词配置')
                    ->schema([
                        Infolists\Components\TextEntry::make('prompt.prompt_template')
                            ->label('提示词模板')
                            ->markdown()
                            ->placeholder('未配置提示词'),
                    ])
                    ->collapsible(),

                Infolists\Components\Section::make('状态信息')
                    ->schema([
                        Infolists\Components\IconEntry::make('is_online')
                            ->label('在线状态')
                            ->boolean()
                            ->trueIcon('heroicon-o-check-circle')
                            ->falseIcon('heroicon-o-x-circle')
                            ->trueColor('success')
                            ->falseColor('danger'),
                        Infolists\Components\TextEntry::make('last_online_at')
                            ->label('最后在线时间')
                            ->dateTime('Y-m-d H:i:s')
                            ->placeholder('从未在线'),
                    ])
                    ->columns(2),

                Infolists\Components\Section::make('同步历史')
                    ->schema([
                        Infolists\Components\RepeatableEntry::make('syncLogs')
                            ->label('同步记录')
                            ->schema([
                                Infolists\Components\TextEntry::make('status')
                                    ->label('状态')
                                    ->badge()
                                    ->formatStateUsing(fn (string $state): string => match ($state) {
                                        'pending' => '待同步',
                                        'syncing' => '同步中',
                                        'synced' => '已同步',
                                        'failed' => '失败',
                                        default => '未知',
                                    })
                                    ->color(fn (string $state): string => match ($state) {
                                        'pending' => 'warning',
                                        'syncing' => 'info',
                                        'synced' => 'success',
                                        'failed' => 'danger',
                                        default => 'gray',
                                    }),
                                Infolists\Components\TextEntry::make('created_at')
                                    ->label('创建时间')
                                    ->dateTime('Y-m-d H:i:s'),
                                Infolists\Components\TextEntry::make('synced_at')
                                    ->label('同步完成时间')
                                    ->dateTime('Y-m-d H:i:s')
                                    ->placeholder('未完成'),
                                Infolists\Components\TextEntry::make('error_message')
                                    ->label('错误信息')
                                    ->placeholder('无')
                                    ->color('danger')
                                    ->columnSpanFull(),
                            ])
                            ->columns(3)
                            ->placeholder('暂无同步记录')
                            ->contained(false),
                    ])
                    ->description('显示最近的配置同步记录，按时间倒序排列')
                    ->collapsible()
                    ->collapsed(),

                Infolists\Components\Section::make('时间信息')
                    ->schema([
                        Infolists\Components\TextEntry::make('created_at')
                            ->label('创建时间')
                            ->dateTime('Y-m-d H:i:s'),
                        Infolists\Components\TextEntry::make('updated_at')
                            ->label('更新时间')
                            ->dateTime('Y-m-d H:i:s'),
                    ])
                    ->columns(2)
                    ->collapsed(),
            ]);
    }
}
