RequirementController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. use Illuminate\Support\Facades\Gate;
  11. class RequirementController extends Controller
  12. {
  13. public function index(Request $request, RequirementFilters $filters)
  14. {
  15. $requirements = Requirement::query()->filter($filters)
  16. ->with(['creator', 'workers'])
  17. ->orderByDesc('created_at')
  18. ->paginate($request->paginate ?? 50);
  19. $canCreateRequirementUsers = Role::query()->where('name', '创建需求')->first()->users;
  20. $canWorkRequirementUsers = Role::query()->where('name', '执行需求')->first()->users;
  21. $paginateParams = $request->paginateParams;
  22. return view('requirement.index', compact('canWorkRequirementUsers', 'canCreateRequirementUsers', 'requirements', 'paginateParams'));
  23. }
  24. public function create(Requirement $requirement)
  25. {
  26. return view('requirement.create_and_edit', compact('requirement'));
  27. }
  28. public function store(RequirementRequest $request, Requirement $requirement)
  29. {
  30. $requirement->fill($request->all());
  31. $requirement->user_id = Auth::id();
  32. $status = null;
  33. if (Gate::allows('需求发布-新建-业务部门新建')) $status ='待审核';
  34. if (Gate::allows('需求发布-新建-直接发布')) $status ='待接收';
  35. $requirement->status = $status;
  36. $requirement->save();
  37. return redirect()->route('requirements.index', $requirement->id)->with('success', '需求创建成功!');
  38. }
  39. public function show(Requirement $requirement)
  40. {
  41. $requirement->loadMissing(['creator', 'workers']);
  42. $creators = Role::query()->where('name', '创建需求')->first()->users;
  43. $workers = Role::query()->where('name', '执行需求')->first()->users;
  44. return view('requirement.show', compact('requirement', 'creators', 'workers'));
  45. }
  46. public function edit(Requirement $requirement)
  47. {
  48. $requirement->loadMissing(['creator', 'workers']);
  49. $creators = Role::query()->where('name', '创建需求')->first()->users;
  50. $workers = Role::query()->where('name', '执行需求')->first()->users;
  51. return view('requirement.create_and_edit', compact('requirement', 'creators', 'workers'));
  52. }
  53. public function update(Request $request, Requirement $requirement)
  54. {
  55. $requirement->update($request->all());
  56. return redirect()->route('requirements.show', $requirement->id)->with('success', '编辑成功');
  57. }
  58. public function destroy(Requirement $requirement)
  59. {
  60. $this->authorize('destroy', $requirement);
  61. $requirement->delete();
  62. return redirect()->route('requirements.index', $requirement->id)->with('success', '删除需求成功!');
  63. }
  64. public function begin(Requirement $requirement,Request $request)
  65. {
  66. $this->authorize('begin', $requirement);
  67. $requirement->status = '开发中';
  68. $requirement->began_at = now();
  69. if (count($request->users) > 0) {
  70. $attachData = [];
  71. foreach ($request->users as $worker) {
  72. $attachData[] = $worker['name'];
  73. }
  74. $requirement->workers()->sync($attachData);
  75. }
  76. $requirement->save();
  77. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已开始执行');
  78. }
  79. public function finish(Request $request, Requirement $requirement)
  80. {
  81. $requirement->status = '待验收';
  82. if (count($request->users) > 0) {
  83. $attachData = [];
  84. foreach ($request->users as $worker) {
  85. $attachData[$worker['name']] = ['score' => $worker['score']];
  86. }
  87. $requirement->workers()->sync($attachData);
  88. }
  89. $requirement->finished_at = now();
  90. $requirement->save();
  91. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求等待验收');
  92. }
  93. public function review(Requirement $requirement,Request $request)
  94. {
  95. //验收通过
  96. if ($request->flag==="1") {
  97. $requirement->status = '验收通过';
  98. }
  99. //验收未通过
  100. if ($request->flag==="0") {
  101. $requirement->status = '验收未通过';
  102. }
  103. $requirement->reviewed_at = now();
  104. $requirement->save();
  105. return redirect()->route('requirements.show', $requirement->id)->with('success', '验收完成');
  106. }
  107. public function againReview(Requirement $requirement,Request $request)
  108. {
  109. $requirement->status = '开发中';
  110. $requirement->finished_at = null;
  111. $requirement->reviewed_at = null;
  112. $requirement->save();
  113. return redirect()->route('requirements.show', $requirement->id)->with('success', '再次申请验收流程完成');
  114. }
  115. public function status(Requirement $requirement,Request $request)
  116. {
  117. $requirement->update($request->all());
  118. return redirect()->route('requirements.show', $requirement->id)->with('success', "状态更新为 {$request->status}成功!");
  119. }
  120. }