RequirementController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Filters\RequirementFilters;
  4. use App\Http\Requests\RequirementRequest;
  5. use App\Requirement;
  6. use App\Role;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Http\Response;
  9. use Illuminate\Support\Facades\Auth;
  10. class RequirementController extends Controller
  11. {
  12. public function index(Request $request, RequirementFilters $filters)
  13. {
  14. $requirements = Requirement::query()->filter($filters)
  15. ->with(['creator', 'workers'])
  16. ->orderByDesc('created_at')
  17. ->paginate($request->paginate ?? 50);
  18. $canCreateRequirementUsers = Role::query()->where('name', '创建需求')->first()->users;
  19. $canWorkRequirementUsers = Role::query()->where('name', '执行需求')->first()->users;
  20. $paginateParams = $request->paginateParams;
  21. return view('requirement.index', compact('canWorkRequirementUsers', 'canCreateRequirementUsers', 'requirements', 'paginateParams'));
  22. }
  23. public function create(Requirement $requirement)
  24. {
  25. return view('requirement.create_and_edit', compact('requirement'));
  26. }
  27. public function store(RequirementRequest $request, Requirement $requirement)
  28. {
  29. $requirement->fill($request->all());
  30. $requirement->user_id = Auth::id();
  31. $requirement->status = '已发布';
  32. $requirement->save();
  33. return redirect()->route('requirements.index', $requirement->id)->with('success', '需求创建成功!');
  34. }
  35. public function show(Requirement $requirement)
  36. {
  37. $requirement->loadMissing(['creator', 'workers']);
  38. $creators = Role::query()->where('name', '创建需求')->first()->users;
  39. $workers = Role::query()->where('name', '执行需求')->first()->users;
  40. return view('requirement.show', compact('requirement', 'creators', 'workers'));
  41. }
  42. public function edit(Requirement $requirement)
  43. {
  44. $requirement->loadMissing(['creator', 'workers']);
  45. $creators = Role::query()->where('name', '创建需求')->first()->users;
  46. $workers = Role::query()->where('name', '执行需求')->first()->users;
  47. return view('requirement.create_and_edit', compact('requirement', 'creators', 'workers'));
  48. }
  49. public function update(Request $request, Requirement $requirement)
  50. {
  51. $requirement->update($request->all());
  52. return redirect()->route('requirements.show', $requirement->id)->with('success', '编辑成功');
  53. }
  54. public function destroy(Requirement $requirement)
  55. {
  56. $this->authorize('destroy', $requirement);
  57. $requirement->delete();
  58. return redirect()->route('requirements.index', $requirement->id)->with('success', '删除需求成功!');
  59. }
  60. public function begin(Requirement $requirement)
  61. {
  62. $this->authorize('begin', $requirement);
  63. $requirement->status = '已开始';
  64. $requirement->began_at = now();
  65. $requirement->save();
  66. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已开始执行');
  67. }
  68. public function finish(Request $request, Requirement $requirement)
  69. {
  70. $requirement->status = '已完成';
  71. if (count($request->users) > 0) {
  72. $attachData = [];
  73. foreach ($request->users as $worker) {
  74. $attachData[$worker['name']] = ['score' => $worker['score']];
  75. }
  76. $requirement->workers()->sync($attachData);
  77. }
  78. $requirement->finished_at = now();
  79. $requirement->save();
  80. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已完成');
  81. }
  82. }