repository = $repository; $this->validator = $validator; } /** * 列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function index(Request $request) { $this->isCan(PermissionEnum::controller_task_list); $lists = $this->repository->paginate($request->get('per_page', self::PAGE_NUM)); return Response::success($lists); } /** * 添加 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function store(Request $request) { $this->isCan(PermissionEnum::controller_task_add); $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE)); $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $type = $request->get('type'); switch ($type) { case 1: //一次性 $data['end_date'] = $data['start_date']; break; case 2: $this->validate($request, [ 'end_date' => 'required|date', 'weeks' => 'required|array', ]); break; } try { $data['admin_id'] = login_admin_id(); $model = $this->repository->create($data); return Response::success($model); } catch (\Exception $e) { return $this->error($e); } } /** * 详情 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($id) { $data = $this->repository->find($id); return Response::success($data); } /** * 更新 * @param Request $request * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function update(Request $request, $id) { $this->isCan(PermissionEnum::controller_task_add); $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $model = $this->repository->update($data, $id); return Response::success($model); } catch (\Exception $e) { $this->error($e); } } /** * 删除 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function destroy($id) { $this->isCan(PermissionEnum::controller_task_del); try { $this->repository->skipPresenter()->delete($id); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * 批量删除 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function delete(Request $request) { $this->isCan(PermissionEnum::controller_task_del); try { $this->validate($request, [ 'ids' => 'required|array', ]); $ids = $request->get('ids'); $this->repository->whereIn('id', $ids)->delete(); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * 选项 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function selectOptions(Request $request) { $data = $this->repository->skipPresenter()->all(['name', 'room_no', 'id']); return Response::success($data); } /** * 暂停 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function pause(Request $request) { $this->isCan(PermissionEnum::controller_task_add); $this->validate($request, [ 'id' => 'required|integer', 'type' => 'sometimes|nullable|integer', ]); $status = ModelStatusEnum::PAUSE; if ($request->get('type')) { $status = ModelStatusEnum::OK; } $re = Task::query()->where('id', $request->get('id'))->update(['status' => $status]); if ($re) { return Response::success([]); } return $this->error('操作失败'); } /** * 关联试卷 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function relatedPapers(Request $request) { $this->isCan(PermissionEnum::controller_task_add); $this->validate($request, [ 'id' => 'required|integer', 'paper_id' => 'required|integer', ]); $id = $request->get('id'); $paper_id = $request->get('paper_id'); $task = Task::query()->where('id', $id)->first(); if (!$task) { return $this->error('找不到该任务'); } if ($task->paper_id) { if (PaperResult::query()->where('task_id', $id)->where('status', ModelStatusEnum::OK)->exists()) { return $this->error('该任务已经有巡检工单,暂不允许修改'); } } $task->paper_id = $paper_id; $task->save(); return Response::success([]); } }