Refactor menu codes to remove 'onticket' prefix

- Updated route middleware and menu codes across various files to replace 'onticket.adminapp' with 'adminapp'.
- Adjusted API routes for Ticketing, FiestaFutbolInfantil, and Desfile to reflect the new menu structure.
- Modified database migrations to remove the 'onticket' prefix from existing menu codes.
- Updated tests to align with the new menu code structure, ensuring compatibility and correctness.
This commit is contained in:
2026-10-02 10:04:55 -03:00
parent 57ea0024dd
commit 8d2bcba1bf
20 changed files with 270 additions and 98 deletions

View File

@@ -0,0 +1,63 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
public function up(): void
{
DB::transaction(function (): void {
$menus = DB::table('menues')->where('code', 'like', 'onticket.%')->get();
// Create every destination before updating foreign keys, including parents.
foreach ($menus as $menu) {
$data = (array) $menu;
unset($data['id']);
$data['code'] = substr($menu->code, strlen('onticket.'));
if (! DB::table('menues')->where('code', $data['code'])->exists()) {
DB::table('menues')->insert($data);
}
}
foreach ($menus as $menu) {
$code = substr($menu->code, strlen('onticket.'));
DB::table('menues')->where('parent_menu_code', $menu->code)
->update(['parent_menu_code' => $code]);
$this->moveAssignments('tenants_menues', 'menu_code', 'tenant_code', $menu->code, $code);
$this->moveAssignments('roles_menues', 'menu_codigo', 'rol_codigo', $menu->code, $code);
}
DB::table('menues')->whereIn('code', $menus->pluck('code'))->delete();
});
}
private function moveAssignments(
string $table,
string $menuColumn,
string $ownerColumn,
string $sourceCode,
string $targetCode,
): void {
foreach (DB::table($table)->where($menuColumn, $sourceCode)->get() as $assignment) {
$data = (array) $assignment;
unset($data['id']);
$data[$menuColumn] = $targetCode;
DB::table($table)->updateOrInsert([
$ownerColumn => $data[$ownerColumn],
$menuColumn => $targetCode,
], $data);
}
DB::table($table)->where($menuColumn, $sourceCode)->delete();
}
public function down(): void
{
// Keep compatible identifiers: merged assignments cannot be split reliably.
}
};

View File

@@ -53,49 +53,49 @@ class MenuSeeder extends Seeder
'route' => '/scanner/detail/:id',
],
[
'code' => 'onticket.adminapp.event',
'code' => 'adminapp.event',
'label' => 'Eventos',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/event',
],
[
'code' => 'onticket.adminapp.inicio',
'code' => 'adminapp.inicio',
'label' => 'Inicio',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/inicio',
],
[
'code' => 'onticket.adminapp.catalog',
'code' => 'adminapp.catalog',
'label' => 'Catálogo',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/catalog',
],
[
'code' => 'onticket.adminapp.combos',
'code' => 'adminapp.combos',
'label' => 'Combos',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/combos',
],
[
'code' => 'onticket.adminapp.categories',
'code' => 'adminapp.categories',
'label' => 'Categorías',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/categories',
],
[
'code' => 'onticket.adminapp.ventas',
'code' => 'adminapp.ventas',
'label' => 'Ventas',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/ventas',
],
[
'code' => 'onticket.adminapp.staff',
'code' => 'adminapp.staff',
'label' => 'Usuarios',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/staff',
],
[
'code' => 'onticket.adminapp.tickets',
'code' => 'adminapp.tickets',
'label' => 'Tickets',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/tickets',
@@ -107,37 +107,37 @@ class MenuSeeder extends Seeder
'route' => '/admin/ticket-reservations',
],
[
'code' => 'onticket.adminapp.fiesta-futbol-infantil.entradas',
'code' => 'adminapp.fiesta-futbol-infantil.entradas',
'label' => 'Entradas',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/entradas',
],
[
'code' => 'onticket.adminapp.fiesta-futbol-infantil.alojamientos',
'code' => 'adminapp.fiesta-futbol-infantil.alojamientos',
'label' => 'Alojamientos',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/alojamientos',
],
[
'code' => 'onticket.adminapp.fiesta-futbol-infantil.merchandising',
'code' => 'adminapp.fiesta-futbol-infantil.merchandising',
'label' => 'Merchandising',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/merchandising',
],
[
'code' => 'onticket.adminapp.fiesta-futbol-infantil.comida',
'code' => 'adminapp.fiesta-futbol-infantil.comida',
'label' => 'Comida',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/comidas',
],
[
'code' => 'onticket.adminapp.desfile.entradas',
'code' => 'adminapp.desfile.entradas',
'label' => 'Entradas',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/desfile/entradas',
],
[
'code' => 'onticket.adminapp.desfile.reservas',
'code' => 'adminapp.desfile.reservas',
'label' => 'Reserva de Tickets',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/desfile/reservas',
@@ -292,7 +292,7 @@ class MenuSeeder extends Seeder
->delete();
Menu::query()
->where('code', 'like', 'adminapp.%')
->where('code', 'like', 'onticket.adminapp.%')
->delete();
$allRoleMenuCodes = Menu::query()->pluck('code');
@@ -339,30 +339,30 @@ class MenuSeeder extends Seeder
'mutual_smep',
];
$ticketAdminMenuCodes = [
'onticket.adminapp.tickets',
'adminapp.tickets',
];
$fiestaCategoryMenuCodes = [
'onticket.adminapp.fiesta-futbol-infantil.entradas',
'onticket.adminapp.fiesta-futbol-infantil.alojamientos',
'onticket.adminapp.fiesta-futbol-infantil.merchandising',
'onticket.adminapp.fiesta-futbol-infantil.comida',
'adminapp.fiesta-futbol-infantil.entradas',
'adminapp.fiesta-futbol-infantil.alojamientos',
'adminapp.fiesta-futbol-infantil.merchandising',
'adminapp.fiesta-futbol-infantil.comida',
];
$fiestaExcludedAdminMenuCodes = [
'onticket.adminapp.inicio',
'onticket.adminapp.catalog',
'onticket.adminapp.categories',
'onticket.adminapp.combos',
'adminapp.inicio',
'adminapp.catalog',
'adminapp.categories',
'adminapp.combos',
];
$desfileMenuCodes = [
'onticket.adminapp.desfile.entradas',
'onticket.adminapp.desfile.reservas',
'adminapp.desfile.entradas',
'adminapp.desfile.reservas',
];
$shopItAdminMenuCodes = Menu::query()
->where('code', 'like', 'shopit.adminapp.%')
->pluck('code')
->all();
$onTicketAdminMenuCodes = Menu::query()
->where('code', 'like', 'onticket.adminapp.%')
->where('code', 'like', 'adminapp.%')
->pluck('code')
->all();
$onTicketMenuCodes = [