131 lines
3.4 KiB
PHP
131 lines
3.4 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Api\Admin;
|
||
|
|
|
||
|
|
use App\Helpers\ApiResponse;
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use App\Services\GlobalMenuService;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 글로벌 메뉴 관리 컨트롤러 (시스템 관리자용)
|
||
|
|
*/
|
||
|
|
class GlobalMenuController extends Controller
|
||
|
|
{
|
||
|
|
public function __construct(
|
||
|
|
protected GlobalMenuService $globalMenuService
|
||
|
|
) {}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 글로벌 메뉴 목록 조회
|
||
|
|
*/
|
||
|
|
public function index(Request $request)
|
||
|
|
{
|
||
|
|
return ApiResponse::handle(function () use ($request) {
|
||
|
|
return $this->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();
|
||
|
|
}, '글로벌 메뉴 통계 조회');
|
||
|
|
}
|
||
|
|
}
|