only(['board_type', 'search']); return $this->boardService->getAccessibleBoards($filters); }, __('message.fetched')); } /** * 게시판 상세 조회 (ID 기반) */ public function show(int $id) { return ApiResponse::handle(function () use ($id) { $board = $this->boardService->getBoardDetail($id); if (! $board) { abort(404, __('error.board.not_found')); } return $board; }, __('message.fetched')); } /** * 테넌트 게시판 생성 */ public function store(BoardStoreRequest $request) { return ApiResponse::handle(function () use ($request) { return $this->boardService->createTenantBoard($request->validated()); }, __('message.created')); } /** * 테넌트 게시판 수정 * - 시스템 게시판은 수정 불가 */ public function update(BoardUpdateRequest $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { $board = $this->boardService->updateTenantBoard($id, $request->validated()); if (! $board) { abort(404, __('error.board.not_found')); } return $board; }, __('message.updated')); } /** * 테넌트 게시판 삭제 * - 시스템 게시판은 삭제 불가 */ public function destroy(int $id) { return ApiResponse::handle(function () use ($id) { $deleted = $this->boardService->deleteTenantBoard($id); if (! $deleted) { abort(404, __('error.board.not_found')); } return ['deleted' => true]; }, __('message.deleted')); } /** * 테넌트 게시판 목록만 조회 */ public function tenantBoards() { return ApiResponse::handle(function () { $filters = request()->only(['board_type', 'search']); return $this->boardService->getTenantBoards($filters); }, __('message.fetched')); } /** * 게시판 상세 조회 (코드 기반) */ public function showByCode(string $code) { return ApiResponse::handle(function () use ($code) { $board = $this->boardService->getBoardByCode($code); if (! $board) { abort(404, __('error.board.not_found')); } return $board; }, __('message.fetched')); } /** * 게시판 필드 목록 조회 */ public function fields(string $code) { return ApiResponse::handle(function () use ($code) { $board = $this->boardService->getBoardByCode($code); if (! $board) { abort(404, __('error.board.not_found')); } return $this->boardService->getBoardFields($board->id); }, __('message.fetched')); } }