feat(menu): add account menu hierarchy and related tests in MenuSeeder and MenuSeederTest
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
use App\Domains\Menu\Models\Menu;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
$now = now();
|
||||
|
||||
DB::table('menues')->updateOrInsert(
|
||||
['code' => 'account'],
|
||||
[
|
||||
'parent_menu_code' => null,
|
||||
'content_type' => Menu::CONTENT_TYPE_DYNAMIC,
|
||||
'static_content_schema' => null,
|
||||
'route' => '/mi-cuenta',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
]
|
||||
);
|
||||
|
||||
$routes = [
|
||||
'profile' => '/mi-cuenta/datos-personales',
|
||||
'purchases' => '/mi-cuenta/compras',
|
||||
'tickets' => '/mi-cuenta/tickets',
|
||||
];
|
||||
|
||||
foreach ($routes as $code => $route) {
|
||||
DB::table('menues')
|
||||
->where('code', $code)
|
||||
->update([
|
||||
'parent_menu_code' => 'account',
|
||||
'route' => $route,
|
||||
'updated_at' => $now,
|
||||
]);
|
||||
}
|
||||
|
||||
$tenantCodes = DB::table('tenants_menues')
|
||||
->whereIn('menu_code', array_keys($routes))
|
||||
->distinct()
|
||||
->pluck('tenant_code');
|
||||
|
||||
foreach ($tenantCodes as $tenantCode) {
|
||||
$alreadyAssigned = DB::table('tenants_menues')
|
||||
->where('tenant_code', $tenantCode)
|
||||
->where('menu_code', 'account')
|
||||
->exists();
|
||||
|
||||
if ($alreadyAssigned) {
|
||||
continue;
|
||||
}
|
||||
|
||||
DB::table('tenants_menues')->insert([
|
||||
'tenant_code' => $tenantCode,
|
||||
'menu_code' => 'account',
|
||||
'static_content' => null,
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
$now = now();
|
||||
$routes = [
|
||||
'profile' => '/profile',
|
||||
'purchases' => '/purchases',
|
||||
'tickets' => '/tickets',
|
||||
];
|
||||
|
||||
foreach ($routes as $code => $route) {
|
||||
DB::table('menues')
|
||||
->where('code', $code)
|
||||
->update([
|
||||
'parent_menu_code' => null,
|
||||
'route' => $route,
|
||||
'updated_at' => $now,
|
||||
]);
|
||||
}
|
||||
|
||||
DB::table('tenants_menues')->where('menu_code', 'account')->delete();
|
||||
DB::table('menues')->where('code', 'account')->delete();
|
||||
}
|
||||
};
|
||||
@@ -17,9 +17,26 @@ class MenuSeeder extends Seeder
|
||||
['code' => 'index', 'route' => '/'],
|
||||
['code' => 'product.detail', 'route' => '/product/:id'],
|
||||
['code' => 'checkout', 'route' => '/checkout'],
|
||||
['code' => 'profile', 'route' => '/profile'],
|
||||
['code' => 'purchases', 'route' => '/purchases'],
|
||||
['code' => 'tickets', 'route' => '/tickets'],
|
||||
[
|
||||
'code' => 'account',
|
||||
'content_type' => Menu::CONTENT_TYPE_DYNAMIC,
|
||||
'route' => '/mi-cuenta',
|
||||
],
|
||||
[
|
||||
'code' => 'profile',
|
||||
'parent_menu_code' => 'account',
|
||||
'route' => '/mi-cuenta/datos-personales',
|
||||
],
|
||||
[
|
||||
'code' => 'purchases',
|
||||
'parent_menu_code' => 'account',
|
||||
'route' => '/mi-cuenta/compras',
|
||||
],
|
||||
[
|
||||
'code' => 'tickets',
|
||||
'parent_menu_code' => 'account',
|
||||
'route' => '/mi-cuenta/tickets',
|
||||
],
|
||||
[
|
||||
'code' => 'help',
|
||||
'content_type' => Menu::CONTENT_TYPE_DYNAMIC,
|
||||
|
||||
Reference in New Issue
Block a user