<?php

namespace App\Filament\Resources\Users\Schemas;

use App\Models\RoleTemplate;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Schema;

class UserForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                Grid::make(2)
                    ->schema([
                        Section::make('Thông tin tài khoản')
                            ->columnSpan(1)
                            ->schema([
                                TextInput::make('name')
                                    ->label('Họ tên')
                                    ->required(),
                                TextInput::make('email')
                                    ->label('Email')
                                    ->email()
                                    ->required()
                                    ->unique(ignoreRecord: true),
                            ]),

                        Section::make('Phân quyền')
                            ->columnSpan(1)
                            ->schema([
                                Select::make('role_template_id')
                                    ->label('Nhóm quyền (Mẫu)')
                                    ->relationship('roleTemplate', 'name')
                                    ->searchable()
                                    ->preload()
                                    ->placeholder('Không theo mẫu nào'),

                                TagsInput::make('extra_permissions')
                                    ->label('Thêm quyền (vượt cấp)')
                                    ->placeholder('ví dụ: contracts.export, payments.delete')
                                    ->helperText('Nhập quyền muốn thêm cho user này, bất chấp mẫu nhóm')
                                    ->separator(',')
                                    ->splitKeys([',', 'Enter']),

                                TagsInput::make('excluded_permissions')
                                    ->label('Bớt quyền (hạn chế)')
                                    ->placeholder('ví dụ: contracts.delete')
                                    ->helperText('Nhập quyền muốn tắt cho user này, bất chấp mẫu nhóm')
                                    ->separator(',')
                                    ->splitKeys([',', 'Enter']),
                            ]),
                    ]),
            ]);
    }
}
