kindModel = model(CodeKindModel::class); $this->detailModel = model(CodeDetailModel::class); } public function index(int $ckIdx) { $kind = $this->kindModel->find($ckIdx); if ($kind === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } $list = $this->detailModel->getByKind($ckIdx); return view('admin/layout', [ 'title' => '세부코드 관리 — ' . $kind->ck_name . ' (' . $kind->ck_code . ')', 'content' => view('admin/code_detail/index', [ 'kind' => $kind, 'list' => $list, ]), ]); } public function create(int $ckIdx) { $kind = $this->kindModel->find($ckIdx); if ($kind === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } return view('admin/layout', [ 'title' => '세부코드 등록 — ' . $kind->ck_name, 'content' => view('admin/code_detail/create', ['kind' => $kind]), ]); } public function store() { $rules = [ 'cd_ck_idx' => 'required|is_natural_no_zero', 'cd_code' => 'required|max_length[50]', 'cd_name' => 'required|max_length[100]', 'cd_sort' => 'permit_empty|is_natural', ]; if (! $this->validate($rules)) { return redirect()->back()->withInput()->with('errors', $this->validator->getErrors()); } $ckIdx = (int) $this->request->getPost('cd_ck_idx'); $this->detailModel->insert([ 'cd_ck_idx' => $ckIdx, 'cd_code' => $this->request->getPost('cd_code'), 'cd_name' => $this->request->getPost('cd_name'), 'cd_sort' => (int) ($this->request->getPost('cd_sort') ?: 0), 'cd_state' => 1, 'cd_regdate' => date('Y-m-d H:i:s'), ]); return redirect()->to(site_url('admin/code-details/' . $ckIdx))->with('success', '세부코드가 등록되었습니다.'); } public function edit(int $id) { $item = $this->detailModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '세부코드를 찾을 수 없습니다.'); } $kind = $this->kindModel->find($item->cd_ck_idx); return view('admin/layout', [ 'title' => '세부코드 수정 — ' . ($kind->ck_name ?? ''), 'content' => view('admin/code_detail/edit', [ 'item' => $item, 'kind' => $kind, ]), ]); } public function update(int $id) { $item = $this->detailModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '세부코드를 찾을 수 없습니다.'); } $rules = [ 'cd_name' => 'required|max_length[100]', 'cd_sort' => 'permit_empty|is_natural', 'cd_state' => 'required|in_list[0,1]', ]; if (! $this->validate($rules)) { return redirect()->back()->withInput()->with('errors', $this->validator->getErrors()); } $this->detailModel->update($id, [ 'cd_name' => $this->request->getPost('cd_name'), 'cd_sort' => (int) ($this->request->getPost('cd_sort') ?: 0), 'cd_state' => (int) $this->request->getPost('cd_state'), ]); return redirect()->to(site_url('admin/code-details/' . $item->cd_ck_idx))->with('success', '세부코드가 수정되었습니다.'); } public function delete(int $id) { $item = $this->detailModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '세부코드를 찾을 수 없습니다.'); } $ckIdx = $item->cd_ck_idx; $this->detailModel->delete($id); return redirect()->to(site_url('admin/code-details/' . $ckIdx))->with('success', '세부코드가 삭제되었습니다.'); } }