feat(timetable): factories + ArtistTimetableDevSeeder
Eight factories with named states (Genre, Artist, ArtistContact, Stage, ArtistEngagement, Performance, AdvanceSection, AdvanceSubmission). ArtistTimetableDevSeeder hooked into DevSeeder::seedEchtFeesten after the form-builder showcase. Produces: - 4 stages (Mainstage, Havana, Stairway, Socialite) with prototype-style hex colours - 4 stages × 3 sub-events = 12 stage_days rows - 4 genres (Hardstyle, Techno, Indie, Live band) - 6 master artists, each with one tour-manager ArtistContact - 12 engagements with status mix (1 Draft, 2 Requested, 3 Option, 2 Confirmed, 3 Contracted, 1 Cancelled). Two artists have two engagements each (different sub-events) — exercises D17 multi- engagement-per-artist. - 13 performances, including one parked (stage_id=null = wachtrij) and one B2B pair within 3 minutes on Mainstage Saturday to seed the Session 4 frontend B2B detector. Also fix LogOptions method name across 8 models: dontSubmitEmptyLogs() → dontLogEmptyChanges() (Spatie's actual API; surfaced when DevSeeder ran). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -756,7 +756,7 @@ class DevSeeder extends Seeder
|
||||
|
||||
foreach ($approvedPersons->shuffle() as $person) {
|
||||
$existing = $usedPersonSlots[$person->id] ?? [];
|
||||
$available = $openShifts->filter(fn (Shift $shift) => !in_array($shift->time_slot_id, $existing));
|
||||
$available = $openShifts->filter(fn (Shift $shift) => ! in_array($shift->time_slot_id, $existing));
|
||||
|
||||
if ($available->isEmpty()) {
|
||||
continue;
|
||||
@@ -956,6 +956,15 @@ class DevSeeder extends Seeder
|
||||
FormBuilderDevSeeder::seedEventRegistrationShowcase($this->org, $festival, $this->command);
|
||||
}
|
||||
|
||||
// RFC-TIMETABLE v0.2 — artist + timetable fixture for the
|
||||
// festival (4 stages, 6 artists, 12 engagements, 13 perfs).
|
||||
ArtistTimetableDevSeeder::seedForFestival(
|
||||
$this->org,
|
||||
$festival,
|
||||
[$vrijdag, $zaterdag, $zondag],
|
||||
);
|
||||
$this->command->info(' Artist timetable: 4 stages, 12 stage_days, 6 artists, 12 engagements, 13 performances');
|
||||
|
||||
$this->command->info(' Echt Feesten 2026 complete');
|
||||
});
|
||||
}
|
||||
@@ -1063,7 +1072,7 @@ class DevSeeder extends Seeder
|
||||
'organisation_id' => $this->org->id,
|
||||
'parent_event_id' => $ijsbaan->id,
|
||||
'name' => $wd['name'],
|
||||
'slug' => 'ijsbaan-week-' . ($i + 1),
|
||||
'slug' => 'ijsbaan-week-'.($i + 1),
|
||||
'start_date' => $wd['start'],
|
||||
'end_date' => $wd['end'],
|
||||
'timezone' => 'Europe/Amsterdam',
|
||||
@@ -1192,7 +1201,7 @@ class DevSeeder extends Seeder
|
||||
$this->createCrowdList($ijsbaan, 'IJsbaan Vaste Crew', CrowdListType::INTERNAL, $this->crowdTypes['CREW'], null, false, null, $approvedCrew, $bert);
|
||||
|
||||
$personCount = Person::where('event_id', $ijsbaan->id)->count();
|
||||
$this->command->info(" {$personCount} persons, " . count($allShifts) . ' shifts created');
|
||||
$this->command->info(" {$personCount} persons, ".count($allShifts).' shifts created');
|
||||
|
||||
$formSchema = FormBuilderDevSeeder::seedEventSchema($ijsbaan);
|
||||
$submissions = FormBuilderDevSeeder::seedSubmissionsForEvent($ijsbaan, $formSchema);
|
||||
|
||||
Reference in New Issue
Block a user