<?php

namespace App\Filament\Resources\Products\Schemas;

use App\Enums\ProductType;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Placeholder;
use Filament\Schemas\Schema;
use Illuminate\Support\HtmlString;

class ProductForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                Tabs::make('ProductDetails')
                    ->tabs([
                        Tabs\Tab::make('Thông tin chung')
                            ->icon('heroicon-o-information-circle')
                            ->columns(2)
                            ->schema([
                                Select::make('project_id')->label('Dự án')->relationship('project', 'name')->required(),
                                Select::make('product_type')->label('Loại sản phẩm')->options(ProductType::class)->required(),
                                TextInput::make('code')->label('Mã SP')->required(),
                                Select::make('status')
                                    ->label('Trạng thái')
                                    ->options([
                                        'Đang mở bán' => 'Đang mở bán',
                                        'Đã cọc' => 'Đã cọc',
                                        'Đã bán' => 'Đã bán'
                                    ])->required(),
                            ]),
                        Tabs\Tab::make('Tài chính')
                            ->icon('heroicon-o-currency-dollar')
                            ->columns(2)
                            ->schema([
                                TextInput::make('area')->label('Diện tích (m2)')->numeric()->required(),
                                TextInput::make('price_per_unit')->label('Đơn giá')->numeric()->required()->prefix('VND'),
                                TextInput::make('total_price')->label('Tổng giá')->numeric()->required()->prefix('VND'),
                                Section::make('Bổ sung')
                                    ->columns(2)
                                    ->schema([
                                        TextInput::make('qsdd_value')->label('Giá trị QSDĐ')->numeric()->prefix('VND'),
                                        TextInput::make('foundation_temp_value')->label('Giá trị móng (tạm tính)')->numeric()->prefix('VND'),
                                    ])
                            ]),
                        Tabs\Tab::make('Kỹ thuật & Hạ tầng')
                            ->icon('heroicon-o-cog')
                            ->schema([
                                Section::make('Thông số kỹ thuật')
                                    ->columns(3)
                                    ->schema([
                                        TextInput::make('adjacent_road')->label('Đường tiếp giáp'),
                                        TextInput::make('frontage_count')->label('Số mặt tiền')->numeric(),
                                        TextInput::make('max_floors')->label('Số tầng cao')->numeric(),
                                    ]),
                                Section::make('Chi tiết hạ tầng thực tế')
                                    ->description('Trình trạng hạ tầng kỹ thuật thực tế tại lô đất')
                                    ->schema([
                                        Placeholder::make('infra_overview')
                                            ->label('Tổng quan trạng thái (Tự động cập nhật)')
                                            ->content(function ($record) {
                                                if (!$record || !$record->infrastructure_status || !is_array($record->infrastructure_status)) {
                                                    return new HtmlString('<span style="color: #6b7280;">Chưa có dữ liệu hạ tầng</span>');
                                                }
                                                
                                                $html = '<div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; background: #f9fafb; padding: 15px; border-radius: 8px; border: 1px solid #e5e7eb;">';
                                                
                                                foreach ($record->infrastructure_status as $key => $status) {
                                                    $statusLower = mb_strtolower($status);
                                                    $color = '#6b7280'; // Mặc định xám
                                                    $icon = '○';

                                                    if (str_contains($statusLower, 'hoàn thành') || str_contains($statusLower, 'đã bàn giao')) {
                                                        $color = '#16a34a'; // Xanh lá
                                                        $icon = '●';
                                                    } elseif (str_contains($statusLower, 'đang thi công') || str_contains($statusLower, 'đang triển khai')) {
                                                        $color = '#ca8a04'; // Vàng cam
                                                        $icon = '◐';
                                                    }

                                                    $html .= "<div style='display: flex; align-items: center; gap: 8px;'>
                                                                <span style='color: {$color}; font-size: 1.2rem;'>{$icon}</span>
                                                                <div>
                                                                    <div style='font-size: 0.75rem; color: #6b7280; text-transform: uppercase;'>{$key}</div>
                                                                    <div style='font-weight: 600; color: {$color}; font-size: 0.875rem;'>{$status}</div>
                                                                </div>
                                                              </div>";
                                                }
                                                
                                                $html .= '</div>';
                                                return new HtmlString($html);
                                            }),
                                        KeyValue::make('infrastructure_status')
                                            ->label('Chỉnh sửa hạ tầng chi tiết')
                                            ->addActionLabel('Thêm hạng mục hạ tầng')
                                            ->keyLabel('Hạng mục')
                                            ->valueLabel('Trạng thái hiện tại')
                                            ->columnSpanFull(),
                                    ])
                            ]),
                        Tabs\Tab::make('Tiến độ thanh toán')
                            ->icon('heroicon-o-calendar-days')
                            ->schema([
                                \Filament\Forms\Components\Repeater::make('payment_schedule_preview')
                                    ->label('Lịch trình dự kiến / Thực tế')
                                    ->schema([
                                        TextInput::make('installment_no')->label('Đợt')->disabled(),
                                        TextInput::make('type')->label('Loại')->disabled(),
                                        TextInput::make('percentage')->label('%')->disabled(),
                                        TextInput::make('amount')->label('Số tiền (VNĐ)')->numeric()->disabled(),
                                        DatePicker::make('due_date')->label('Ngày đến hạn')->disabled(),
                                    ])
                                    ->columns(5)
                                    ->addable(false)
                                    ->deletable(false)
                                    ->reorderable(false)
                                    ->dehydrated(false)
                            ]),
                    ])->columnSpanFull()
            ]);
    }
}
