2026-06-23 09:55:04 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Database\Seeders;
|
|
|
|
|
|
|
|
|
|
use App\Models\User;
|
|
|
|
|
use App\Modules\Client\Models\Client;
|
2026-07-18 09:34:18 +00:00
|
|
|
use App\Modules\CustomField\Models\CustomFieldDefinition;
|
|
|
|
|
use App\Modules\CustomField\Models\CustomFieldType;
|
2026-06-23 09:55:04 +00:00
|
|
|
use App\Modules\History\Models\HistoryEntry;
|
2026-07-18 09:34:18 +00:00
|
|
|
use App\Modules\History\Models\HistoryType;
|
2026-06-23 09:55:04 +00:00
|
|
|
use Illuminate\Database\Seeder;
|
|
|
|
|
|
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
|
|
|
{
|
|
|
|
|
public function run(): void
|
|
|
|
|
{
|
|
|
|
|
$admin = User::factory()->create([
|
|
|
|
|
'name' => 'Admin',
|
|
|
|
|
'email' => 'admin@example.com',
|
|
|
|
|
'password' => bcrypt('password'),
|
|
|
|
|
'role' => 'admin',
|
|
|
|
|
]);
|
|
|
|
|
|
2026-07-18 09:34:18 +00:00
|
|
|
// Base-data custom fields targeted by the Mandanten-Import (idempotent).
|
|
|
|
|
$this->call(CustomFieldDefinitionSeeder::class);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Configurable Verlauf types. Telefonat & Beratungsgespräch carry a
|
|
|
|
|
// user-entered event date/time; the rest render as the plain name.
|
|
|
|
|
$types = [
|
|
|
|
|
['name' => 'Telefonat', 'requires_datetime' => true, 'sort_order' => 1],
|
|
|
|
|
['name' => 'Beratungsgespräch', 'requires_datetime' => true, 'sort_order' => 2],
|
|
|
|
|
['name' => 'Empfehlung', 'requires_datetime' => false, 'sort_order' => 3],
|
|
|
|
|
['name' => 'Anweisung', 'requires_datetime' => false, 'sort_order' => 4],
|
|
|
|
|
['name' => 'Bemerkung', 'requires_datetime' => false, 'sort_order' => 5],
|
|
|
|
|
['name' => 'Sonstiges', 'requires_datetime' => false, 'sort_order' => 6],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$historyTypes = collect($types)->map(fn (array $t) => HistoryType::create($t));
|
|
|
|
|
|
2026-06-23 09:55:04 +00:00
|
|
|
$clients = Client::factory(10)->create();
|
|
|
|
|
|
2026-07-18 09:34:18 +00:00
|
|
|
$clients->each(function (Client $client) use ($admin, $historyTypes) {
|
|
|
|
|
$historyTypes->random(3)->each(function (HistoryType $type) use ($client, $admin) {
|
|
|
|
|
HistoryEntry::factory()->create([
|
|
|
|
|
'client_id' => $client->id,
|
|
|
|
|
'author_id' => $admin->id,
|
|
|
|
|
'history_entry_type_id' => $type->id,
|
|
|
|
|
'occurred_at' => $type->requires_datetime ? now()->subDays(rand(1, 30)) : null,
|
|
|
|
|
]);
|
|
|
|
|
});
|
2026-06-23 09:55:04 +00:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|