61 lines
1.9 KiB
PHP
61 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
use App\Models\Tenant;
|
|
|
|
class UpdateTenantPublicSlugs extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$tenants = Tenant::whereNull('public_slug')->get();
|
|
|
|
foreach ($tenants as $tenant) {
|
|
$publicSlug = $this->generatePublicSlug($tenant);
|
|
$tenant->public_slug = $publicSlug;
|
|
$tenant->save();
|
|
|
|
echo "Updated {$tenant->name} with public_slug: {$publicSlug}\n";
|
|
}
|
|
}
|
|
|
|
private function generatePublicSlug(Tenant $tenant): string
|
|
{
|
|
// Generiere public_slug basierend auf dem Namen
|
|
$name = strtolower($tenant->name);
|
|
|
|
// Basis-Slug aus dem Namen generieren
|
|
$baseSlug = str_replace([' ', 'ä', 'ö', 'ü', 'ß'], ['-', 'ae', 'oe', 'ue', 'ss'], $name);
|
|
$baseSlug = preg_replace('/[^a-z0-9-]/', '', $baseSlug);
|
|
$baseSlug = preg_replace('/-+/', '-', $baseSlug); // Mehrfache Bindestriche entfernen
|
|
$baseSlug = trim($baseSlug, '-');
|
|
|
|
// Spezielle Mappings falls gewünscht
|
|
if (str_contains($name, 'firma 1')) {
|
|
$baseSlug = 'firma-1';
|
|
} elseif (str_contains($name, 'firma 2')) {
|
|
$baseSlug = 'firma-2';
|
|
} elseif (str_contains($name, 'firma 3')) {
|
|
$baseSlug = 'firma-3';
|
|
}
|
|
|
|
// Stelle sicher, dass public_slug eindeutig ist
|
|
$counter = 1;
|
|
$publicSlug = $baseSlug;
|
|
|
|
while (Tenant::where('public_slug', $publicSlug)
|
|
->where('id', '!=', $tenant->id)
|
|
->exists()) {
|
|
$publicSlug = $baseSlug . '-' . $counter;
|
|
$counter++;
|
|
}
|
|
|
|
return $publicSlug;
|
|
}
|
|
}
|