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:
@@ -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.
|
||||
}
|
||||
};
|
||||
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user