b2in/database/seeders/DisplayVersionSeeder.php
2026-04-10 17:18:17 +02:00

291 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Database\Seeders;
use App\Models\Display;
use App\Models\DisplayVersion;
use App\Models\DisplayVersionItem;
use Illuminate\Database\Seeder;
class DisplayVersionSeeder extends Seeder
{
/**
* Seed display versions, items, and displays with example data.
*/
public function run(): void
{
// ========================================
// 1. Video-Display Version
// ========================================
$videoVersion = DisplayVersion::create([
'name' => 'Schaufenster Video',
'type' => 'video-display',
'settings' => [],
'is_active' => true,
]);
$videos = [
['filename' => 'herbst_2025.mp4', 'title' => 'Herbst Kollektion 2025', 'position' => 25],
['filename' => 'fruehjahr_2025.mp4', 'title' => 'Frühjahr Kollektion 2025', 'position' => 30],
['filename' => 'herbst_2024.mp4', 'title' => 'Herbst Kollektion 2024', 'position' => 25],
['filename' => 'fruehjahr_2024.mp4', 'title' => 'Frühjahr Kollektion 2024', 'position' => 25],
];
foreach ($videos as $i => $video) {
DisplayVersionItem::create([
'display_version_id' => $videoVersion->id,
'item_type' => 'video',
'content' => $video,
'sort_order' => $i,
'is_active' => true,
]);
}
$footers = [
['headline' => 'Beratung & Termin', 'subline' => 'Jetzt Termin vereinbaren.', 'url' => 'https://b2in.de/termin'],
['headline' => 'Neue Kollektion', 'subline' => 'Entdecken Sie die aktuellen Trends.', 'url' => null],
];
foreach ($footers as $i => $footer) {
DisplayVersionItem::create([
'display_version_id' => $videoVersion->id,
'item_type' => 'footer',
'content' => $footer,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 2. B2in Version (Dark)
// ========================================
$b2inDark = DisplayVersion::create([
'name' => 'B2in Immobilien Dark',
'type' => 'b2in',
'settings' => [
'theme' => 'dark',
'footer_name' => 'Marcel Scheibe',
'footer_url' => 'b2in.de',
'transition' => ['type' => 'crossfade', 'duration_ms' => 800],
'default_image_duration' => 10,
'rotation_weights' => ['immobilien' => 70, 'moebel' => 30],
'display_active' => true,
],
'is_active' => true,
]);
$b2inItems = [
[
'category' => 'immobilien',
'media_type' => 'video',
'media_url' => '../assets/334716_medium.mp4',
'headline' => 'Internationale Immobilien — Ihr Einstieg.',
'subline' => 'Beratung, Begleitung und Vermittlung. Persönlich. Transparent.',
'duration_seconds' => 10,
],
[
'category' => 'immobilien',
'media_type' => 'video',
'media_url' => '../assets/48504-454713939_medium.mp4',
'headline' => 'Ihr Zuhause. Weltweit.',
'subline' => 'Von Dubai bis Europa wir finden Ihre Immobilie.',
'duration_seconds' => 10,
],
[
'category' => 'moebel',
'media_type' => 'image',
'media_url' => 'https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1920&h=1080&fit=crop',
'headline' => 'Exklusive Einrichtung — Lokal. Für Sie.',
'subline' => 'Kuratierte Möbelkonzepte von lokalen Fachhändlern.',
'duration_seconds' => 10,
],
];
foreach ($b2inItems as $i => $item) {
DisplayVersionItem::create([
'display_version_id' => $b2inDark->id,
'item_type' => 'media',
'content' => $item,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 3. B2in Version (Light)
// ========================================
$b2inLight = DisplayVersion::create([
'name' => 'B2in Immobilien Light',
'type' => 'b2in',
'settings' => [
'theme' => 'light',
'footer_name' => 'Marcel Scheibe',
'footer_url' => 'b2in.de',
'transition' => ['type' => 'crossfade', 'duration_ms' => 800],
'default_image_duration' => 10,
'rotation_weights' => ['immobilien' => 70, 'moebel' => 30],
'display_active' => true,
],
'is_active' => true,
]);
foreach ($b2inItems as $i => $item) {
DisplayVersionItem::create([
'display_version_id' => $b2inLight->id,
'item_type' => 'media',
'content' => $item,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 4. Offers Version
// ========================================
$offersVersion = DisplayVersion::create([
'name' => 'Angebote Schauraum',
'type' => 'offers',
'settings' => [
'loop' => true,
'transition' => ['type' => 'fade', 'duration' => 600],
],
'is_active' => true,
]);
$slides = [
[
'type' => 'intro',
'duration' => 8000,
'image_url' => '../assets/cabinet-intro.jpg',
'badge_text' => 'Ausstellungsdeals solange verfügbar',
'eyebrow' => 'Heute im Fokus',
'title' => "Kuratiert.\nHochwertig.\nSofort.",
'subline' => '',
'price' => '',
'original_price' => '',
'tag_text' => '',
'bullets' => [],
'disclaimer' => 'Zwischenverkauf vorbehalten',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Kontakt',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_brand_text' => true,
'brand_tagline' => "Planung • Beratung\nLieferung & Montage",
],
[
'type' => 'product-hero',
'duration' => 10000,
'image_url' => '../assets/goya1.jpg',
'badge_text' => 'Einzelstück',
'eyebrow' => 'Hersteller: Sudbrock',
'title' => 'GOYA Sideboard',
'subline' => '',
'price' => '489 €',
'original_price' => 'statt 4.744 €',
'tag_text' => '',
'bullets' => [],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Reservieren',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_brand_text' => false,
'brand_tagline' => '',
],
[
'type' => 'product-details',
'duration' => 12000,
'image_url' => '../assets/goya2.jpg',
'badge_text' => 'Einzelstück',
'eyebrow' => 'Auf einen Blick',
'title' => 'GOYA Sideboard',
'subline' => '',
'price' => '',
'original_price' => '',
'tag_text' => '',
'bullets' => [
'Eingelagertes Einzelstück',
'Abholung in Rheda-Wiedenbrück',
'Lieferung optional',
'Deckel weiß matt (neu)',
],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Reservieren',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_brand_text' => false,
'brand_tagline' => '',
],
[
'type' => 'product-impulse',
'duration' => 10000,
'image_url' => '../assets/tango.jpg',
'badge_text' => 'Ausstellungsstück',
'eyebrow' => 'Nur 1×',
'title' => 'TANDO Spiegel',
'subline' => 'Heute mitnehmen',
'price' => '199 €',
'original_price' => '',
'tag_text' => 'Im Store verfügbar',
'bullets' => [],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Sichern',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_brand_text' => false,
'brand_tagline' => '',
],
];
foreach ($slides as $i => $slide) {
DisplayVersionItem::create([
'display_version_id' => $offersVersion->id,
'item_type' => 'slide',
'content' => $slide,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// Displays
// ========================================
$display1 = Display::create([
'name' => 'Display 1 Eingang',
'location' => 'Schaufenster links',
'is_active' => true,
]);
$display1->versions()->attach([
$videoVersion->id => ['sort_order' => 0],
$b2inDark->id => ['sort_order' => 1],
]);
$display2 = Display::create([
'name' => 'Display 2 Mitte',
'location' => 'Schaufenster Mitte',
'is_active' => true,
]);
$display2->versions()->attach([
$offersVersion->id => ['sort_order' => 0],
]);
$display3 = Display::create([
'name' => 'Display 3 Rechts',
'location' => 'Schaufenster rechts',
'is_active' => true,
]);
$display3->versions()->attach([
$b2inLight->id => ['sort_order' => 0],
$offersVersion->id => ['sort_order' => 1],
$videoVersion->id => ['sort_order' => 2],
]);
$display4 = Display::create([
'name' => 'Display 4 Innen',
'location' => 'Schauraum',
'is_active' => true,
]);
$display4->versions()->attach([
$b2inDark->id => ['sort_order' => 0],
]);
}
}