Files
crewli/api/database/seeders/DevSeeder.php
bert.hausmans 9acb27af3a feat: fase 2 backend — crowd types, persons, sections, shifts, invite flow
- Crowd Types + Persons CRUD (73 tests)
- Festival Sections + Time Slots + Shifts CRUD met assign/claim flow (84 tests)
- Invite Flow + Member Management met InvitationService (109 tests)
- Schema v1.6 migraties volledig uitgevoerd
- DevSeeder bijgewerkt met crowd types voor testorganisatie
2026-04-08 01:34:46 +02:00

104 lines
3.2 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Seeders;
use App\Models\CrowdType;
use App\Models\Organisation;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class DevSeeder extends Seeder
{
public function run(): void
{
$this->call(RoleSeeder::class);
// 1. Super Admin
$admin = User::firstOrCreate(
['email' => 'admin@crewli.test'],
[
'name' => 'Dev Admin',
'password' => Hash::make('password'),
],
);
$admin->assignRole('super_admin');
// Test organisation
$org = Organisation::firstOrCreate(
['slug' => 'test-festival-bv'],
[
'name' => 'Test Festival BV',
'billing_status' => 'active',
'settings' => [],
],
);
// 2. Org Admin
$orgAdmin = User::firstOrCreate(
['email' => 'orgadmin@crewli.test'],
[
'name' => 'Org Admin',
'password' => Hash::make('password'),
],
);
if (!$org->users()->where('user_id', $orgAdmin->id)->exists()) {
$org->users()->attach($orgAdmin, ['role' => 'org_admin']);
}
// Second test organisation (for testing the organisation switcher)
$org2 = Organisation::firstOrCreate(
['slug' => 'zomerfest-nederland'],
[
'name' => 'Zomerfest Nederland',
'billing_status' => 'trial',
'settings' => [],
],
);
// Attach admin and orgAdmin to second org too
if (!$org2->users()->where('user_id', $admin->id)->exists()) {
$org2->users()->attach($admin, ['role' => 'org_admin']);
}
if (!$org2->users()->where('user_id', $orgAdmin->id)->exists()) {
$org2->users()->attach($orgAdmin, ['role' => 'org_member']);
}
// 3. Org Member
$member = User::firstOrCreate(
['email' => 'crew@crewli.test'],
[
'name' => 'Crew Member',
'password' => Hash::make('password'),
],
);
if (!$org->users()->where('user_id', $member->id)->exists()) {
$org->users()->attach($member, ['role' => 'org_member']);
}
// 4. Default Crowd Types for Test Festival BV
$crowdTypes = [
['name' => 'Crew', 'system_type' => 'CREW', 'color' => '#3b82f6'],
['name' => 'Vrijwilliger', 'system_type' => 'VOLUNTEER', 'color' => '#10b981'],
['name' => 'Artiest', 'system_type' => 'ARTIST', 'color' => '#8b5cf6'],
['name' => 'Gast', 'system_type' => 'GUEST', 'color' => '#f59e0b'],
['name' => 'Pers', 'system_type' => 'PRESS', 'color' => '#6366f1'],
];
foreach ($crowdTypes as $ct) {
CrowdType::firstOrCreate(
[
'organisation_id' => $org->id,
'system_type' => $ct['system_type'],
],
[
'name' => $ct['name'],
'color' => $ct['color'],
],
);
}
}
}