exists()) { $this->warn('Legacy migration already executed. Skipping.'); return self::SUCCESS; } $videos = DisplayVideo::orderBy('sort_order')->get(); $footers = DisplayFooterContent::orderBy('sort_order')->get(); if ($videos->isEmpty() && $footers->isEmpty()) { $this->info('No legacy data found. Nothing to migrate.'); return self::SUCCESS; } $version = DisplayVersion::create([ 'name' => 'Video-Display (Legacy)', 'type' => 'video-display', 'settings' => [], 'is_active' => true, ]); $sortOrder = 0; foreach ($videos as $video) { DisplayVersionItem::create([ 'display_version_id' => $version->id, 'item_type' => 'video', 'content' => [ 'filename' => $video->filename, 'title' => $video->title, 'position' => $video->position, ], 'sort_order' => $sortOrder++, 'is_active' => $video->is_active, ]); } $sortOrder = 0; foreach ($footers as $footer) { DisplayVersionItem::create([ 'display_version_id' => $version->id, 'item_type' => 'footer', 'content' => [ 'headline' => $footer->headline, 'subline' => $footer->subline, 'url' => $footer->url, ], 'sort_order' => $sortOrder++, 'is_active' => $footer->is_active, ]); } $display = Display::create([ 'name' => 'Hauptdisplay', 'location' => 'Schaufenster', 'is_active' => true, ]); $display->versions()->attach($version->id, ['sort_order' => 0]); $this->info("Migrated {$videos->count()} videos and {$footers->count()} footer items."); $this->info("Created version: {$version->name} (ID: {$version->id})"); $this->info("Created display: {$display->name} (ID: {$display->id})"); return self::SUCCESS; } }