feat(event): add slug field to events and update related resources and routes

This commit is contained in:
2026-09-22 10:32:25 -03:00
parent 03bb7709c4
commit 506f8a5176
8 changed files with 54 additions and 5 deletions

View File

@@ -0,0 +1,46 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;
return new class extends Migration
{
public function up(): void
{
Schema::table('events', function (Blueprint $table): void {
$table->string('slug')->nullable()->after('tenant_code');
});
$usedSlugsByTenant = [];
foreach (DB::table('events')->orderBy('tenant_code')->orderBy('id')->get() as $event) {
$baseSlug = Str::slug((string) $event->title);
$baseSlug = $baseSlug !== '' ? mb_substr($baseSlug, 0, 240) : 'evento-'.$event->id;
$slug = $baseSlug;
$suffix = 2;
while (isset($usedSlugsByTenant[$event->tenant_code][$slug])) {
$slug = $baseSlug.'-'.$suffix;
$suffix++;
}
DB::table('events')->where('id', $event->id)->update(['slug' => $slug]);
$usedSlugsByTenant[$event->tenant_code][$slug] = true;
}
Schema::table('events', function (Blueprint $table): void {
$table->unique(['tenant_code', 'slug']);
});
}
public function down(): void
{
Schema::table('events', function (Blueprint $table): void {
$table->dropUnique(['tenant_code', 'slug']);
$table->dropColumn('slug');
});
}
};

View File

@@ -115,6 +115,7 @@ class DesfilePuraTendenciaSeeder extends Seeder
]);
$event = $tenant->events()->create([
'slug' => 'desfile-pura-tendencia',
'title' => 'Desfile Pura Tendencia',
'location' => 'Salón Centro Recreativo Luz y Fuerza',
'date_text' => '16 de Octubre 2026',

View File

@@ -26,7 +26,7 @@ class MenuSeeder extends Seeder
[
'code' => 'event.detail',
'label' => 'Detalle de evento',
'route' => '/evento/:id',
'route' => '/evento/:slug',
],
[
'code' => 'product.category',