kindModel = model(CodeKindModel::class); } private function redirectIfCannotManageCodeKindMaster(): ?RedirectResponse { if (! Roles::canManageCodeKindMaster((int) session()->get('mb_level'))) { return redirect()->to(site_url('bag/code-kinds'))->with('error', '코드 종류는 super admin·본부 관리자만 관리할 수 있습니다.'); } return null; } public function create() { if ($r = $this->redirectIfCannotManageCodeKindMaster()) { return $r; } return view('admin/layout', [ 'title' => '기본코드 종류 등록', 'content' => view('admin/code_kind/create'), ]); } public function store() { if ($r = $this->redirectIfCannotManageCodeKindMaster()) { return $r; } $rules = [ 'ck_code' => 'required|max_length[20]|is_unique[code_kind.ck_code]', 'ck_name' => 'required|max_length[100]', ]; if (! $this->validate($rules)) { return redirect()->back()->withInput()->with('errors', $this->validator->getErrors()); } $this->kindModel->insert([ 'ck_code' => $this->request->getPost('ck_code'), 'ck_name' => $this->request->getPost('ck_name'), 'ck_state' => 1, 'ck_regdate' => date('Y-m-d H:i:s'), ]); return redirect()->to(site_url('bag/code-kinds'))->with('success', '코드 종류가 등록되었습니다.'); } public function edit(int $id) { if ($r = $this->redirectIfCannotManageCodeKindMaster()) { return $r; } $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('bag/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } return view('admin/layout', [ 'title' => '기본코드 종류 수정', 'content' => view('admin/code_kind/edit', ['item' => $item]), ]); } public function update(int $id) { if ($r = $this->redirectIfCannotManageCodeKindMaster()) { return $r; } $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('bag/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } $rules = [ 'ck_name' => 'required|max_length[100]', 'ck_state' => 'required|in_list[0,1]', ]; if (! $this->validate($rules)) { return redirect()->back()->withInput()->with('errors', $this->validator->getErrors()); } $this->kindModel->update($id, [ 'ck_name' => $this->request->getPost('ck_name'), 'ck_state' => (int) $this->request->getPost('ck_state'), ]); return redirect()->to(site_url('bag/code-kinds'))->with('success', '코드 종류가 수정되었습니다.'); } public function delete(int $id) { if ($r = $this->redirectIfCannotManageCodeKindMaster()) { return $r; } $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('bag/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } $detailCount = model(CodeDetailModel::class)->where('cd_ck_idx', $id)->countAllResults(); if ($detailCount > 0) { return redirect()->to(site_url('bag/code-kinds')) ->with('error', '세부코드가 ' . $detailCount . '개 존재하여 삭제할 수 없습니다. 먼저 세부코드를 삭제해 주세요.'); } $this->kindModel->delete($id); return redirect()->to(site_url('bag/code-kinds'))->with('success', '코드 종류가 삭제되었습니다.'); } }