filter($filters) ->with(['creator', 'workers']) ->orderByDesc('created_at') ->paginate($request->paginate ?? 50); $canCreateRequirementUsers = Role::query()->where('name', '创建需求')->first()->users; $canWorkRequirementUsers = Role::query()->where('name', '执行需求')->first()->users; $paginateParams = $request->paginateParams; return view('requirement.index', compact('canWorkRequirementUsers', 'canCreateRequirementUsers', 'requirements', 'paginateParams')); } public function create(Requirement $requirement) { return view('requirement.create_and_edit', compact('requirement')); } public function store(RequirementRequest $request, Requirement $requirement) { $requirement->fill($request->all()); $requirement->user_id = Auth::id(); $requirement->status = '已发布'; $requirement->save(); return redirect()->route('requirements.index', $requirement->id)->with('success', '需求创建成功!'); } public function show(Requirement $requirement) { $requirement->loadMissing(['creator', 'workers']); $creators = Role::query()->where('name', '创建需求')->first()->users; $workers = Role::query()->where('name', '执行需求')->first()->users; return view('requirement.show', compact('requirement', 'creators', 'workers')); } public function edit(Requirement $requirement) { $requirement->loadMissing(['creator', 'workers']); $creators = Role::query()->where('name', '创建需求')->first()->users; $workers = Role::query()->where('name', '执行需求')->first()->users; return view('requirement.create_and_edit', compact('requirement', 'creators', 'workers')); } public function update(Request $request, Requirement $requirement) { $requirement->update($request->all()); return redirect()->route('requirements.show', $requirement->id)->with('success', '编辑成功'); } public function destroy(Requirement $requirement) { $this->authorize('destroy', $requirement); $requirement->delete(); return redirect()->route('requirements.index', $requirement->id)->with('success', '删除需求成功!'); } public function begin(Requirement $requirement) { $this->authorize('begin', $requirement); $requirement->status = '已开始'; $requirement->began_at = now(); $requirement->save(); return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已开始执行'); } public function finish(Request $request, Requirement $requirement) { $requirement->status = '已完成'; if (count($request->users) > 0) { $attachData = []; foreach ($request->users as $worker) { $attachData[$worker['name']] = ['score' => $worker['score']]; } $requirement->workers()->sync($attachData); } $requirement->finished_at = now(); $requirement->save(); return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已完成'); } }