UserWorkgroupController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Authority;
  4. use App\Sign;
  5. use App\UserWorkgroup;
  6. use App\Warehouse;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Auth;
  9. use Illuminate\Support\Facades\Gate;
  10. use Illuminate\Support\Facades\Validator;
  11. class UserWorkgroupController extends Controller
  12. {
  13. public function index()
  14. {
  15. if(!Gate::allows('工作组-查询')){ return redirect(url('/')); }
  16. $UserWorkgroups=UserWorkgroup::with(['wareHouse','signs'])->orderBy('id',"DESC")->paginate(50);
  17. return view('maintenance.userWorkgroup.index',['userWorkgroups'=>$UserWorkgroups]);
  18. }
  19. public function create()
  20. {
  21. if(!Gate::allows('工作组-录入')){ return redirect(url('/')); }
  22. $warehouses=Warehouse::select('id','name')->get();
  23. return view('maintenance.userWorkgroup.create',['warehouses'=>$warehouses]);
  24. }
  25. public function store(Request $request)
  26. {
  27. if(!Gate::allows('工作组-录入')){ return redirect(url('/')); }
  28. $id=false;
  29. $this->validatorUserWorkgroup($request,$id)->validate();
  30. $UserWorkgroup=new UserWorkgroup($request->input());
  31. $warehouseId=$request->input('warehouse_id');
  32. $UserWorkgroup['warehouse_id']=$warehouseId;
  33. $UserWorkgroup->save();
  34. $remark=$request->input('remark');
  35. $sign=new Sign([
  36. 'signable_type'=>'user_workgroups',
  37. 'signable_id'=>$UserWorkgroup['id'],
  38. 'field'=>'is_need_remark',
  39. 'mark'=>$remark,
  40. ]);
  41. $sign->save();
  42. $this->storeAuthority($UserWorkgroup['name'],$UserWorkgroup->id);
  43. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  44. return redirect('maintenance/userWorkgroup')->with('successTip','新工作组“'.$request->input('name').'”添加成功');
  45. }
  46. private function storeAuthority($name,$id){
  47. Authority::create([
  48. "name"=>$name,
  49. "alias_name"=>$name,
  50. "type"=>"工作组",
  51. "relevance"=>$id,
  52. ]);
  53. }
  54. public function edit($id)
  55. {
  56. if(!Gate::allows('工作组-编辑')){ return redirect(url('/')); }
  57. $userWorkgroup=UserWorkgroup::with('signs')->find($id);
  58. if (!$userWorkgroup)return view('exception.404',['error'=>'工作组不存在!']);
  59. $warehouses=Warehouse::select('id','name')->get();
  60. return view('maintenance.userWorkgroup.edit',['userWorkgroup'=>$userWorkgroup,'warehouses'=>$warehouses]);
  61. }
  62. public function update(Request $request, $id)
  63. {
  64. if(!Gate::allows('工作组-编辑')){ return redirect(url('/')); }
  65. $this->validatorUserWorkgroup($request,$id)->validate();
  66. $data=$request->input();
  67. $userWorkgroup=UserWorkgroup::with('signs')->find($id);
  68. $sign=$userWorkgroup->signs;
  69. $mark=$request->input('remark');
  70. if ($sign){
  71. $sign->mark=$mark;
  72. $sign->update();
  73. app('LogService')->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
  74. }
  75. if(!$sign){
  76. $newSign=new Sign([
  77. 'signable_type'=>'user_workgroups',
  78. 'signable_id'=>$id,
  79. 'field'=>'is_need_remark',
  80. 'mark'=>$mark,
  81. ]);
  82. $newSign->save();
  83. app('LogService')->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
  84. }
  85. $userWorkgroup['warehouse_id']= $data['warehouse_id'];
  86. if ($data['name']!=$userWorkgroup->name){
  87. $authority=Authority::where("name",$userWorkgroup->name)->first();
  88. if ($authority){
  89. $authority->name=$data['name'];
  90. $authority->alias_name=$data['name'];
  91. $authority->update();
  92. }
  93. if (!$authority){
  94. $this->storeAuthority($data['name'],$id);
  95. }
  96. $userWorkgroup->fill($data);
  97. $userWorkgroup->update();
  98. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  99. }else{
  100. $userWorkgroup->update();
  101. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  102. }
  103. return redirect('maintenance/userWorkgroup')->with('successTip','工作组“'.$request->input('name').'”修改成功');
  104. }
  105. public function destroy($id)
  106. {
  107. if(!Gate::allows('工作组-删除')){ return redirect(url('/')); }
  108. $UserWorkgroup=UserWorkgroup::with('signs')->find($id);
  109. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($UserWorkgroup),Auth::user()['id']);
  110. $result=$UserWorkgroup->delete();
  111. return ['success'=>$result];
  112. }
  113. public function validatorUserWorkgroup(Request $request,$id){
  114. if ($id){$name=$id;}
  115. $validator=Validator::make($request->input(),[
  116. 'name'=>['required','max:10',isset($name)?"unique:user_workgroups,name,$name":'unique:user_workgroups,name'],
  117. 'warehouse_id'=>['required'],
  118. 'remark'=>['required'],
  119. ],[
  120. 'required'=>':attribute 为必填项',
  121. 'max'=>':attribute 过长',
  122. 'unique'=>':attribute 已存在',
  123. ],[
  124. 'name'=>'工作组名称',
  125. 'warehouse_id'=>'仓库名称',
  126. 'remark'=>'是否录入备注',
  127. ]);
  128. return $validator;
  129. }
  130. }