repository = $repository; $this->validator = $validator; } public function index(Request $request) { $this->validate($request, ['key' => 'required']); $categories = $this->repository->where('parent_id', Category::query()->where('status', ModelStatusEnum::OK)->where('key', $request->get('key'))->value('id'))->orderByDesc('sort')->get(['id', 'title']); return Response::success($categories); } public function store(Request $request) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE)); try { $category = $this->repository->create($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE)))); return Response::success($category); } catch (\Exception $e) { return $this->errorStore($e); } } public function update(Request $request, $id) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); try { $category = $this->repository->update($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))), $id); return Response::success($category); } catch (\Exception $e) { $this->errorStore($e); } } public function destroy($id) { try { $re = $this->repository->where('parent_id', '>', 0)->where('id', $id)->delete(); if ($re) { return Response::success(null, T('successfully delete.')); } return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } public function tree() { $departments = $this->repository->orderByDesc('sort')->get()->append('parent_name')->toArray(); return Response::success(toTree($departments)); } public function lists(Request $request) { if ($id = $request->get('id', false)) { $category = $this->repository->skipPresenter()->where('status', ModelStatusEnum::OK)->where('parent_id', $id)->get(['id', 'name']); } else { $category = $this->repository->skipPresenter()->where('status', ModelStatusEnum::OK)->where('parent_id', 0)->get(['id', 'name']); } return Response::success($category); } }