RequirementController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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,Request $request)
  61. {
  62. $this->authorize('begin', $requirement);
  63. $requirement->status = '开发中';
  64. $requirement->began_at = now();
  65. if (count($request->users) > 0) {
  66. $attachData = [];
  67. foreach ($request->users as $worker) {
  68. $attachData[] = $worker['name'];
  69. }
  70. $requirement->workers()->sync($attachData);
  71. }
  72. $requirement->save();
  73. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已开始执行');
  74. }
  75. public function finish(Request $request, Requirement $requirement)
  76. {
  77. $requirement->status = '待验收';
  78. if (count($request->users) > 0) {
  79. $attachData = [];
  80. foreach ($request->users as $worker) {
  81. $attachData[$worker['name']] = ['score' => $worker['score']];
  82. }
  83. $requirement->workers()->sync($attachData);
  84. }
  85. $requirement->finished_at = now();
  86. $requirement->save();
  87. return redirect()->route('requirements.show', $requirement->id)->with('success', '需求等待验收');
  88. }
  89. public function review(Requirement $requirement,Request $request)
  90. {
  91. //验收通过
  92. if ($request->flag==="1") {
  93. $requirement->status = '验收通过';
  94. }
  95. //验收未通过
  96. if ($request->flag==="0") {
  97. $requirement->status = '验收未通过';
  98. }
  99. $requirement->reviewed_at = now();
  100. $requirement->save();
  101. return redirect()->route('requirements.show', $requirement->id)->with('success', '验收完成');
  102. }
  103. public function againReview(Requirement $requirement,Request $request)
  104. {
  105. $requirement->status = '开发中';
  106. $requirement->finished_at = null;
  107. $requirement->reviewed_at = null;
  108. $requirement->save();
  109. return redirect()->route('requirements.show', $requirement->id)->with('success', '再次申请验收流程完成');
  110. }
  111. }