<?php
use App\Models\Shop\Customer;
use App\Models\User;
use Relaticle\CustomFields\Data\CustomFieldData;
use Relaticle\CustomFields\Data\CustomFieldSectionData;
use Relaticle\CustomFields\Data\CustomFieldSettingsData;
use Relaticle\CustomFields\Enums\CustomFieldSectionType;
use Relaticle\CustomFields\Enums\CustomFieldWidth;
use Relaticle\CustomFields\Filament\Integration\Migrations\CustomFieldsMigration;
return new class extends CustomFieldsMigration
{
public function up(): void
{
// Link field
$this->migrator->new(
model: Customer::class,
fieldData: new CustomFieldData(
name: 'Company Website',
code: 'company_website',
type: 'link',
section: new CustomFieldSectionData(
name: 'Company Info',
code: 'company_info',
type: CustomFieldSectionType::SECTION,
),
systemDefined: true,
width: CustomFieldWidth::_50,
)
)->create();
// Choice field with options
$this->migrator->new(
model: Customer::class,
fieldData: new CustomFieldData(
name: 'Customer Type',
code: 'customer_type',
type: 'select',
section: new CustomFieldSectionData(
name: 'Company Info',
code: 'company_info',
type: CustomFieldSectionType::SECTION,
),
systemDefined: true,
width: CustomFieldWidth::_50,
)
)
->options([
'individual' => 'Individual',
'small_business' => 'Small Business',
'enterprise' => 'Enterprise'
])
->create();
// Boolean field
$this->migrator->new(
model: Customer::class,
fieldData: new CustomFieldData(
name: 'VIP Customer',
code: 'is_vip',
type: 'toggle',
section: new CustomFieldSectionData(
name: 'Status',
code: 'status',
type: CustomFieldSectionType::SECTION,
),
systemDefined: true,
width: CustomFieldWidth::_25,
settings: new CustomFieldSettingsData(
list_toggleable_hidden: false
)
)
)->create();
}
};