b2in/database/seeders/BrandOriginSeeder.php
Kevin Adametz 90aa079cf7 CMS: Standorte an der Marke, Seitenbaum mit Vorschau, Referenzen-Modul
Nachtrag 11: Herkunfts-Sektion liest Ort, Entfernung und Rolle aus der
Markenverwaltung (drei neue Felder an cms_brands, BrandOriginSeeder),
Kartenpositionen im Code, „Marken“ in der Sidebar.

Nachtrag 12: Inhalte-Editor zeigt die Seiten der Website mit ihren
Sektionen in Reihenfolge (config/cms_pages.php, CmsPageTree), Felder in
Klartext, fehlende Sektionen aus der Sprachdatei anlegbar, Vorschau der
echten Seite im iframe mit Sprung zur Sektion; Anker an allen lebenden
Sektionen nachgezogen.

Nachtrag 13: Referenzen als eigenes Modul (CmsReference, Portal-Seite,
/referenzen mit Fallback auf die Markengalerien); Immobilien-Projekte
aus Sidebar und CMS-Übersicht genommen, Route bleibt.

Dazu .gitignore für _b2in_interior_shop/ und docs/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 14:58:45 +00:00

87 lines
3.5 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\CmsBrand;
use Illuminate\Database\Seeder;
/**
* Trägt den Fertigungsort der Kernmarken nach (Nachtrag 11 zu Arbeitsplan 14.09.2026, Punkt 1.3).
*
* Die Herkunfts-Sektion „Aus der Region gefertigt“ liest Ort, Entfernung und Rolle aus der
* Marke. {@see CmsBrandSeeder} bringt dieselben Werte für frische Installationen mit,
* überspringt aber bereits angelegte Marken. Dieser Seeder fasst nur die drei Felder an und
* auch nur bei Marken, deren Fertigungsort noch leer ist – ein im Admin eingetragener Ort
* bleibt stehen. Mehrfaches Ausführen ist unbedenklich.
*
* Entfernungen gerundet, Straße ab Bielefeld Mitte. ⚠️ Rolle CABINET nach Kevins Verständnis
* (Fertigung Köln, Beratung im Store Bielefeld) – von Marcel bestätigen lassen.
*
* php artisan db:seed --class=BrandOriginSeeder
*/
class BrandOriginSeeder extends Seeder
{
/** @var array<string, array{origin_city: array<string, string>, origin_distance: array<string, string>, origin_role: array<string, string>}> */
private const ORIGINS = [
'cabinet' => [
'origin_city' => ['de' => 'Köln', 'en' => 'Cologne'],
'origin_distance' => ['de' => 'rund 200 km', 'en' => 'about 200 km'],
'origin_role' => [
'de' => 'Gefertigt in der Kölner Manufaktur, beraten und geplant im CABINET Store Bielefeld.',
'en' => 'Made in the Cologne manufactory, advised and planned at the CABINET Store Bielefeld.',
],
],
'rotpunkt' => [
'origin_city' => ['de' => 'Bünde', 'en' => 'Bünde'],
'origin_distance' => ['de' => 'rund 30 km', 'en' => 'about 30 km'],
'origin_role' => [
'de' => 'Küchen aus eigener Fertigung in Bünde – geplant bei uns im Küchenstudio.',
'en' => 'Kitchens from their own production in Bünde – planned with us in the kitchen studio.',
],
],
'februe' => [
'origin_city' => ['de' => 'Herford', 'en' => 'Herford'],
'origin_distance' => ['de' => 'rund 20 km', 'en' => 'about 20 km'],
'origin_role' => [
'de' => 'Büro- und Objektmöbel aus eigener Fertigung in Herford.',
'en' => 'Office and contract furniture from their own production in Herford.',
],
],
'tischlerei' => [
'origin_city' => ['de' => 'Rheda-Wiedenbrück', 'en' => 'Rheda-Wiedenbrück'],
'origin_distance' => ['de' => 'rund 35 km', 'en' => 'about 35 km'],
'origin_role' => [
'de' => 'Unsere Werkstatt für Aufbau, Sonderlösungen und Veredelung.',
'en' => 'Our workshop for assembly, custom solutions and finishing.',
],
],
];
public function run(): void
{
$set = 0;
$kept = 0;
foreach (self::ORIGINS as $slug => $origin) {
$brand = CmsBrand::query()->where('slug', $slug)->first();
if (! $brand) {
$this->command?->warn("Marke „{$slug}“ nicht gefunden – übersprungen.");
continue;
}
if (trim((string) $brand->getTranslation('origin_city', 'de', false)) !== '') {
$kept++;
continue;
}
$brand->fill($origin);
$brand->save();
$set++;
}
$this->command?->info("Fertigungsorte gesetzt: {$set}, vorhandene behalten: {$kept}.");
}
}