Files
fotospiel-app/database/seeders/LegalPagesSeeder.php
2025-10-17 15:00:07 +02:00

84 lines
2.6 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\LegalPage;
use Illuminate\Database\Seeder;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\File;
class LegalPagesSeeder extends Seeder
{
public function run(): void
{
$now = Carbon::now();
// Define the legal pages and their corresponding file patterns
$pages = [
'impressum' => [
'title' => [
'de' => 'Impressum',
'en' => 'Legal Notice',
],
'files' => [
'de' => 'docs/legal/impressum-de.md',
'en' => 'docs/legal/impressum-en.md',
],
],
'datenschutz' => [
'title' => [
'de' => 'Datenschutzerklärung',
'en' => 'Privacy Policy',
],
'files' => [
'de' => 'docs/legal/datenschutz-de.md',
'en' => 'docs/legal/datenschutz-en.md',
],
],
'agb' => [
'title' => [
'de' => 'Allgemeine Geschäftsbedingungen',
'en' => 'Terms and Conditions',
],
'files' => [
'de' => 'docs/legal/agb-de.md',
'en' => 'docs/legal/agb-en.md',
],
],
];
foreach ($pages as $slug => $config) {
$bodyByLocale = [];
foreach ($config['files'] as $locale => $filePath) {
if (File::exists(base_path($filePath))) {
$bodyByLocale[$locale] = File::get(base_path($filePath));
} else {
// Fallback to empty string if file doesn't exist
$bodyByLocale[$locale] = '';
}
}
$this->upsert($slug, $config['title'], $bodyByLocale, $now);
}
}
private function upsert(string $slug, array $titleByLocale, array $bodyByLocale, \DateTimeInterface $effectiveFrom): void
{
$existing = LegalPage::where('slug', $slug)->orderByDesc('version')->first();
$version = $existing ? ($existing->version + 1) : 1;
LegalPage::updateOrCreate(
['slug' => $slug, 'version' => $version],
[
'title' => $titleByLocale,
'body_markdown' => $bodyByLocale,
'locale_fallback' => 'de',
'version' => $version,
'effective_from' => $effectiveFrom,
'is_published' => true,
]
);
}
}