globalMenuService->index($request->all()); }, '글로벌 메뉴 목록 조회'); } /** * 글로벌 메뉴 트리 조회 */ public function tree() { return ApiResponse::handle(function () { return $this->globalMenuService->tree(); }, '글로벌 메뉴 트리 조회'); } /** * 글로벌 메뉴 단건 조회 */ public function show($id) { return ApiResponse::handle(function () use ($id) { $menu = $this->globalMenuService->show((int) $id); if (! $menu) { return ['error' => __('error.menu_not_found'), 'code' => 404]; } return $menu; }, '글로벌 메뉴 상세 조회'); } /** * 글로벌 메뉴 생성 */ public function store(Request $request) { return ApiResponse::handle(function () use ($request) { return $this->globalMenuService->store($request->all()); }, '글로벌 메뉴 생성'); } /** * 글로벌 메뉴 수정 */ public function update(Request $request, $id) { return ApiResponse::handle(function () use ($request, $id) { $menu = $this->globalMenuService->update((int) $id, $request->all()); if (! $menu) { return ['error' => __('error.menu_not_found'), 'code' => 404]; } return $menu; }, '글로벌 메뉴 수정'); } /** * 글로벌 메뉴 삭제 */ public function destroy($id) { return ApiResponse::handle(function () use ($id) { $result = $this->globalMenuService->destroy((int) $id); if (! $result) { return ['error' => __('error.menu_not_found'), 'code' => 404]; } return __('message.deleted'); }, '글로벌 메뉴 삭제'); } /** * 글로벌 메뉴 순서 변경 */ public function reorder(Request $request) { return ApiResponse::handle(function () use ($request) { $items = $request->input('items', []); $this->globalMenuService->reorder($items); return __('message.reordered'); }, '글로벌 메뉴 순서 변경'); } /** * 특정 글로벌 메뉴를 모든 테넌트에 동기화 */ public function syncToTenants($id) { return ApiResponse::handle(function () use ($id) { return $this->globalMenuService->syncToAllTenants((int) $id); }, '모든 테넌트에 메뉴 동기화'); } /** * 글로벌 메뉴 통계 조회 */ public function stats() { return ApiResponse::handle(function () { return $this->globalMenuService->stats(); }, '글로벌 메뉴 통계 조회'); } }