feat(menu): enhance Menu and TenantMenu models with parent-child relationships and static content support

This commit is contained in:
2026-07-23 15:54:16 -03:00
parent 018f3f6c13
commit aed818da6e
5 changed files with 170 additions and 9 deletions

View File

@@ -4,14 +4,16 @@ namespace App\Domains\Menu\Controllers;
use App\Domains\Menu\Models\Menu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class MenuController extends Controller
{
public function index(): JsonResponse
{
$menues = Menu::all();
return response()->json($menues);
}
@@ -19,10 +21,19 @@ class MenuController extends Controller
{
$validated = $request->validate([
'code' => 'required|string|unique:menues,code',
'parent_menu_code' => [
'nullable',
'string',
Rule::exists('menues', 'code'),
'different:code',
],
'content_type' => ['sometimes', Rule::in(['static', 'dynamic'])],
'static_content_schema' => 'nullable|array',
'route' => 'required|string',
]);
$menu = Menu::create($validated);
return response()->json($menu, 201);
}
@@ -34,17 +45,27 @@ class MenuController extends Controller
public function update(Request $request, Menu $menu): JsonResponse
{
$validated = $request->validate([
'code' => 'sometimes|required|string|unique:menues,code,' . $menu->id,
'code' => 'sometimes|required|string|unique:menues,code,'.$menu->id,
'parent_menu_code' => [
'nullable',
'string',
Rule::exists('menues', 'code'),
Rule::notIn([$menu->code]),
],
'content_type' => ['sometimes', Rule::in(['static', 'dynamic'])],
'static_content_schema' => 'nullable|array',
'route' => 'sometimes|required|string',
]);
$menu->update($validated);
return response()->json($menu);
}
public function destroy(Menu $menu): JsonResponse
{
$menu->delete();
return response()->json(null, 204);
}
}