feat(menus): assign event routes to OnTicket

This commit is contained in:
2026-09-21 09:16:33 -03:00
parent 79d402e210
commit 8395c7f24d
3 changed files with 157 additions and 2 deletions

View File

@@ -0,0 +1,113 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
private const TENANT_CODE = 'onticket';
private const EVENT_MENUS = [
'event.index' => [
'label' => 'Eventos',
'route' => '/',
],
'event.detail' => [
'label' => 'Detalle de evento',
'route' => '/evento/:id',
],
];
private const EXCLUDED_MENU_CODES = [
'product.detail',
'help',
'help.faq',
'help.contact',
'help.payment-methods',
'help.shipping',
'help.terms-and-conditions',
'adminapp.tickets',
'adminapp.fiesta-futbol-infantil.entradas',
'adminapp.fiesta-futbol-infantil.alojamientos',
'adminapp.fiesta-futbol-infantil.merchandising',
'adminapp.fiesta-futbol-infantil.comida',
'adminapp.desfile.entradas',
];
public function up(): void
{
$now = now();
DB::transaction(function () use ($now): void {
foreach (self::EVENT_MENUS as $code => $menu) {
DB::table('menues')->updateOrInsert(
['code' => $code],
[
'label' => $menu['label'],
'parent_menu_code' => null,
'content_type' => 'dynamic',
'static_content_schema' => null,
'route' => $menu['route'],
'created_at' => $now,
'updated_at' => $now,
],
);
}
DB::table('roles')
->whereIn('codigo', ['admin', 'adminapp', 'user'])
->pluck('codigo')
->each(function (string $roleCode): void {
foreach (array_keys(self::EVENT_MENUS) as $menuCode) {
DB::table('roles_menues')->updateOrInsert([
'rol_codigo' => $roleCode,
'menu_codigo' => $menuCode,
]);
}
});
if (! DB::table('tenants')->where('codigo', self::TENANT_CODE)->exists()) {
return;
}
DB::table('menues')
->whereNotIn('code', self::EXCLUDED_MENU_CODES)
->pluck('code')
->each(function (string $menuCode) use ($now): void {
DB::table('tenants_menues')->updateOrInsert(
[
'tenant_code' => self::TENANT_CODE,
'menu_code' => $menuCode,
],
[
'static_content' => null,
'created_at' => $now,
'updated_at' => $now,
],
);
});
});
}
public function down(): void
{
DB::transaction(function (): void {
$assignedMenuCodes = DB::table('menues')
->whereNotIn('code', self::EXCLUDED_MENU_CODES)
->pluck('code');
DB::table('tenants_menues')
->where('tenant_code', self::TENANT_CODE)
->whereIn('menu_code', $assignedMenuCodes)
->delete();
DB::table('roles_menues')
->whereIn('menu_codigo', array_keys(self::EVENT_MENUS))
->delete();
DB::table('menues')
->whereIn('code', array_keys(self::EVENT_MENUS))
->delete();
});
}
};

View File

@@ -17,6 +17,12 @@ class MenuSeeder extends Seeder
{
$menus = [
['code' => 'index', 'label' => 'Inicio', 'route' => '/'],
['code' => 'event.index', 'label' => 'Eventos', 'route' => '/'],
[
'code' => 'event.detail',
'label' => 'Detalle de evento',
'route' => '/evento/:id',
],
[
'code' => 'product.detail',
'label' => 'Detalle de producto',
@@ -291,6 +297,10 @@ class MenuSeeder extends Seeder
$desfileMenuCodes = [
'adminapp.desfile.entradas',
];
$onTicketMenuCodes = [
'event.index',
'event.detail',
];
$frequentlyAskedQuestions = [
[
'pregunta' => '¿Hay algún límite de compra?',
@@ -358,6 +368,10 @@ class MenuSeeder extends Seeder
$menuCodes = array_diff($menuCodes, $desfileMenuCodes);
}
if ($tenant->codigo !== 'onticket') {
$menuCodes = array_diff($menuCodes, $onTicketMenuCodes);
}
// Usar sync para asociar los menues al tenant
$tenant->menues()->sync($menuCodes);