<?php

declare(strict_types=1);

namespace App\Filament\Resources\Reports\Pages;

use App\Filament\Resources\Reports\ReportResource;
use App\Models\Report;
use Filament\Actions\EditAction;
use Filament\Infolists\Components\RepeatableEntry;
use Filament\Infolists\Components\RepeatableEntry\TableColumn;
use Filament\Infolists\Components\TextEntry;
use Filament\Resources\Pages\ViewRecord;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;

class ViewReport extends ViewRecord
{
    protected static string $resource = ReportResource::class;

    protected function getHeaderActions(): array
    {
        return [
            EditAction::make(),
        ];
    }

    public function mount(int|string $record): void
    {
        parent::mount($record);
        $this->getRecord()->load(['items.product', 'project', 'producer']);
    }

    public function infolist(Schema $schema): Schema
    {
        $record = $this->getRecord();
        return $schema
            ->components([
                Section::make('خلاصه رشد (نمایشی)')
                    ->schema([
                        Grid::make(4)
                            ->schema([
                                TextEntry::make('_current_weight')
                                    ->label('وزن فعلی')
                                    ->getStateUsing(fn () => '—')
                                    ->placeholder('محاسبه در نسخه بعد'),
                                TextEntry::make('_avg_growth')
                                    ->label('میانگین رشد / رشد روزانه')
                                    ->getStateUsing(fn () => '—')
                                    ->placeholder('محاسبه در نسخه بعد'),
                                TextEntry::make('_target')
                                    ->label('هدف نهایی')
                                    ->getStateUsing(fn () => '—')
                                    ->placeholder('محاسبه در نسخه بعد'),
                            ]),
                        TextEntry::make('_chart')
                            ->label('نمودار رشد')
                            ->getStateUsing(fn () => 'نمودار رشد در نسخه بعد نمایش داده می‌شود.')
                            ->placeholder('-'),
                    ])
                    ->columns(1)
                    ->visible(fn () => (int) ($record->type ?? 0) === Report::TYPE_GROWTH),
                Section::make('اطلاعات گزارش')
                    ->schema([
                        TextEntry::make('title')->label('عنوان'),
                        TextEntry::make('project.name')->label('پروژه')->placeholder('-'),
                        TextEntry::make('producer.brand_name')->label('تولیدکننده/خدمات‌دهنده')->placeholder('-'),
                        TextEntry::make('type')
                            ->label('نوع گزارش')
                            ->formatStateUsing(fn ($state) => match ((int) $state) {
                                Report::TYPE_GROWTH => 'گزارش رشد',
                                Report::TYPE_HEALTH => 'گزارش سلامت',
                                Report::TYPE_RATION => 'گزارش جیره',
                                default => 'نامشخص',
                            }),
                        TextEntry::make('report_type')->label('نوع (جزئی)')->placeholder('-'),
                        TextEntry::make('unit')->label('واحد ثبتی')->placeholder('-'),
                        TextEntry::make('date')->label('تاریخ گزارش')->date('Y/m/d'),
                        TextEntry::make('workflow_status')
                            ->label('وضعیت رسیدگی')
                            ->badge()
                            ->formatStateUsing(fn (?string $state) => match ($state ?? '') {
                                Report::WORKFLOW_APPROVED => 'تایید',
                                Report::WORKFLOW_REJECTED => 'رد',
                                Report::WORKFLOW_NEEDS_EDIT => 'ویرایش',
                                default => 'انتظار',
                            }),
                        TextEntry::make('admin_reason')->label('دلیل ادمین')->placeholder('-')->columnSpanFull(),
                        TextEntry::make('desc')->label('یادداشت')->placeholder('-')->columnSpanFull(),
                        TextEntry::make('written_report')->label('گزارش مکتوب')->placeholder('-')->columnSpanFull(),
                    ])
                    ->columns(2),
                Section::make('آیتم‌های گزارش (واحد و مقدار هر محصول)')
                    ->schema([
                        RepeatableEntry::make('items')
                            ->label('')
                            ->table([
                                TableColumn::make('محصول'),
                                TableColumn::make('واحد'),
                                TableColumn::make('کمترین'),
                                TableColumn::make('بیشترین'),
                                TableColumn::make('مقدار'),
                            ])
                            ->schema([
                                TextEntry::make('product.name'),
                                TextEntry::make('unit'),
                                TextEntry::make('min_value'),
                                TextEntry::make('max_value'),
                                TextEntry::make('value'),
                            ]),
                    ])
                    ->visible(fn () => $record->items()->exists()),
            ]);
    }
}
