kindModel = model(CodeKindModel::class); } public function index() { $list = $this->kindModel->orderBy('ck_code', 'ASC')->paginate(20); $pager = $this->kindModel->pager; // 세부코드 수 매핑 $detailModel = model(CodeDetailModel::class); $countMap = []; foreach ($list as $row) { $countMap[$row->ck_idx] = $detailModel->where('cd_ck_idx', $row->ck_idx)->countAllResults(false); } return view('admin/layout', [ 'title' => '기본코드 종류 관리', 'content' => view('admin/code_kind/index', [ 'list' => $list, 'countMap' => $countMap, 'pager' => $pager, ]), ]); } public function create() { return view('admin/layout', [ 'title' => '기본코드 종류 등록', 'content' => view('admin/code_kind/create'), ]); } public function store() { $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('admin/code-kinds'))->with('success', '코드 종류가 등록되었습니다.'); } public function edit(int $id) { $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } return view('admin/layout', [ 'title' => '기본코드 종류 수정', 'content' => view('admin/code_kind/edit', ['item' => $item]), ]); } public function update(int $id) { $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/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('admin/code-kinds'))->with('success', '코드 종류가 수정되었습니다.'); } public function delete(int $id) { $item = $this->kindModel->find($id); if ($item === null) { return redirect()->to(site_url('admin/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.'); } // 세부코드가 있으면 삭제 불가 $detailCount = model(CodeDetailModel::class)->where('cd_ck_idx', $id)->countAllResults(); if ($detailCount > 0) { return redirect()->to(site_url('admin/code-kinds')) ->with('error', '세부코드가 ' . $detailCount . '개 존재하여 삭제할 수 없습니다. 먼저 세부코드를 삭제해 주세요.'); } $this->kindModel->delete($id); return redirect()->to(site_url('admin/code-kinds'))->with('success', '코드 종류가 삭제되었습니다.'); } }