Initialize repo and add session changes (2025-09-08)

This commit is contained in:
Auto Commit
2025-09-08 14:03:43 +02:00
commit 44ab0a534b
327 changed files with 40952 additions and 0 deletions

View File

@@ -0,0 +1,244 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
use App\Models\{Emotion, Task};
class EventTasksSeeder extends Seeder
{
public function run(): void
{
// Define 20 themed prompts per emotion (DE/EN)
$catalog = [
'Liebe' => [
['Herzrahmen', 'Formt mit euren Händen ein Herz um das Paar.', 'Heart Frame', 'Make a heart with your hands around the couple.'],
['Erster Blick', 'Fangt den Moment des ersten Blicks ein.', 'First Look', 'Capture the first look moment.'],
['Kuss im Konfetti', 'Kussmoment mit Konfetti oder Blütenregen.', 'Kiss in Confetti', 'A kiss with confetti or petals.'],
['Ringmoment', 'Nahaufnahme von Händen und Ringen.', 'Rings & Hands', 'Closeup of hands and rings.'],
['Schleierwind', 'Der Schleier weht fangt Bewegung ein.', 'Veil in the Wind', 'Catch the veil in motion.'],
['Liebesbrief', 'Lest euch eine kurze Botschaft vor.', 'Love Note', 'Read a short love note.'],
['Umarmung von hinten', 'Eine Person umarmt die andere von hinten.', 'Back Hug', 'Back hug pose.'],
['Sonnenuntergang', 'Silhouette im goldenen Licht.', 'Sunset Silhouette', 'Silhouette in golden light.'],
['Nasenstupser', 'Forehead oder NoseTouch.', 'Forehead Touch', 'Forehead or nose touch.'],
['Händchenhalten', 'Hände greifen sich Fokus auf Gefühl.', 'Holding Hands', 'Hands meeting focus on feeling.'],
['Tanz im Freien', 'Kurzer Tanzschritt unter freiem Himmel.', 'Dance Outside', 'A quick dance step outdoors.'],
['Lächeln mit Augen', '„Smize“ lächelt nur mit den Augen.', 'Smize', 'Smile with your eyes.'],
['Gegensätze ziehen an', 'Stellt eure Unterschiede liebvoll dar.', 'Opposites Attract', 'Show your differences playfully.'],
['Hinter dem Schleier', 'Kuss hinter dem Schleier.', 'Behind the Veil', 'Kiss behind the veil.'],
['Hand aufs Herz', 'Hände auf Herz echter Moment.', 'Hand on Heart', 'Hands on heart genuine moment.'],
['Namen schreiben', 'Schreibt Namen in die Luft (Lichtspur).', 'Name in Light', 'Write names in the air (light trail).'],
['Blick zurück', 'Geht weg und schaut zurück zur Kamera.', 'Look Back', 'Walk away, look back to camera.'],
['Gemeinsames Lachen', 'Bringt euch zum Lachen und klick.', 'Shared Laugh', 'Make each other laugh and snap.'],
['Spiegelmoment', 'Euer Spiegelbild kreativ einbauen.', 'Mirror Moment', 'Use your reflection creatively.'],
['Handkuss', 'Ein klassischer Handkuss.', 'Hand Kiss', 'A classic hand kiss.'],
],
'Freude' => [
['Lachwelle', 'Reihe bildet nacheinander eine Lachwelle.', 'Laugh Wave', 'Create a laugh wave one by one.'],
['HighFiveKette', 'Gebt euch reihum HighFives.', 'HighFive Chain', 'Highfives around the group.'],
['Freudensprung', 'Springt gleichzeitig in die Luft.', 'Jump of Joy', 'Jump together.'],
['Fotobomb', 'Huscht freundlich ins Bild.', 'Photobomb', 'Sneak into the shot (friendly!).'],
['Überraschtes Gesicht', 'Überraschte Mimik Hände hoch!', 'Surprised Face', 'Surprised faces hands up!'],
['SpiegelLacher', 'Spiegelt exakt die Mimik.', 'Mirror Laugh', 'Mirror each others laugh.'],
['Tanzender Eingang', 'Tanzend ins Bild laufen.', 'Dancing Entrance', 'Dance into the frame.'],
['KonfettiGrinsen', 'Konfetti werfen & lachen.', 'Confetti Grin', 'Throw confetti & grin.'],
['Witz erzählen', 'Schneller Witz Klick beim Lachen.', 'Tell a Joke', 'Tell a joke, snap at the laugh.'],
['FreundeHuddle', 'Köpfe zusammen, Grinsen groß.', 'Friends Huddle', 'Heads together, big grin.'],
['BacktoBack', 'Rücken an Rücken posieren.', 'Back to Back', 'Pose backtoback.'],
['VZeichen', 'PeaceZeichen kreativ einsetzen.', 'Peace Sign', 'Use peace sign creatively.'],
['Luftkuss', 'Kuss in die Kamera werfen.', 'Air Kiss', 'Blow a kiss to the camera.'],
['EmojiGesichter', 'Stellt Emojis nach.', 'Emoji Faces', 'Act out your favorite emojis.'],
['MiniChoreo', '3SchrittTanz, dann Foto.', 'Mini Choreo', '3step dance then photo.'],
['HutTausch', 'Accessoires tauschen & posen.', 'Hat Swap', 'Swap props and pose.'],
['Cheers!', 'Gläser/Tassen anstoßen.', 'Cheers!', 'Clink glasses/cups.'],
['Zungenakrobatik', 'Zunge raus Spaßpose.', 'Silly Tongue', 'Tongue out silly pose.'],
['OhyeahPose', 'BegeisterungsPose mit Fäusten.', 'OhYeah Pose', 'Fists up “ohyeah” pose.'],
['Händeschütteln', 'Übertriebenes Händeschütteln.', 'Epic Handshake', 'Overthetop handshake.'],
],
'Rührung' => [
['Berührender Blick', 'Schaut euch sanft in die Augen.', 'Tender Look', 'Gently look into each others eyes.'],
['Freudentränen', 'Ein Taschentuchmoment (authentisch).', 'Happy Tears', 'Capture a tissue moment.'],
['Hände nah', 'Nahaufnahme ineinanderliegender Hände.', 'Hands Close', 'Closeup of intertwined hands.'],
['Dankesumarmung', 'Umarmt jemanden, dem ihr danken wollt.', 'ThankYou Hug', 'Hug someone you want to thank.'],
['Erinnerungsstück', 'Haltet ein Erinnerungsstück in die Kamera.', 'Keepsake', 'Show a meaningful keepsake.'],
['Flüstern', 'Flüstert ein Kompliment ins Ohr.', 'Whisper Compliment', 'Whisper a compliment.'],
['Ruhemoment', 'Schließt kurz die Augen, atmet ein.', 'Quiet Moment', 'Close eyes, breathe in.'],
['Schulterblick', 'Kopf auf Schulter Geborgenheit.', 'Head on Shoulder', 'Head on shoulder warmth.'],
['Verlobungsstory', 'Zeigt „so wars“ mit Gesten.', 'Engagement Story', 'Act out “how it happened”.'],
['Geschenk öffnen', 'Kleines Geschenk öffnen Reaktion.', 'Open a Gift', 'Open a small gift reaction.'],
['Erste Erinnerung', 'Teilt eine kurze erste Erinnerung.', 'First Memory', 'Share a first memory.'],
['Wunsch ans Paar', 'Flüstert einen Wunsch fürs Paar.', 'Wish for Couple', 'Whisper a wish for the couple.'],
['Nahporträt', 'Sehr nahes Porträt sanftes Licht.', 'Close Portrait', 'Very close portrait, soft light.'],
['Schritt für Schritt', 'Langsam aufeinander zugehen.', 'Step by Step', 'Walk slowly towards each other.'],
['Gedankenpose', 'Denkt an etwas Schönes Klick.', 'Thoughtful Pose', 'Think of something lovely click.'],
['Ringkuss', 'Kuss auf die Hand mit Ring.', 'Ring Kiss', 'Kiss the hand with the ring.'],
['Stille Freude', 'Leises Lächeln, geschlossene Augen.', 'Quiet Joy', 'Soft smile, eyes closed.'],
['Vertrauter Halt', 'Arm einhaken, nah zusammen.', 'Linked Arms', 'Link arms, stand close.'],
['„Danke“ zeigen', 'Schreibt „Danke“ mit Händen/Karte.', 'Show “Thank You”', 'Show “Thank You” with hands/card.'],
['Ein Wort', 'Sagt gleichzeitig 1 Wort über den anderen.', 'One Word', 'Say one word about the other.'],
],
'Nostalgie' => [
['Altes Foto nachstellen', 'Stellt ein altes Familienfoto nach.', 'Recreate Old Photo', 'Recreate an old family photo.'],
['Schwarzweiß', 'Tut so, als wäre es 1960 s/w Look.', 'Black & White', 'Pretend its 1960 b/w mood.'],
['Tanz der Eltern', 'Imitiert den Tanz eurer Eltern.', 'Parents Dance', 'Imitate your parents dance.'],
['VintagePose', 'Hände gefaltet, altmodische Pose.', 'Vintage Pose', 'Folded hands, oldschool pose.'],
['Familienerbstück', 'Haltet ein Erbstück in die Kamera.', 'Heirloom', 'Show a family heirloom.'],
['Erstes Treffen', 'Stellt euer erstes Treffen nach.', 'First Meeting', 'Reenact your first meeting.'],
['Album aufschlagen', 'Album/HandyGalerie zeigen.', 'Open Album', 'Show an album/gallery.'],
['Zeitreise', 'Pose wie in eurer Lieblingsdekade.', 'Time Travel', 'Pose from your favorite decade.'],
['Brief an Zukunft', 'Haltet “Brief an uns” in Kamera.', 'Letter to Future', 'Hold “letter to us” to camera.'],
['Requisiten retro', 'RetroAccessoires improvisieren.', 'Retro Props', 'Improvise retro props.'],
['PolaroidLook', 'Haltet einen Rahmen wie Polaroid.', 'Polaroid Frame', 'Pose with a “polaroid” frame.'],
['Kinderfoto', 'Haltet ein Kinderfoto gleiche Pose.', 'Childhood Photo', 'Hold a childhood photo same pose.'],
['Alte Geste', 'Eine frühere Gewohnheit nachstellen.', 'Old Habit', 'Act out an old habit.'],
['Telefon von früher', 'Imitierte Telefongesten von früher.', 'Old Phone', 'Oldschool phone gesture.'],
['Hut & Handschuhe', 'Elegante 20erJahre Geste.', 'Hat & Gloves', 'Elegant 1920s gesture.'],
['NostalgieUmarmung', 'Langsame, lange Umarmung.', 'Nostalgic Hug', 'Slow, long hug.'],
['Erster Tanzschritt', 'Stellt den ersten Tanzschritt nach.', 'First Step', 'Reenact first dance step.'],
['Alte Kamera', 'Tut so, als würdet ihr analog knipsen.', 'Old Camera', 'Pretend to shoot on film.'],
['Kinoplakat', 'Stellt ein altes Filmplakat nach.', 'Movie Poster', 'Recreate a vintage movie poster.'],
['Handschrift', 'Schreibt Vornamen mit schöner Schrift.', 'Handwriting', 'Write names in neat script.'],
],
'Überraschung' => [
['KonfettiBoom', 'Unerwarteter Konfettischwall Klick!', 'Confetti Boom', 'Surprise confetti snap!'],
['Hinter dem Rücken', 'Zeigt etwas hinter dem Rücken vor.', 'Behind the Back', 'Reveal something from behind your back.'],
['Gäste tauchen auf', 'Neue Person springt ins Bild.', 'Popin Guest', 'A guest pops into frame.'],
['GeschenkReveal', 'Kleines Geschenk enthüllen.', 'Gift Reveal', 'Reveal a small gift.'],
['Plötzlicher Tanz', 'Unerwarteter Tanzmove!', 'Sudden Dance', 'Do a surprise dance move.'],
['Hand vor Mund', '„Oh!“Geste mit Augen groß.', 'Oh! Gesture', '“Oh!” gesture, big eyes.'],
['Wechsel der Plätze', 'Springt schnell die Plätze.', 'Switch Places', 'Quickly switch places.'],
['Falsche Richtung', 'Schaut alle woanders hin.', 'Look Away', 'Everyone looks elsewhere.'],
['FlipPose', 'Posenwechsel auf Kommando.', 'Flip Pose', 'Flip pose on cue.'],
['Plötzliches Lachen', 'Lachen aus dem Nichts.', 'Sudden Laugh', 'Burst into laughter.'],
['Versteckspiel', 'Versteckt euch hinter Deko.', 'Hide & Seek', 'Hide behind decor.'],
['Schattenspiel', 'Schatten an der Wand formen.', 'Shadow Play', 'Make shadows on the wall.'],
['SchnipsMoment', 'Schnippt und friert ein.', 'Snap & Freeze', 'Snap fingers and freeze.'],
['Unerwarteter Hut', 'Plötzlich Hut/Schal tauschen.', 'Surprise Hat', 'Swap hats/scarves.'],
['Zaubertrick', 'Kleiner „Magic“Trick.', 'Magic Trick', 'A tiny “magic” trick.'],
['Drehen & Stopp', 'Dreht euch Stopp Klick.', 'Spin & Stop', 'Spin and stop snap.'],
['Enger Zoom', 'Kamera ganz nah ran.', 'Tight Zoom', 'Get very close to the camera.'],
['Falscher Start', 'Tut so, als wärt ihr schon fertig.', 'False Start', 'Pretend you finished already.'],
['MiniSchreck', 'Erschreckt euch spielerisch.', 'Play Scare', 'Play a tiny scare.'],
['Jubelruf', 'Unerwarteter Jubel Arme hoch.', 'Cheer Burst', 'Sudden cheer hands up.'],
],
'Stolz' => [
['Siegerpose', 'Stolze Siegerpose mit Pokalgesten.', 'Victory Pose', 'Proud victory pose.'],
['Daumen hoch', 'Großer Daumen hoch zur Kamera.', 'Thumbs Up', 'Big thumbs up to camera.'],
['„Das haben wir geschafft“', 'Zeigt auf euch und lächelt stolz.', 'We Did It', 'Point at yourselves, proud smile.'],
['Orden anheften', 'Tut so, als würdet ihr Orden heften.', 'Pin a Medal', 'Pretend to pin a medal.'],
['Haltung zeigen', 'Aufrecht stehen, Brust raus.', 'Stand Tall', 'Stand upright, chest out.'],
['Meisterstück', 'Zeigt ein Ergebnis, auf das ihr stolz seid.', 'Masterpiece', 'Show a result youre proud of.'],
['TeamApplaus', 'Applaus füreinander, dann in Kamera.', 'Applaud Each Other', 'Applaud each other, then camera.'],
['Hand aufs Herz', 'Stolzer Blick, Hand aufs Herz.', 'Proud Heart', 'Hand on heart, proud look.'],
['Stehende Welle', 'Alle nacheinander aufstehen Klick.', 'Standing Wave', 'Stand up one by one snap.'],
['Schultern klopfen', 'Klopft euch freundlich auf die Schulter.', 'Pat on Back', 'Pat each other on the back.'],
['Banner hoch', 'Hebt ein Schild „Yeah!“ hoch.', 'Banner Up', 'Hold up a “Yeah!” sign.'],
['Heldenblick', 'Blick in die Ferne, Kinn hoch.', 'Hero Look', 'Look into distance, chin up.'],
['Trophäe improvisiert', 'ImproTrophäe in die Höhe.', 'Impro Trophy', 'Raise an improvised trophy.'],
['Da ist die Kamera', 'Selbstsicher direkt in die Linse.', 'Own the Lens', 'Confidently into the lens.'],
['Spitzenleistung', 'Zeigt die “Nummer Eins”Geste.', 'Number One', 'Show a “number one” gesture.'],
['Aufstellung', 'Stellt euch wie ein Teamfoto auf.', 'LineUp', 'Line up like a team photo.'],
['Partnerpose', 'Zwei nebeneinander stolz.', 'Partner Pose', 'Two side by side proud.'],
['Familienstolz', 'FamilienStolzpose mit Lächeln.', 'Family Pride', 'Family pride pose.'],
['Freundesstolz', 'FreundesStolzpose, Arm in Arm.', 'Friends Pride', 'Arms around pride.'],
['Applaus fürs Paar', 'Applaudiert dem Paar in Kamera.', 'Applause for Couple', 'Applaud the couple to camera.'],
],
'Teamgeist' => [
['Handkreis', 'Hände in der Mitte stapeln Go!', 'Hand Circle', 'Hands stacked in the middle.'],
['CongaLinie', 'CongaSchlange Foto von vorn.', 'Conga Line', 'Conga line shot from front.'],
['Telefonkette', 'Flüstern nacheinander letzter rufts.', 'Whisper Chain', 'Whisper chain last says it.'],
['Namensschrift', 'Formt den Namen des Paars.', 'Name Shape', 'Shape the couples name.'],
['Brückenbau', 'Bildet eine Menschenbrücke.', 'Human Bridge', 'Form a human bridge.'],
['Wimpelzug', 'Zieht imaginäre Wimpel hoch.', 'Pennant Pull', 'Pull up imaginary pennants.'],
['Schulter an Schulter', 'Dicht zusammen Teamblick.', 'Shoulder to Shoulder', 'Shoulder to shoulder.'],
['Wellenlauf', 'Eine Person läuft durch Spalier.', 'Guard of Honor', 'Run through a guard of honor.'],
['Spiegeln zu zweit', 'ZweierTeams spiegeln Posen.', 'Mirror in Pairs', 'Pairs mirror poses.'],
['Huckepack', 'Jemand trägt jemanden sicher!', 'Piggyback', 'Piggyback (safely!).'],
['DoppelCheers', 'Zweier“Cheers!” in Serie.', 'Double Cheers', 'Pairs do a quick cheers.'],
['TimingKlatscher', 'Alle klatschen gleichzeitig.', 'Sync Clap', 'Clap in sync.'],
['Zugseil', 'Tut so, als würdet ihr ein Seil ziehen.', 'Tug the Rope', 'Pretend tug of war.'],
['HandshakeKette', 'Kette aus Handschlägen.', 'Handshake Chain', 'Chain of handshakes.'],
['Formationsfoto', 'Stellt eine Form (Kreis/Herz).', 'Formation', 'Form a circle/heart.'],
['Staffelstab', 'Imitiere StaffelstabÜbergabe.', 'Relay Baton', 'Relay baton handoff.'],
['Teamruf', 'Alle rufen denselben Teamruf.', 'Team Chant', 'Shout a team chant.'],
['WirWelle', '“Wir!”Ruf, Hände hoch.', 'WeWave', 'Shout “We!” hands up.'],
['Gassenlauf', 'Gasse bilden jemand läuft durch.', 'Lane Run', 'Form a lane someone runs.'],
['Schulterreihe', 'Schultern fassen, Reihe bilden.', 'Linked Row', 'Link shoulders, form a row.'],
],
'Besinnlichkeit' => [
['Kerzenlicht', 'Portrait im Kerzenlicht (vorsichtig).', 'Candle Light', 'Portrait by candlelight (careful).'],
['Ruhepause', 'Augen schließen, tief atmen.', 'Quiet Pause', 'Close eyes, breathe deeply.'],
['Hand aufs Herz', 'Innere Ruhe Blick nach innen.', 'Hand on Heart', 'Look inward calm.'],
['Leises Lächeln', 'Ganz sanftes Lächeln.', 'Soft Smile', 'Very gentle smile.'],
['Fensterlicht', 'Seitliches Fensterlicht nutzen.', 'Window Light', 'Use side window light.'],
['Lesemoment', 'Jemand liest leise vor.', 'Reading Moment', 'Someone reads softly.'],
['Gebet/Wunsch', 'Ein stiller Wunsch oder Gebet.', 'Silent Wish', 'A quiet wish or prayer.'],
['DankeGeste', 'Dankbare Geste mit Blick zur Kamera.', 'Grateful Gesture', 'Grateful gesture to camera.'],
['Nahaufnahme Augen', 'Fokus auf die Augen.', 'Eyes CloseUp', 'Focus on the eyes.'],
['Hand in Hand', 'Langsame Bewegung der Hände.', 'Hands Moving', 'Slow hand movement.'],
['Anlehnen', 'Lehnt euch sanft aneinander.', 'Lean Gently', 'Lean gently together.'],
['Still stehen', '30 Sekunden ganz ruhig stehen.', 'Stand Still', 'Stand very still.'],
['Licht & Schatten', 'Sanftes Spiel aus Licht/Schatten.', 'Light & Shadow', 'Soft light/shadow play.'],
['Aufrichtigkeit', 'Direkter, ruhiger Blick.', 'Sincere Look', 'Direct, calm look.'],
['Hauch von Lächeln', 'Nur ein Hauch subtil.', 'Hint of Smile', 'Just a hint subtle.'],
['Hände im Schoß', 'Entspannte Hände im Schoß.', 'Hands in Lap', 'Hands resting in lap.'],
['Stiller Kreis', 'Kleiner Kreis, Köpfe zusammen.', 'Quiet Circle', 'Small circle, heads together.'],
['SchulterTouch', 'Kurzer Schulterkontakt, Ruhe.', 'Shoulder Touch', 'Brief shoulder touch.'],
['Atem zählen', 'Zählt 3 Atemzüge gemeinsam.', 'Count Breaths', 'Count 3 breaths together.'],
['Augen schließen', 'Alle Augen schließen Klick.', 'Eyes Closed', 'All close eyes click.'],
],
];
// Difficulty rotation
$difficulties = ['easy','easy','medium','easy','medium','hard'];
foreach (Emotion::all() as $emotion) {
$name = is_array($emotion->name) ? ($emotion->name['de'] ?? array_values($emotion->name)[0]) : (string) $emotion->name;
$list = $catalog[$name] ?? null;
if (!$list) continue; // skip unknown emotion labels
$created = 0; $order = 1;
foreach ($list as $i => $row) {
[$deTitle, $deDesc, $enTitle, $enDesc] = $row;
// Avoid duplicates: check same DE title within this emotion
$exists = Task::where('emotion_id', $emotion->id)
->where('title->de', $deTitle)
->exists();
if ($exists) { $order++; continue; }
Task::create([
'emotion_id' => $emotion->id,
'event_type_id' => null,
'title' => ['de' => $deTitle, 'en' => $enTitle],
'description' => ['de' => $deDesc, 'en' => $enDesc],
'example_text' => ['de' => null, 'en' => null],
'difficulty' => $difficulties[$i % count($difficulties)],
'sort_order' => $order++,
'is_active' => true,
]);
$created++;
}
// Ensure at least 20: if list shorter (shouldnt), cycle again with suffix
$i = 0;
while ($created < 20 && $i < count($list)) {
[$deTitle, $deDesc, $enTitle, $enDesc] = $list[$i];
$suffix = ' #' . ($created + 1);
Task::create([
'emotion_id' => $emotion->id,
'event_type_id' => null,
'title' => ['de' => $deTitle.$suffix, 'en' => $enTitle.$suffix],
'description' => ['de' => $deDesc, 'en' => $enDesc],
'example_text' => ['de' => null, 'en' => null],
'difficulty' => $difficulties[$created % count($difficulties)],
'sort_order' => $order++,
'is_active' => true,
]);
$created++; $i++;
}
}
}
}