83 lines
2.8 KiB
PHP
83 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use FluxCms\Core\Models\CmsContent;
|
|
use FluxCms\Core\Services\CmsContentService;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
/**
|
|
* Hinterlegt die WhatsApp-Business-Nummer des Stores (Abstimmung 23.09.2026, Nachtrag 18).
|
|
*
|
|
* Der WhatsApp-Button im Terminanfrage-Widget liest `global.contact.whatsapp`. Auf der Vorschau
|
|
* stand dort der Platzhalter „+49 151 00000000“ aus der ersten Einrichtung, danach kurz die
|
|
* falsche Nummer vom 23.09. Der Seeder trägt die echte Nummer ein, wenn das Feld leer ist oder
|
|
* einen dieser beiden Werte enthält; eine im Admin gepflegte andere Nummer bleibt stehen. Fehlt der Eintrag `global.contact` ganz, wird er
|
|
* angelegt. Mehrfaches Ausführen ist unbedenklich.
|
|
*
|
|
* php artisan db:seed --class=WhatsappNumberSeeder
|
|
*/
|
|
class WhatsappNumberSeeder extends Seeder
|
|
{
|
|
/** Business-Nummer laut Marcel (0521-98620100, korrigiert am 24.09.), international geschrieben. */
|
|
public const NUMBER = '+49 521 98620100';
|
|
|
|
/**
|
|
* Werte, die der Seeder ersetzt: der Platzhalter aus der ersten Einrichtung und die am 23.09.
|
|
* versehentlich eingetragene falsche Nummer (Zahlendreher in der Zulieferung).
|
|
*
|
|
* @var array<int, string>
|
|
*/
|
|
private const PLACEHOLDERS = ['+49 151 00000000', '+49 521 98610020'];
|
|
|
|
/** @var array<int, string> */
|
|
private const LOCALES = ['de', 'en'];
|
|
|
|
public function run(): void
|
|
{
|
|
$row = CmsContent::query()->where('group', 'global')->where('key', 'contact')->first();
|
|
|
|
if (! $row) {
|
|
CmsContent::create([
|
|
'group' => 'global',
|
|
'key' => 'contact',
|
|
'type' => 'json',
|
|
'value' => array_fill_keys(self::LOCALES, ['whatsapp' => self::NUMBER]),
|
|
'order' => 0,
|
|
]);
|
|
app(CmsContentService::class)->clearCache('global');
|
|
|
|
$this->command?->info('WhatsApp-Nummer: Eintrag global.contact angelegt.');
|
|
|
|
return;
|
|
}
|
|
|
|
$value = $row->getTranslations('value');
|
|
$changed = 0;
|
|
|
|
foreach (self::LOCALES as $locale) {
|
|
$section = is_array($value[$locale] ?? null) ? $value[$locale] : [];
|
|
$current = trim((string) ($section['whatsapp'] ?? ''));
|
|
|
|
if ($current !== '' && ! in_array($current, self::PLACEHOLDERS, true)) {
|
|
continue;
|
|
}
|
|
|
|
$section['whatsapp'] = self::NUMBER;
|
|
$value[$locale] = $section;
|
|
$changed++;
|
|
}
|
|
|
|
if ($changed === 0) {
|
|
$this->command?->info('WhatsApp-Nummer: bereits gepflegt, nichts geändert.');
|
|
|
|
return;
|
|
}
|
|
|
|
$row->value = $value;
|
|
$row->save();
|
|
app(CmsContentService::class)->clearCache('global');
|
|
|
|
$this->command?->info("WhatsApp-Nummer gesetzt ({$changed} Sprache(n)).");
|
|
}
|
|
}
|