mandant-crm/backend/database/seeders/CustomFieldDefinitionSeeder.php
Tim Stollberg f0bb80707a feat(backend): commit uncommitted CustomField, dynamic HistoryType, and Import modules
Mirrors the frontend catch-up in 570f17e: a substantial amount of
finished-but-never-committed backend work had accumulated locally.

- New CustomField module: admin-managed field definitions per client,
  reorderable, typed values stored per client (backing the frontend's
  ClientCustomFieldCard + settings/fields page)
- History entries switch from a hardcoded type enum to a dynamic,
  admin-managed HistoryType module (reorderable, backing
  settings/history-types)
- New Import module: CSV client import (backing settings/import)
- Clients table gains soft deletes (deleted_at)
- Supporting factories, seeders, policies, and feature tests for all
  of the above

All 63 backend tests pass locally before this commit.
2026-07-18 16:34:18 +07:00

39 lines
1.4 KiB
PHP

<?php
namespace Database\Seeders;
use App\Modules\CustomField\Models\CustomFieldDefinition;
use App\Modules\CustomField\Models\CustomFieldType;
use Illuminate\Database\Seeder;
/**
* Registers the base-data custom fields the Mandanten-Import maps onto.
*
* Idempotent (firstOrCreate by key) so it is safe to run against a real
* database — the importer resolves these definitions by key and fails fast
* if they are absent.
*/
class CustomFieldDefinitionSeeder extends Seeder
{
public function run(): void
{
$fields = [
['key' => 'telefonnummer', 'label' => 'Telefon 1', 'type' => CustomFieldType::Text, 'sort_order' => 1],
['key' => 'e_mail', 'label' => 'E-Mail', 'type' => CustomFieldType::Text, 'sort_order' => 2],
['key' => 'ansprechpartner', 'label' => 'Ansprechpartner', 'type' => CustomFieldType::Text, 'sort_order' => 3],
['key' => 'anschrift', 'label' => 'Anschrift', 'type' => CustomFieldType::Textarea, 'sort_order' => 4],
];
foreach ($fields as $field) {
CustomFieldDefinition::firstOrCreate(
['key' => $field['key']],
[
'label' => $field['label'],
'type' => $field['type'],
'is_required' => false,
'sort_order' => $field['sort_order'],
],
);
}
}
}